0.618算法和基于Armijo准则的线搜索回退法

0.618代码如下:

import math

# 定义函数h(t) = t^3 - 2t + 1

def h(t):

    return t**3 - 2*t + 1

# 0.618算法

def golden_section_search(a, b, epsilon): 

    ratio = 0.618 

    while (b - a) > epsilon: 

        x1 = b - ratio * (b - a) 

        x2 = a + ratio * (b - a) 

        h_x1 = h(x1) 

        h_x2 = h(x2) 

        if h_x1 < h_x2: 

            b = x2 

        else: 

            a = x1 

    return a  # 或者返回 b,因为它们的值非常接近

# t 大于等于 0 的范围内进行搜索

t_min_618 = golden_section_search(0, 3, 0.001)

print("0.618算法找到的最小值:", h(t_min_618))

基于Armijo准则的线搜索回退法代码如下:

import numpy as np 

  def h(t): 

    return t**3 - 2*t + 1 

  def h_derivative(t): 

    return 3*t**2 - 2 

  def armijo_line_search(t_current, direction, alpha, beta, c1): 

    t = t_current 

    step_size = 1.0 

    while True: 

        if h(t + direction * step_size) <= h(t) + alpha * step_size * direction * h_derivative(t): 

            return t + direction * step_size 

        else: 

            step_size *= beta 

        if np.abs(step_size) < 1e-6: 

            break 

    return None 

  def gradient_descent(start, end, alpha, beta, c1, epsilon): 

    t = start 

    while True: 

        if t > end: 

            break 

        direction = -h_derivative(t)  # 负梯度方向 

        next_t = armijo_line_search(t, direction, alpha, beta, c1) 

        if next_t is None or np.abs(h_derivative(next_t)) <= epsilon: 

            return next_t 

        t = next_t 

    return None 

  # 参数设置 

alpha = 0.1  # Armijo准则中的参数alpha 

beta = 0.5  # Armijo准则中的参数beta 

c1 = 1e-4  # 自定义参数,用于控制Armijo条件的满足程度 

epsilon = 1e-6  # 梯度范数的终止条件 

  # 搜索区间为[0,3] 

start = 0 

end = 3 

  # 执行梯度下降算法,求得近似最小值点 

t_min = gradient_descent(start, end, alpha, beta, c1, epsilon) 

print("求得的最小值点为:", t_min) 

print("最小值点的函数值为:", h(t_min))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/240070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mybatis-plus阻止全表更新与删除

BlockAttackInnerInterceptor 是mybatis-plus的一个内置拦截器&#xff0c;用于防止恶意的全表更新或删除操作。当你添加了这个拦截器后&#xff0c;它会检查即将执行的 sql语句&#xff0c;如果有尝试进行全表更新或删除的语句&#xff0c;该拦截器会阻止这些操作。 <!-- m…

似然函数的定义:

似然函数&#xff08;Likelihood function&#xff09;是一个统计学中的概念&#xff0c;用于在给定某些数据的条件下&#xff0c;评估不同参数下模型生成这些数据的概率。在概率论和统计学中&#xff0c;似然函数是固定数据并视参数为变量的函数&#xff0c;而概率函数则是固定…

L1-058:6翻了

“666”是一种网络用语&#xff0c;大概是表示某人很厉害、我们很佩服的意思。最近又衍生出另一个数字“9”&#xff0c;意思是“6翻了”&#xff0c;实在太厉害的意思。如果你以为这就是厉害的最高境界&#xff0c;那就错啦 —— 目前的最高境界是数字“27”&#xff0c;因为这…

微信小程序 文件下载、打开、转发

