###############Goldstein方法#########################
建立一个minGS.m的文件,如下:

function [x,minf] = minGS(f,XMAX,sigma1,sigma2,alpha,eps)
%目标函数:f;
%搜索最大值:XMAX;
%可接受系数 1:sigma1;
%可接受系数 2:sigma2;
%增大探索点系数:alpha
%精度:eps;
%目标函数取最小值时的自变量值:x;
%目标函数的最小值:minf
format long;
if nargin == 5 eps = 1.0e-6;
endif sigma1<=0 || sigma1>1 %输入参数检测disp('sigma1 参数不对!'); x = NaN; minf = NaN; return;
else if sigma2 <= sigma1 disp('sigma2 参数不对!'); x = NaN; minf = NaN; return; else if alpha <= 1 disp('alpha 参数不对!'); x = NaN; minf = NaN; return; end end
end df = diff(f); %一阶导数
f0 = subs(f, findsym(f),0);
df0 = subs(df, findsym(df),0);
a = 0;
b = XMAX;
k = 0;
t = (a+b)/2; %初始探测点while 1 ft = subs(f,findsym(f),t); %探测点的函数值f1 = f0 + sigma1*t*df0; %可接受函数值上限if ft <= f1 f2 = f0 + sigma2*t*df0; %可接受函数值下限if ft >= f2 x = t; break; else a = t; %更新极值点所在区间的左端点if b < XMAX t = (a+b)/2; %更新探测点else t = alpha*t; end end else b = t; %更新极值点所在区间的右端点t = (a+b)/2; end k = k+1;
end
minf = subs(f,findsym(f),x);
format short;

运行方法如下:
>> syms t;
>>> f = t^2-2*t+7;
>>> x = minGS(f, 8, 0.4,0.75,2)
然后运行即可.

####################################Wolfe-Powell 法 ########################################
新建一个minWP.m,代码如下:

function [x,minf] = minWP(f,XMAX,sigma1,sigma2,alpha,eps)
%目标函数:f;
%搜索最大值:XMAX;
%可接受系数 1:sigma1;
%可接受系数 2:sigma2;
%增大探索点系数:alpha
%精度:eps;
%目标函数取最小值时的自变量值:x;
%目标函数的最小值:minf
format long;
if nargin == 5 eps = 1.0e-6;
end if sigma1<=0 || sigma1>1 %输入参数检测disp('sigma1 参数不对!'); x = NaN; minf = NaN; return;
else if sigma2 <= sigma1 disp('sigma2 参数不对!'); x = NaN; minf = NaN; return; else if alpha <= 1disp('alpha 参数不对!');x = NaN;minf = NaN;return;endend
enddf = diff(f);
f0 = subs(f, findsym(f),0);
df0 = subs(df, findsym(df),0);
a = 0;
b = XMAX;
k = 0;
t = (a+b)/2; %初始探测点
while 1 ft = subs(f,findsym(f),t); %探测点的函数值f1 = f0 + sigma1*t*df0; %可接受函数值上限if ft <= f1 f2 = sigma2*t*df0; %可接受函数值下限if ft >= f2 x = t; break; else a = t; %更新极值点所在区间的左端点if b < XMAX t = (a+b)/2; %更新探测点else t = alpha*t; endendelseb = t; %更新极值点所在区间的右端点t = (a+b)/2; end k = k+1;
end
minf = subs(f,findsym(f),x);
format short;

运行方法如下:
syms=t;
f=t^2-2*t+7;
x1=minWP(f,8,0.1,0.65,2)

以上代码来自《精通MATLAB最优化计算》(第二版)-龚纯 王正林
这本书是下面这个链接的博主在评论区把百度网盘中的资源中分享给我的,在此表示感谢.
https://blog.csdn.net/u012366767/article/details/81563555

