最优化方法及matlab实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2011-7-28 10
最优化方法及Matlab实现
进行验证: >>t=3.5203; vpa(exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5) ans= -.43167073997540938989914138801396e-4
2011-7-28
11
1、一元方程的图解法
命令形式:ezplot(符号函数表达式,变量取值范围) 功能:绘制隐函数f(x)=0的曲线。变量取值范围缺省时 默认[-6,6]。
用图解法求方程 e −3t sin( 4t + 2) + 4e −0.5t cos 2t = 0.5. 例:
>>ezplot('exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)0.5',[0 5]) hold on,line([0 5],[0 0])
2011-7-28 15
Baidu Nhomakorabea
最优化方法及Matlab实现
opt控制参数及其说明 LargeScale—表示是否使用大规模问题算法(on,off),一般几个 变量的问题不必采用该算法; GradObj—对目标函数是否使用梯度(on,off),可加快搜索速 度; MaxIter—求解过程最大允许的迭代次数; MaxFunEvals—方程函数或目标函数的最大调用次数; TolFun—误差函数的误差控制量,当函数的绝对值小于此值时 停止求解; TolX—解的误差控制量,当解的绝对值小于此值时停止求解。 一般格式: opt=optimset;opt.TolX=1e-10;或set(opt,’TolX’,1e-10)
2011-7-28
5
最优化方法及Matlab实现
最优化问题是个古老的课题
17世纪的极值问题 上世纪40年代,最优化理论与算法的迅速发 展 形成一个新的学科。至今已出现线性规划、 整数规划、非线性规划、几何规划、动态规 划、随机规划、网络流等许多分支。
2011-7-28
6
最优化方法及Matlab实现
2011-7-28
23
最优化方法及Matlab实现
已知二元函数 z = f ( x, y ) = ( x − 2 x )e 例:
2
− x 2 − y 2 − xy
, 试求其最小值.
>>f=inline('(x(1)^2-2*x(1))*exp(-x(1)^2-x(2)^2-x(1)*x(2))','x');
2011-7-28 14
最优化方法及Matlab实现
4、一般非线性方程的数值解
命令形式:x=fsolve(fun,x0) %最简形式
[x,f,flag,out]=fsolve(fun,x0,opt,p1,p2,…) %一般形式 功能:fun—方程的M-函数;x0—搜索点的初值;flag>0—表示 求解成功,否则求解出问题;opt—求解控制参数。 opt控制参数及其说明 Display—中间结果显示方式(off,iter,notify,final) off:不显示; iter:逐步显示; notify:求解不收敛时给出提示; final:只显示最终值。
>>f=inline('exp(-2*t)*cos(10*t)+exp(-3*(t+2))*sin(2*t)','t'); t0=1;[t1,f1]=fminsearch(f,t0) t1=0.92275390625000,f1=-0.15473299821860 >>t0=0.1;[t2,f2]=fminsearch(f,t0) t2=0.29445312500000,f2=-0.54362463738706
⎧x2 + y 2 −1 = 0 ⎪ ⎨ ⎪0.75 x 3 − y + 0.9 = 0 ⎩
>> ezplot('x^2+y^2-1') hold on ezplot('0.75*x^3-y+0.9')
2011-7-28
13
最优化方法及Matlab实现
3、多项式型方程的准解析解(数值解)
命令形式:s=solve(eqn1,eqn2,…,eqnn) %最简形式
2011-7-28 16
最优化方法及Matlab实现
试用数值法求方程 e 例:
−3t
sin( 4t + 2) + 4e −0.5t cos 2t = 0.5的解.
>>y=inline('exp(3*t)*sin(4*t+2)+4*exp(0.5*t)*cos(2*t)0.5','t'); >> ff=optimset; ff.Display='iter'; [t,f]=fsolve(y,3.5203,ff) M-函数 function y=fc(t) y=exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5; >> ff=optimset; ff.Display='iter'; [t,f]=fsolve('fc',3.5203,ff)
18
最优化方法及Matlab实现
三、一维搜索
一 维最优化(一维搜索)
2011-7-28
19
最优化方法及Matlab实现
四、无约束最优化
Min z = f ( x ), x = ( x1 , Lx n )
T
4.1 基本算法及matlab实现
2011-7-28
20
最优化方法及Matlab实现
4.2 特殊的无约束最优化方法
2011-7-28 17
最优化方法及Matlab实现
数学规划的一般模型
Min (或Max ) z = f ( x ), x = ( x1 , Lx n )T s.t. g i ( x ) ≤ 0, i = 1,2, L m
x~决策变量 f(x)~目标函数 gi(x)≤0~约束条件
2011-7-28
最优化方法及Matlab实现
2、二元方程的图解法
命令形式:利用ezplot()和hold on. 例: 用图解法求解下面的联立方程
⎧x e + e − x / 2 sin( xy ) = 0 ⎪ ⎨ 2 ⎪ x cos( x + y 2 ) + y 2 e x + y = 0 ⎩
2 − xy 2 / 2
x0=[0,0]; ff=optimset;ff.Display='iter'; x=fminsearch(f,x0,ff)
>>x=fminunc(f,x0,ff)
2011-7-28
24
最优化方法及Matlab实现
3、全局最优解和局部最优解
已知函数 y (t ) = e −2t cos10t + e −3t −6 sin 2t , t ≥ 0, 试观察不同的 例: 初值得出其最小值.
预备知识
向量 矩阵 二次型及其正定性 多元函数的导数与极值
2011-7-28 7
最优化方法及Matlab实现
参考书目
何坚勇. 最优化方法. 清华大学出版社, 2007. 傅英定,成孝予,唐应辉. 最优化理论与方法.高 等教育出版社,2004. 《现代应用数学手册》编委会.运筹学与最优 化理论卷.清华大学出版社, 1997. 袁亚湘,孙文瑜.最优化理论与方法.科学出版 社,1997.
数学建模讲座
最优化方法及Matlab实现
主讲:兰恒友
E-mail: lanhengyou@suse.edu.cn Tel: 5505963
最优化方法及Matlab实现
一、最优化方法简介
最优化方法也称做运筹学方法 最优化方法——寻找最优方案的方法. 主要运用数学方法研究各种系统的优化途径及方 案,为决策者提供科学决策的依据。最优化方法的 目的在于针对所研究的系统求得一个合理运用人力 物力和财力的最佳方案,发挥和提高系统的效能和 效益,最终达到系统的最优目标。
2011-7-28
8
最优化方法及Matlab实现
魏权龄,王日爽,徐兵.数学规划引论.北京航空 航天大学出版社,1997. 薛毅.最优化理论与方法.北京工业大学出版 社,2001. 施光燕,董加礼.最优化方法.高等教育出版 社,1999.
2011-7-28
9
最优化方法及Matlab实现
二、代数方程的求解
最优化问题
随着生产、经济、技术的发展,工程技术人 员、管理人员在实际中,肯定会面临如下问 题: (1)工程设计中怎样选择参数,使得设计既满 足要求,又能降低成本; (2)资源分配中,怎样的分配方案既能满足各 方面的基本要求,又能获得好的经济效益;
2011-7-28
4
最优化方法及Matlab实现
(3)生产计划安排中,选择怎样的计划方案 才能提高产值和利润; (4)原料配化问题中,怎样确定各种成分的 比例才能提高质量、降低成本; (5)城建规划中,怎样安排工厂、学校、机 关、商店、医院、住宅和其他单位的合理 布局,才能方便群众,有利于城市各行各 业的发展。
1、解析解法和图解法
∂f ∂f ∂f |x= x0 = 0, |x= x0 = 0,..., |x= x0 = 0 x1 x2 xn
例:用解析和图解法求解方程 e −3t sin( 4t + 2) + 4e −0.5t cos 2t = 0.5.
2011-7-28
21
最优化方法及Matlab实现
<<syms t; y=exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5; ezplot(y,[0 4]) y1=diff(y); ezplot(y1,[0 4]) t0=solve(y1) y2=diff(y1); b=subs(y2,t,t0)
2011-7-28
25
最优化方法及Matlab实现
五、约束最优化方法
问题 g(x) ≤0 h(x)=0 约束集 S={x|g(x) ≤0 , h(x)=0} min f(x) s.t.
5.1 基本算法及matlab实现
2011-7-28
26
最优化方法及Matlab实现
5.2 常用约束最优化方法
1、线性规划 目标函数: min z = c1 x1 + c2 x2 + L + cn xn 约束条件: ⎧ a 11 x 1 + a 12 x 2 + L + a 1 n x n ≤ ( = , ≥ ) b 1 ⎪ a x + a x + L + a x ≤ ( = , ≥ )b 22 2 2n n 2 ⎪ 21 1 ⎪ ⎨L L L L L L L L L L L L L L ⎪ a x + a x + L + a x ≤ ( = , ≥ )b m 2 2 mn n m ⎪ m1 1 ⎪ x1 , x 2 , L , x n ≥ 0 ⎩
2011-7-28
22
最优化方法及Matlab实现
2、数值解法
命令形式1:x=fminsearch(fun,x0) %简单形式 [x,f,flag,out]=fminsearch(fun,x0,opt,p1,p2,…) %一般形式 功能:与fsolve()中的参数控制形式类似。 注:若函数时多元的,要表达成向量的形式。 命令形式2:x=fminunc(fun,x0) %简单形式 [x,f,flag,out]=fminunc(fun,x0,opt,p1,p2,…) %一般形式 功能:与fsolve()中的参数控制形式类似。
2011-7-28
2
最优化方法及Matlab实现
最优化方法研究和解决问题的核心是正确建立和使 用模型或算法。最优化方法是一种特殊定量分析方 法。 最优方案——在所有可能的方案中,选出最合理的、 达到事先规定的最优目标的方案 这是在各领域中,普遍存在的最优化问题的共同特 点。
2011-7-28
3
最优化方法及Matlab实现
[x,…]=solve(eqn1,eqn2,…,eqnn) %直接得出根 [x,…]=solve(eqn1,eqn2,…,eqnn,’x,…’) %直接得出根并指定变量 >>syms x y; [x,y]=solve('x^2+y^2-1=0','0.75*x^3-y+0.9=0') 数值验证: >>[eval('x.^2+y.^2-1') eval('0.75*x.^3-y+0.9')] 误差验证: >>err=[x.^2+y.^2-1,0.75*x.^3-y+0.9]; norm(double(eval(err)))
>> ezplot('x^2*exp(-x*y^2/2)+exp(-x/2)*sin(x*y)') hold on ezplot('y^2*cos(y+x^2)+x^2*exp(x+y)')
2011-7-28
12
最优化方法及Matlab实现
3、多项式型方程的准解析解(数值解)
例: 用图解法求解下面的联立方程
最优化方法及Matlab实现
进行验证: >>t=3.5203; vpa(exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5) ans= -.43167073997540938989914138801396e-4
2011-7-28
11
1、一元方程的图解法
命令形式:ezplot(符号函数表达式,变量取值范围) 功能:绘制隐函数f(x)=0的曲线。变量取值范围缺省时 默认[-6,6]。
用图解法求方程 e −3t sin( 4t + 2) + 4e −0.5t cos 2t = 0.5. 例:
>>ezplot('exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)0.5',[0 5]) hold on,line([0 5],[0 0])
2011-7-28 15
Baidu Nhomakorabea
最优化方法及Matlab实现
opt控制参数及其说明 LargeScale—表示是否使用大规模问题算法(on,off),一般几个 变量的问题不必采用该算法; GradObj—对目标函数是否使用梯度(on,off),可加快搜索速 度; MaxIter—求解过程最大允许的迭代次数; MaxFunEvals—方程函数或目标函数的最大调用次数; TolFun—误差函数的误差控制量,当函数的绝对值小于此值时 停止求解; TolX—解的误差控制量,当解的绝对值小于此值时停止求解。 一般格式: opt=optimset;opt.TolX=1e-10;或set(opt,’TolX’,1e-10)
2011-7-28
5
最优化方法及Matlab实现
最优化问题是个古老的课题
17世纪的极值问题 上世纪40年代,最优化理论与算法的迅速发 展 形成一个新的学科。至今已出现线性规划、 整数规划、非线性规划、几何规划、动态规 划、随机规划、网络流等许多分支。
2011-7-28
6
最优化方法及Matlab实现
2011-7-28
23
最优化方法及Matlab实现
已知二元函数 z = f ( x, y ) = ( x − 2 x )e 例:
2
− x 2 − y 2 − xy
, 试求其最小值.
>>f=inline('(x(1)^2-2*x(1))*exp(-x(1)^2-x(2)^2-x(1)*x(2))','x');
2011-7-28 14
最优化方法及Matlab实现
4、一般非线性方程的数值解
命令形式:x=fsolve(fun,x0) %最简形式
[x,f,flag,out]=fsolve(fun,x0,opt,p1,p2,…) %一般形式 功能:fun—方程的M-函数;x0—搜索点的初值;flag>0—表示 求解成功,否则求解出问题;opt—求解控制参数。 opt控制参数及其说明 Display—中间结果显示方式(off,iter,notify,final) off:不显示; iter:逐步显示; notify:求解不收敛时给出提示; final:只显示最终值。
>>f=inline('exp(-2*t)*cos(10*t)+exp(-3*(t+2))*sin(2*t)','t'); t0=1;[t1,f1]=fminsearch(f,t0) t1=0.92275390625000,f1=-0.15473299821860 >>t0=0.1;[t2,f2]=fminsearch(f,t0) t2=0.29445312500000,f2=-0.54362463738706
⎧x2 + y 2 −1 = 0 ⎪ ⎨ ⎪0.75 x 3 − y + 0.9 = 0 ⎩
>> ezplot('x^2+y^2-1') hold on ezplot('0.75*x^3-y+0.9')
2011-7-28
13
最优化方法及Matlab实现
3、多项式型方程的准解析解(数值解)
命令形式:s=solve(eqn1,eqn2,…,eqnn) %最简形式
2011-7-28 16
最优化方法及Matlab实现
试用数值法求方程 e 例:
−3t
sin( 4t + 2) + 4e −0.5t cos 2t = 0.5的解.
>>y=inline('exp(3*t)*sin(4*t+2)+4*exp(0.5*t)*cos(2*t)0.5','t'); >> ff=optimset; ff.Display='iter'; [t,f]=fsolve(y,3.5203,ff) M-函数 function y=fc(t) y=exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5; >> ff=optimset; ff.Display='iter'; [t,f]=fsolve('fc',3.5203,ff)
18
最优化方法及Matlab实现
三、一维搜索
一 维最优化(一维搜索)
2011-7-28
19
最优化方法及Matlab实现
四、无约束最优化
Min z = f ( x ), x = ( x1 , Lx n )
T
4.1 基本算法及matlab实现
2011-7-28
20
最优化方法及Matlab实现
4.2 特殊的无约束最优化方法
2011-7-28 17
最优化方法及Matlab实现
数学规划的一般模型
Min (或Max ) z = f ( x ), x = ( x1 , Lx n )T s.t. g i ( x ) ≤ 0, i = 1,2, L m
x~决策变量 f(x)~目标函数 gi(x)≤0~约束条件
2011-7-28
最优化方法及Matlab实现
2、二元方程的图解法
命令形式:利用ezplot()和hold on. 例: 用图解法求解下面的联立方程
⎧x e + e − x / 2 sin( xy ) = 0 ⎪ ⎨ 2 ⎪ x cos( x + y 2 ) + y 2 e x + y = 0 ⎩
2 − xy 2 / 2
x0=[0,0]; ff=optimset;ff.Display='iter'; x=fminsearch(f,x0,ff)
>>x=fminunc(f,x0,ff)
2011-7-28
24
最优化方法及Matlab实现
3、全局最优解和局部最优解
已知函数 y (t ) = e −2t cos10t + e −3t −6 sin 2t , t ≥ 0, 试观察不同的 例: 初值得出其最小值.
预备知识
向量 矩阵 二次型及其正定性 多元函数的导数与极值
2011-7-28 7
最优化方法及Matlab实现
参考书目
何坚勇. 最优化方法. 清华大学出版社, 2007. 傅英定,成孝予,唐应辉. 最优化理论与方法.高 等教育出版社,2004. 《现代应用数学手册》编委会.运筹学与最优 化理论卷.清华大学出版社, 1997. 袁亚湘,孙文瑜.最优化理论与方法.科学出版 社,1997.
数学建模讲座
最优化方法及Matlab实现
主讲:兰恒友
E-mail: lanhengyou@suse.edu.cn Tel: 5505963
最优化方法及Matlab实现
一、最优化方法简介
最优化方法也称做运筹学方法 最优化方法——寻找最优方案的方法. 主要运用数学方法研究各种系统的优化途径及方 案,为决策者提供科学决策的依据。最优化方法的 目的在于针对所研究的系统求得一个合理运用人力 物力和财力的最佳方案,发挥和提高系统的效能和 效益,最终达到系统的最优目标。
2011-7-28
8
最优化方法及Matlab实现
魏权龄,王日爽,徐兵.数学规划引论.北京航空 航天大学出版社,1997. 薛毅.最优化理论与方法.北京工业大学出版 社,2001. 施光燕,董加礼.最优化方法.高等教育出版 社,1999.
2011-7-28
9
最优化方法及Matlab实现
二、代数方程的求解
最优化问题
随着生产、经济、技术的发展,工程技术人 员、管理人员在实际中,肯定会面临如下问 题: (1)工程设计中怎样选择参数,使得设计既满 足要求,又能降低成本; (2)资源分配中,怎样的分配方案既能满足各 方面的基本要求,又能获得好的经济效益;
2011-7-28
4
最优化方法及Matlab实现
(3)生产计划安排中,选择怎样的计划方案 才能提高产值和利润; (4)原料配化问题中,怎样确定各种成分的 比例才能提高质量、降低成本; (5)城建规划中,怎样安排工厂、学校、机 关、商店、医院、住宅和其他单位的合理 布局,才能方便群众,有利于城市各行各 业的发展。
1、解析解法和图解法
∂f ∂f ∂f |x= x0 = 0, |x= x0 = 0,..., |x= x0 = 0 x1 x2 xn
例:用解析和图解法求解方程 e −3t sin( 4t + 2) + 4e −0.5t cos 2t = 0.5.
2011-7-28
21
最优化方法及Matlab实现
<<syms t; y=exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5; ezplot(y,[0 4]) y1=diff(y); ezplot(y1,[0 4]) t0=solve(y1) y2=diff(y1); b=subs(y2,t,t0)
2011-7-28
25
最优化方法及Matlab实现
五、约束最优化方法
问题 g(x) ≤0 h(x)=0 约束集 S={x|g(x) ≤0 , h(x)=0} min f(x) s.t.
5.1 基本算法及matlab实现
2011-7-28
26
最优化方法及Matlab实现
5.2 常用约束最优化方法
1、线性规划 目标函数: min z = c1 x1 + c2 x2 + L + cn xn 约束条件: ⎧ a 11 x 1 + a 12 x 2 + L + a 1 n x n ≤ ( = , ≥ ) b 1 ⎪ a x + a x + L + a x ≤ ( = , ≥ )b 22 2 2n n 2 ⎪ 21 1 ⎪ ⎨L L L L L L L L L L L L L L ⎪ a x + a x + L + a x ≤ ( = , ≥ )b m 2 2 mn n m ⎪ m1 1 ⎪ x1 , x 2 , L , x n ≥ 0 ⎩
2011-7-28
22
最优化方法及Matlab实现
2、数值解法
命令形式1:x=fminsearch(fun,x0) %简单形式 [x,f,flag,out]=fminsearch(fun,x0,opt,p1,p2,…) %一般形式 功能:与fsolve()中的参数控制形式类似。 注:若函数时多元的,要表达成向量的形式。 命令形式2:x=fminunc(fun,x0) %简单形式 [x,f,flag,out]=fminunc(fun,x0,opt,p1,p2,…) %一般形式 功能:与fsolve()中的参数控制形式类似。
2011-7-28
2
最优化方法及Matlab实现
最优化方法研究和解决问题的核心是正确建立和使 用模型或算法。最优化方法是一种特殊定量分析方 法。 最优方案——在所有可能的方案中,选出最合理的、 达到事先规定的最优目标的方案 这是在各领域中,普遍存在的最优化问题的共同特 点。
2011-7-28
3
最优化方法及Matlab实现
[x,…]=solve(eqn1,eqn2,…,eqnn) %直接得出根 [x,…]=solve(eqn1,eqn2,…,eqnn,’x,…’) %直接得出根并指定变量 >>syms x y; [x,y]=solve('x^2+y^2-1=0','0.75*x^3-y+0.9=0') 数值验证: >>[eval('x.^2+y.^2-1') eval('0.75*x.^3-y+0.9')] 误差验证: >>err=[x.^2+y.^2-1,0.75*x.^3-y+0.9]; norm(double(eval(err)))
>> ezplot('x^2*exp(-x*y^2/2)+exp(-x/2)*sin(x*y)') hold on ezplot('y^2*cos(y+x^2)+x^2*exp(x+y)')
2011-7-28
12
最优化方法及Matlab实现
3、多项式型方程的准解析解(数值解)
例: 用图解法求解下面的联立方程