一.下载文件 wx.downloadFile({url: https://img.haihaina.cn/月度支出表.xls, filePath: wx.env.USER_DATA_PATH / 自定义名字.xlsx,success(res) {console.log(downloadFile,res)const filePath res.tempFilePathwx.openDocument({filePath: filePath,fileType: xlsx,succe…

算法-两数之和

题目描述&#xff1a; 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。…

openGauss学习笔记-168 openGauss 数据库运维-备份与恢复-导入数据-使用gs_restore命令导入数据

文章目录 openGauss学习笔记-168 openGauss 数据库运维-备份与恢复-导入数据-使用gs_restore命令导入数据168.1 操作场景168.2 操作步骤168.3 示例 openGauss学习笔记-168 openGauss 数据库运维-备份与恢复-导入数据-使用gs_restore命令导入数据 168.1 操作场景 gs_restore是…

【Linux】进程周边007之进程控制

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.进程创建 2.进程终止 2.…

【JAVA面试题】什么是代码单元?什么是码点?

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 目录 前言 思路 代码单元&#xff08;Code Unit&#xff09;&#xff1a; 码点&#xff08;Code Point&#xff09;&#xff1a; 作…

java设计模式学习之【责任链模式】

文章目录 引言责任链模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用日志示例代码地址 引言 在现实生活中&#xff0c;常常会遇到这样的场景&#xff1a;一个请求或命令需要经过多个层级的处理。例如&#xff0c;一个行政审批流程可能需要通过多个部门的审…

蚂蚁集团5大开源项目获开放原子 “2023快速成长开源项目”

12月16日&#xff0c;在开放原子开源基金会主办的“2023开放原子开发者大会”上&#xff0c;蚂蚁集团主导开源的图数据库TuGraph、时序数据库CeresDB、隐私计算框架隐语SecretFlow、前端框架OpenSumi、数据域大模型开源框架DB-GPT入选“2023快速成长开源项目”。 &#xff08;图…

在Windows中如何安装XGBoost的C++版本进行模型训练和推理

1 前期软件及脚本准备 下载并安装 Git&#xff1a;从 Git 官方网站&#xff08;https://git-scm.com/downloads&#xff09;下载适用于 Windows 的 Git 安装程序&#xff0c;并按照安装程序的指示进行安装。 下载并安装 CMake&#xff1a;从 CMake 官方网站&#xff08;https:…

opencv入门到精通——图像上的算术运算

目录 目标 图像加法 图像融合 按位运算 目标 学习图像的几种算术运算&#xff0c;例如加法&#xff0c;减法&#xff0c;按位运算等。 您将学习以下功能&#xff1a;cv.add&#xff0c;cv.addWeighted等。 图像加法 您可以通过OpenCV函数cv.add()或仅通过numpy操作res …

第36节: Vue3 事件修饰符

在UniApp中使用Vue3框架时&#xff0c;你可以使用事件修饰符来更方便地处理用户交互事件。以下是一个示例&#xff0c;演示了如何在UniApp中使用Vue3框架使用事件修饰符&#xff1a; <template> <view> <button click.prevent"handleClick">Cli…

负载电容对晶振频率稳定性的影响

在电子系统中&#xff0c;晶振是产生精确频率的关键元件&#xff0c;而负载电容是影响晶振频率稳定性的重要因素之一。本文将深入探讨负载电容对晶振频率稳定性的影响&#xff0c;并分析如何通过合理的选择和设计来减小这种影响。 一、负载电容对晶振频率稳定性的影响 负载电…

End-to-End Object Detection with Transformers(DETR论文解析)

DETR:End-to-End Object Detection with Transformers 摘要引言3 DETR模型3.1 目标检测集合预测损失3.2 DETR体系结构摘要 我们提出了一种将目标检测视为直接集合预测问题的新方法。我们的方法简化了检测流程,有效地消除了许多手工设计的组件,如非极大值抑制程序或锚点生成,…

LangChain入门指南:定义、功能和工作原理

LangChain入门指南&#xff1a;定义、功能和工作原理 引言LangChain是什么&#xff1f;LangChain的核心功能LangChain的工作原理LangChain实际应用案例如何开始使用LangChain 引言 在人工智能的浪潮中&#xff0c;语言模型已成为推动技术革新的重要力量。从简单的文本生成到复…

IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -SpringMVC @PathVariable 注解

IDEA版SSM入门到实战&#xff08;MavenMyBatisSpringSpringMVC) -SpringMVC PathVariable 注解 第一章 PathVariable 注解 1.1 PathVariable注解位置 Target(ElementType.PARAMETER)书写在参数前面 1.2 PathVariable注解作用 获取URL中占位符参数 占位符语法&#xff1a;{}…

oracle恢复分片和非分片备份?

分片备份命令参考&#xff1a;适合大数据库并行备份提高备份速度 对于超大数据库&#xff0c;混合有小文件和大文件表空间&#xff0c;section size 表示分片&#xff0c;大小一般大于32G&#xff0c;可结合通道数量设置最佳值。 run { allocate channel t1 type disk; alloc…

从安全性角度,看“可信数字底座”有何价值

文章目录 每日一句正能量前言概念对比安全技术对比思考与建议 每日一句正能量 不管现在有多么艰辛&#xff0c;我们也要做个生活的舞者。 前言 万向区块链此前提出“可信数字底座”这一概念和技术&#xff0c;即将区块链与物联网、人工智能、隐私计算等数字化技术相融合&#…

XPM_CDC_PULSE

MACRO_GROUP: XPM MACRO_SUBGROUP: XPM_CDC 1、Introduction 此宏将源时钟域中的脉冲同步到目标时钟域。源时钟域中任何大小的脉冲&#xff0c;如果正确启动&#xff0c;将生成单个目标时钟周期大小的脉冲。 为了正确操作&#xff0c;输入数据必须由目标时钟采样两次或…