Armijo-Goldstein和wolfe-power的matlab代码实现(转)相关推荐

  1. Armijo条件,Wolfe条件,Goldstein条件

    目录 线搜索 非精确线搜索(Armijo条件,Wolfe条件,Goldstein条件) 强Wolfe条件线搜索算法 线搜索 对于迭代式xk+1=xk+αpkx_{k+1} = x_k +\alpha ...

  2. 最优化方法matlab代码(一) 牛顿类方法

    代码:最优化方法牛顿方法matlab代码-从零开始-专业指导文档类资源-CSDN文库https://download.csdn.net/download/benchuspx/58807913目录 1. ...

  3. LDPC译码原理(公式推导)及其matlab代码实现(超详细)

    目录 博文更改记录 一.背景概述 二.LDPC译码理论 2.1 LDPC码的表示方法 2.1.1LDPC码的矩阵表示 2.1.2 Tanner图表示 2.2符号说明 2.3LDPC译码算法 2.3.1 ...

  4. 【MIMO】两种空间相关信道生成方式的记录(公式+MATLAB代码)

    文章目录 前言 一. Kronecker相关信道模型 二.生成方式1 1.公式 2.MATLAB代码 三.生成方式2-complex correlation 1.公式 2.MATLAB代码 四.生成方 ...

  5. 【WSN】基于COMPOW协议下的网络连通率和覆盖率附matlab代码

    1 简介 COMPOW (COMMON POWER)协议是一种简单的将功率控制与路由协议相结合的解决方案,其基本思想是:所有的传感器节点使用一致的发射功率,在保证网络连通的前提下将功率最小化.COMP ...

  6. The Armijo Goldstein line search scheme

    最近在slep包的基础上改写lasso算法,其优化问题代码块中,提到了The Armijo Goldstein line search scheme.就我目前所查到的资料,做一个分享. line se ...

  7. 数学建模常用方法 | matlab代码 | 二十三种数学建模方法 |2022赛前突击 |模型代码 |比赛比用、简单高效| 分享

    为是赛前突击,所以就不过多的介绍理论知识了,直接上案例,matlab代码 更加详细例题解析: 公众h:露露IT 目录 1.类比法 2.二分法 3.量纲分析法 4.图论法 5.差分法 6.变分法 7.数 ...

  8. 【智能优化算法】基于粒子群结合NSGA2算法求解多目标优化问题附Matlab代码

    1 内容介绍 为解决高度复杂的热电联合经济排放调度问题,本研究提出了一种将非支配排序遗传算法II和多目标粒子群优化算法相结合的协同混合元启发式算法,以经济地运行电力系统并减少环境污染的影响. .在迭代 ...

  9. 【MATLAB代码完整可运行】多目标微电网规划设计、混合可再生能源系统、HRES、Hybrid Renewable Energy System、多目标优化

    目录 一.问题描述 二.问题建模 1.光伏建模 2.风机建模 3.储能系统部分 4.柴油发电机部分 5.HRES的目标函数和仿真过程 三.优化算法的选择 1.数据结构设计和封装 2.目标函数的计算 四 ...

  10. 【WSN通信】基于注水算法实现宽带无线通信资源分配附matlab代码

    1 简介 功率分配技术能有效提高认知网络传输链路的信道容量,而注水算法利用凸优化的思想能实现功率分配最优化.针对认知网络中使用注水算法分配信道功率时未考虑邻近认知信道干扰的情况,对认知网络中邻近认知信 ...

最新文章

  1. 写在分类之首-----to do list!
  2. 虚基类(c++细节篇七)
  3. 家用电器用户行为分析与事件识别代码详解+修改后运行无误的代码
  4. 高帮足球鞋_高帮运动鞋和晕车症可以教给我们有关VR设计的知识
  5. 苹果发布App“一年之最”:快手短视频广东播放最多 山东原创第一
  6. Anagram Groups(字符串)
  7. C++malloc,calloc,realloc,free函数
  8. 多线程的实现方式01 Thread
  9. 码上致富(APP+H5+小程序)淘宝客APP源码导购APP源码代理淘客APP源码
  10. [机器学习导论]——第一课 机器学习概述
  11. 【基础整理】Mapping representation 机器人所用地图种类及相关介绍
  12. 笔记丨利用gitee创建个人博客网站
  13. VUE连接MQTT即时通讯
  14. 设计一个电商平台积分兑换系统的流程和技术选型
  15. 对项目采购管理的分析----合同类型及例题
  16. leetcode题刷250天(84)——454. 四数相加 II(加法分配律)
  17. 理解深度学习中的学习率
  18. 市场对计算机应用技术的需求,计算机应用技术专业人才需求调研分析
  19. Adobe也封杀中国账号了,技术管理者如何做到有备无患
  20. 基于GeoServer的电子地图系统说明

热门文章

  1. 【转】visual studio 2010失败或.net framework 4.0 0xc8000247错误解决
  2. java 面向对象个人理解
  3. 程序员必不可少的firefox插件推荐
  4. arch linux 安装 arm,给树莓派安装 Arch Linux ARM
  5. 微信小程序登录 getUserInfo:fail 登录用户不是该小程序的开发者
  6. async await实例
  7. Weex Project (npm run android)-Error: Error: Command failed
  8. cannot access xxx的解决办法
  9. 欢迎使用Augury[翻译]
  10. 人工机器:机器人模块化和双足机器人被动行走