MATLAB无约束优化(UOM)
MATLAB无约束优化(UOM)
文章目录
- MATLAB无约束优化(UOM)
- 一、基本思想
- 二、基本算法
- 1、最速下降法(共轭梯度法)
- 2、牛顿法
- 3、拟牛顿法
- 3.1 BFGS
- 3.2 DFP
- 三、MATLAB优化
- 1、求解优化问题的主要函数
- 2、优化函数的输入变量
- 3、优化函数的输出变量
- 4、控制参数选项的设置与修改
- 4.1 常用参数举例如下:
- 4.2 使用optimsetoptimsetoptimset函数修改、创建控制参数
- 5、用MATLAB解决无约束优化问题
- 5.1 一元无约束优化问题:minf(x)/maxf(x),vlb≤x≤vubminf(x)/maxf(x), vlb \leq x \leq vubminf(x)/maxf(x),vlb≤x≤vub
- 5.1.1 一般格式
- 5.1.2 实际应用
- 5.2 多元无约束优化问题:minF(x)/maxF(x)minF(x)/maxF(x)minF(x)/maxF(x)
- 5.2.1 一般格式
- 5.2.2 实际应用
- 6、实际建模
- 6.1 提出问题&符号说明
- 6.2 基本假设
- 6.3 建立模型
- 6.4 求解模型
- 6.5 得到结论
- 四、实验作业
一、基本思想
二、基本算法
1、最速下降法(共轭梯度法)
2、牛顿法
3、拟牛顿法
3.1 BFGS
3.2 DFP
三、MATLAB优化
1、求解优化问题的主要函数
类 型 | 模 型 | 基本函数名 |
---|---|---|
一元函数极小 | minF(x)s.t.x1<x<x2min F(x)\\s.t.\ x1<x<x2minF(x)s.t. x1<x<x2 | x=fminbnd(‘F’,x1,x2)x=fminbnd(‘F’,x1,x2)x=fminbnd(‘F’,x1,x2) |
无约束极小 | minF(X)min F(X)minF(X) | X=fminunc(‘F’,X0)X=fminsearch(‘F’,X0)X=fminunc(‘F’,X0) \\ X=fminsearch(‘F’,X0)X=fminunc(‘F’,X0)X=fminsearch(‘F’,X0) |
线性规划 | mincTs.t.AX≤bminc^T \\ s.t.\ AX≤bmincTs.t. AX≤b | X=linprog(c,A,b)X=linprog(c,A,b)X=linprog(c,A,b) |
二次规划 | min12xTHx+cTxs.t.Ax≤bmin\frac{1}{2}xTHx+cTx \\ s.t.\ Ax≤bmin21xTHx+cTxs.t. Ax≤b | X=quadprog(H,c,A,b)X=quadprog(H,c,A,b)X=quadprog(H,c,A,b) |
约束极小(非线性规划) | minF(X)s.t.G(X)≤0min F(X) s.t. G(X)≤0minF(X)s.t.G(X)≤0 | X=fmincon(‘FG’,X0)X=fmincon(‘FG’,X0)X=fmincon(‘FG’,X0) |
达到目标问题 | minrs.t.F(x)−wr≤goalmin r\\s.t.\ F(x)-wr ≤ goalminrs.t. F(x)−wr≤goal | X=fgoalattain(‘F’,x,goal,w)X=fgoalattain(‘F’,x, goal,w)X=fgoalattain(‘F’,x,goal,w) |
极小极大问题 | minxmaxFi(x){Fi(x)}s.t.G(x)≤0min_x max_{F_i(x)}\{F_i(x)\} \\s.t.\ G(x)≤0minxmaxFi(x){Fi(x)}s.t. G(x)≤0 | X=fminimax(‘FG’,x0)X=fminimax(‘FG’,x0)X=fminimax(‘FG’,x0) |
2、优化函数的输入变量
- fff —— 规划中目标函数的线性项的系数向量,有时也用ccc
- funfunfun —— 目标函数的名称
- HHH —— 目标函数中XT×XX^T \times XXT×X(二次项)的系数矩阵
- A,bA,bA,b —— 线性不等式约束AX≤bAX \leq bAX≤b的系数矩阵和右端向量
- $Aeq,beq $ —— 等式线性约束Aeq⋅X=beqAeq \cdot X = beqAeq⋅X=beq的系数矩阵和右端向量
- vlb,vubvlb,vubvlb,vub —— XXX的下限和上限向量:vlb≤X≤vubvlb \leq X \leq vubvlb≤X≤vub
- X0X0X0 —— 迭代初始坐标
- $x1,x2 $ —— 函数最小化的区间
- optionsoptionsoptions —— 定义用于优化函数的参数,优化选项参数结构
3、优化函数的输出变量
xxx —— 由优化函数求得的值。若exitflag>0exitflag>0exitflag>0,则xxx为解;否则,xxx不是最终解,它只是迭代停止时优化过程的值
fvalfvalfval —— 解xxx处的目标函数值
exitflagexitflagexitflag —— 描述退出条件:
exitflag>0exitflag>0exitflag>0:表示目标函数收敛于解xxx处
exitflag=0exitflag=0exitflag=0:表示已达到函数评价或迭代的最大次数
exitflag<0exitflag<0exitflag<0:表示目标函数不收敛
outputoutputoutput —— 包含优化结果信息的输出结构.:
IterationsIterationsIterations:迭代次数
AlgorithmAlgorithmAlgorithm:所采用的算法
FuncCountFuncCountFuncCount:函数评价次数
4、控制参数选项的设置与修改
4.1 常用参数举例如下:
DisplayDisplayDisplay:显示水平。取值为′off′'off'′off′时,不显示输出;取值为′iter′'iter'′iter′时,显示每次迭代的信息;取值为′final′'final'′final′时,显示最终结果.默认值为′final′'final'′final′
MaxFunEvalsMaxFunEvalsMaxFunEvals: 允许进行函数评价的最大次数,取值为正整数
MaxIterMaxIterMaxIter: 允许进行迭代的最大次数,取值为正整数
4.2 使用optimsetoptimsetoptimset函数修改、创建控制参数
option1 = optimset(optimfun) % 创建一个含有所有参数名,并与优化函数optimfun相关的默认值的选项结构
option2 = optimset('param1','value1','param2','value2'...) % 创建一个名称为option2的优化选项参数,其中指定的参数具有指定值,所有未指定的参数取默认值
option3 = optimset(old_options,'param1','value1','param2','value2'...) % 创建名称为old_options的参数的拷贝,并用指定的参数值修改oldops中相应的参数.
5、用MATLAB解决无约束优化问题
5.1 一元无约束优化问题:minf(x)/maxf(x),vlb≤x≤vubminf(x)/maxf(x), vlb \leq x \leq vubminf(x)/maxf(x),vlb≤x≤vub
5.1.1 一般格式
[x, fval, exitflag, output] = fminbnd(fun, vlb, vub)
% 函数fminbnd的算法基于黄金分割法和二次插值法,它要求目标函数必须是连续函数,并可能只给出局部最优解
5.1.2 实际应用
问题0
function f = fun0(x)f = -(3-2*x)^2 * x;
[x, fval] = fminbnd('fun0', 0, 1.5);
xmax = x;
fmax = -fval;
xmax =0.5000
fmax =2.0000
5.2 多元无约束优化问题:minF(x)/maxF(x)minF(x)/maxF(x)minF(x)/maxF(x)
5.2.1 一般格式
[x, fval, exitflag, output] = fminunc('fun', X0, options)
% 或者[x, fval, exitflag, output] = fminsearch('fun', X0, options)
% fminsearch是用单纯形法寻优,fminunc算法见以下几点说明:
% [1] fminunc为无约束优化提供了大型优化和中型优化算法.由选项中的参数LargeScale控制:
% LargeScale=‘on' (默认值),使用大型算法;
% LargeScale=‘off' (默认值),使用中型算法.
% [2] fminunc为中型优化算法的搜索方向提供了4种算法,由选项中的参数HessUpdate控制:
% HessUpdate='bfgs'(默认值),拟牛顿法的BFGS公式;
% HessUpdate='dfp',拟牛顿法的DFP公式;
% HessUpdate='steepdesc',最速下降法。
% [3] fminunc为中型优化算法的步长一维搜索提供了两种算法,由选项中参数LineSearchType控制:
% LineSearchType=‘quadcubic’ (默认值),混合的二次和三次多项式插值;
% LineSearchType='cubicpoly',三次多项式插值;
% [4] 使用fminunc和 fminsearch可能会得到局部最优解。
5.2.2 实际应用
问题1
function f = fun1(x)
f = exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);
x0 = [-1 1]; % x0为迭代初始坐标
x = fminunc('fun1', x0);
y = fun1(x);
x =0.5000 -1.0000
y =3.6609e-16
问题2
% [x,y] = meshgrid(-2:0.1:3, -2:0.1:3);
% % meshgrid为网格采样点函数
% z = 100*(y-x.^2).^2+(1-x).^2;
% mesh(x, y, z);
% % hold on
% % mesh为画三维的网格图的函数
% % 画出函数的三维图像
%
% contour(x,y,z,20);
% % contour(x,y,z,levels)为绘制矩阵的等高线图的函数,20为等高线的层数
% hold on
% plot(-1.2,2,'o');
% text(-1.2,2,'start point');
% plot(1,1,'o');
% text(1,1,'solution');
% % 绘制等高线% 使用fminsearch函数求解
x0 = [-1.2 2];
[x, fval, exitflag, output] = fminsearch('fun2',x0);% 使用fminunc函数求解
% 使用三种算法进行求解
% LargeScale设置算法规模
% Hessupdate设置中型算法种类
% LineSearchType设置步长一维搜索的算法种类
% MaxIter: 允许进行迭代的最大次数,取值为正整数
% MaxFunEvals: 允许进行函数评价的最大次数,取值为正整数% 使用中型算法
x0 = [-1.2 2];
oldoptions = optimset('fminunc')
options = optimset(oldoptions, 'LargeScale', 'off')% 1.1:DFP算法
options1 = optimset(options, 'HessUpdate', 'dfp')
[x1, fval1, exitflag1, output1] = fminunc('fun2', x0, options1)
pause% 2.1:BFGS算法
options2 = optimset(options, 'HessUpdate', 'bfgs')
[x2, fval2, exitflag2, output2] = fminunc('fun2', x0, options2)
pause% 3.1:最速下降法
options31 = optimset(options, 'HessUpdate', 'steepdesc')
[x31, fval31, exitflag31, output31] = fminunc('fun2', x0, options31)
pause
% 3.2:最速下降法,迭代的最大次数为8000,进行函数评价的最大次数为8000
options32 = optimset(options, 'HessUpdate', 'steepdesc', 'MaxIter', 8000, 'MaxFunEvals', 8000)
[x32,fval32, exitflag32, output32] = fminunc('fun2', x0, options32)
pause
% 3.3:最速下降法,迭代的最大次数为9000,进行函数评价的最大次数为9000
options33 = optimset(options, 'HessUpdate', 'steepdesc', 'MaxIter', 9000, 'MaxFunEvals', 9000)
[x33, fval33, exitflag33, output33] = fminunc('fun2', x0, options33)
x =1.0000 1.0000
fval =1.9151e-10
output = 包含以下字段的 struct:iterations: 108funcCount: 202algorithm: 'Nelder-Mead simplex direct search'message: '优化已终止:↵ 当前的 x 满足使用 1.000000e-04 的 OPTIONS.TolX 的终止条件,↵F(X) 满足使用 1.000000e-04 的 OPTIONS.TolFun 的收敛条件↵'
exitflag1 = 0
exitflag2 = 1
exitflag31 = 0
exitflag32 = 0
exitflag33 = 0
fval1 = 3.118857168885522
fval2 = 5.308577048854317e-10
fval31 = 0.013712025822507
fval32 = 0.006357580614852
fval33 = 0.005729363160867
x0 = [-1.200000000000000,2]
x1 = [-0.747553337321273,0.533357667606796]
x2 = [0.999977453011579,0.999954432284563]
x31 = [1.116921345974429,1.248156913152331]
x32 = [1.079607291413950,1.166002012200930]
x33 = [1.075675703374728,1.157237939825174]
% 可根据得出来的结果判断算法的特点与优缺点
6、实际建模
6.1 提出问题&符号说明
6.2 基本假设
- 甲的价格随销量的增加而降低,同时也随着乙的销量增加而降低,两者与甲的价格均为假设为线性的关系,且前者对甲的影响比后者大,同理也可以得到乙的价格关系,则:
{p1=b1−a11x1−a12x2,b1,a11,a12>0,a11>a12;p1=b1−a11x1−a12x2,b1,a21,a22>0,a22>a21;\begin{cases} p_1 = b_1 - a_{11}x_1 - a_{12}x_2,\ b_1,a_{11},a_{12}>0,a_{11}>a_{12}; \\ p_1 = b_1 - a_{11}x_1 - a_{12}x_2,\ b_1,a_{21},a_{22}>0,a_{22}>a_{21}; \end{cases} {p1=b1−a11x1−a12x2, b1,a11,a12>0,a11>a12;p1=b1−a11x1−a12x2, b1,a21,a22>0,a22>a21;
- 甲的成本随着销量的增加而降低,且有一个初值,假设为负指数关系,同理可以得到乙的成本关系,则:
q1=r1e−λ1x1+c1,r1,λ1,c1>0q2=r2e−λ2x2+c2,r2,λ2,c2>0q_1 = r_1e^{-\lambda_1 x_1} + c_1, \ r_1, \lambda_1, c_1>0 \\ q_2 = r_2e^{-\lambda_2 x_2} + c_2, \ r_2, \lambda_2, c_2>0 q1=r1e−λ1x1+c1, r1,λ1,c1>0q2=r2e−λ2x2+c2, r2,λ2,c2>0
- 为简化模型,使得计算不太复杂,计算初始值时,假设成本不计在内。
6.3 建立模型
目标函数:Z=(p1−q1)x1+(p2−q2)x2Z = (p_1 - q_1)x_1+(p_2 - q_2)x_2Z=(p1−q1)x1+(p2−q2)x2
根据统计数据得到待定系数;
忽略成本求得ZZZ极点(最小值)处的x1,x2x_1,x_2x1,x2,作为初始值。
6.4 求解模型
function f = fun3(x)y1=((100-x(1)- 0.1*x(2))-(30*exp(-0.015*x(1))+20))*x(1);y2=((280-0.2*x(1)- 2*x(2))-(100*exp(-0.02*x(2))+30))*x(2);f=-(y1+y2);
x0 = [50 70];
[x, fval] = fminunc('fun3', x0);
zmax = -fun3(x);
x =23.9025 62.4977zmax =6.4135e+03
6.5 得到结论
在甲产量为23.9025,乙产量为62.4977时,最大利润为6413.5.
四、实验作业
略
MATLAB无约束优化(UOM)相关推荐
- matlab解决无约束优化问题
无约束优化问题 要用到的数学知识: 1.向量范数与矩阵范数 2.多元函数梯度与Hessian阵 3.凸集与凸函数 特别要提示的是:如果该函数为凸函数,那么它有且仅有一个最优点,如果它的值不在无穷处,我 ...
- matlab某分子由25个原子组成,清华大学数学实验-实验7无约束优化1
数学实验 实验 7 无约束优化 实验 7 无约束优化 生医 0 王言 2010013212 实验目的 1 掌握用 MATLAB 优化工具箱的基本用法 对不同算法进行初步分析 比较 2 练习用无约束优化 ...
- matlab某分子由25个原子组成,清华大学数学实验实验7无约束优化1
清华大学数学实验实验7无约束优化1 (8页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.9 积分 实验7无约束优化生医0 王言 2010013212 ...
- Matlab建模—无约束优化与非线性规划相关算例
数学建模期末复习,撰写博客做总结之用,主要侧重于算例的模型建立与部分代码的实现,其中不足之处望读者多多指正. 文章目录 前言 非线性规划问题 供应与选址 问题描述 模型建立 无约束最优化 梯子长度问题 ...
- matlab某分子由25个原子组成,实验七(无约束优化)
实验七(无约束优化) 化21 张腾 2014-4-18 大学数学实验 实验报告 --无约束优化 一. 实验目的 1.掌握MATLAB优化工具箱的基本用法,对不同算法进行初步分析.比较. 2.练习用无约 ...
- 02(c)多元无约束优化问题-牛顿法
此部分内容接<02(a)多元无约束优化问题>! 第二类:牛顿法(Newton method) \[f({{\mathbf{x}}_{k}}+\mathbf{\delta })\text{ ...
- 无约束优化:Hessian-Free Optimization 拟牛顿类算法(BFGS,L-BFGS)
文章目录 无约束优化:Hessian-Free Optimization 拟牛顿类算法(BFGS,L-BFGS) 为什么要用拟牛顿算法 割线方程 严格凸且光滑函数的BFGS算法 非凸但光滑函数的BFG ...
- 最优化 | 无约束优化方法 | C++实现
文章目录 参考资料 1. 前言 2. 梯度下降法 2.1 原理 2.2 c++实现 2.3 共轭梯度法 3. 牛顿法 3.1 原理 3.2 c++实现 4. 模拟退火算法 4.1 原理 4.2 c++ ...
- MATLAB无约束多维极值——最速下降法
一.算法原理 1.首先了解一个概念,什么式无约束最优化. 无约束优化问题就是在x∈R^n的范围内,找到一点x*,使得f(x*)<f(x)对于任意x∈R^n都成立.点x*就是全局最优解. 其一般形 ...
- 02(d)多元无约束优化问题-拟牛顿法
此部分内容接<02(a)多元无约束优化问题-牛顿法>!!! 第三类:拟牛顿法(Quasi-Newton methods) 拟牛顿法的下降方向写为: ${{\mathbf{d}}_{k}}= ...
最新文章
- CSS:响应式下的折叠菜单(条纹式)
- Codeforces791:Ordinary Numbers题解
- Flink 与 TiDB 联合发布实时数仓最佳实践白皮书
- 单点登录总结(域名内与跨域名)
- Navicat 连接 RDS数据库
- HH SaaS电商系统的线下服务商品库存和采购设计
- 替换Quartus 自带编辑器 (转COM张)
- Ubuntu中类似QQ截图的截图工具并实现鼠标右键菜单截图
- xshell连接Linxu系统乱码
- 这个世界是怎么了?做商业软件的怎么越来越流氓了?
- mysql adodb_指南从MySQL转向ADODB的方法_MySQL
- TIM软件 docx.文件 安卓手机下载路径
- 2007年各大论坛最新经典WindowsXP操作系统
- 配电网可靠性评估(一)—最小路法和非序贯蒙特卡洛模拟法的matlab实现
- 《新浪微博平台架构》---阅读
- 基于jQuery发射弹幕的一个小案例
- Eclipse搭建第一个Spring boot项目
- android判断通知铃声是否静音模式
- 机器学习-疑点1 :shape[ ]的理解
- 导航英语专业词汇——不停更新
热门文章
- 【漏洞复现】蓝凌OA近期公开几个漏洞汇总
- 八孔g调短洞箫_八孔g调洞箫曲谱_八孔G调箫G调简谱
- Java 第一阶段建立编程思想 【面向对象编程(中级部分)】
- 嵌入式软件开发能力提高的几个途径
- 为什么要用谷歌浏览器翻译插件?| 文末福利
- 数据分析需要学习的技能有哪些?
- 关于RC电路特点以及几种常见的典型应用
- #####好好好好######Neo4j 第三篇:Cypher查询入门
- yocto_evn compile project whithconfigure
- X11 - X client数量达到上限并报错Maximum number of clients reachedxlsclients