MATLAB优化-浙江大学数学系
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
根据优化变 量、目标 函数和约 束函数 的不同,常见的有 线性优化:目标函数和约束函数均为线性函数; 二次优化:目标函数为二次函数,而约束条件为线性方程; 与线性优化统称为简 单优化 ; 非线性优化:目标函数为非二次函数,或约束条件非线性; 多目标优化:目标函数不止一个。
2 / 36
0、解析法与图形法求简单问题
− (2, 6)
1 2 3
h = [1,−1; −1,2]; c = [−2,−6]; a = [1,1;−1,2;2,1]; b = [2;2;3]; [x, fval ]=quadprog(h,c,a,b ,[],[],[0;0]) ;
8 / 36
3、无约束非线性优化fminsearch/fminunc
其中opt参数结构(help optimset): 选项名 ’Display’ ’MaxFunEvals’ ’MaxIter’ ’TolFun’ ’TolX’ 描述 设定现实方式 最大函数执行次数 最大算法循环次数 函数解(极值)的误差容忍度 变量解(位置)的误差容忍度 默认值 ’notify’ 200*length(x) 200*length(x) 1e-4 1e-4
2 )2 + (1 − x )2 求函数f (x ) = 100(x2 − x1 1
在[−1.5, 1.5] × [−0.6, 2.8]上极小值
9 / 36
1 2 3 4 5
banana = @(x) 100∗(x(2) − x(1)ˆ2)ˆ2 + (1−x(1))ˆ2; [xmin, fval , flag ,out] = fminsearch(banana, [−1.9,2]) ; opt = optimset(’TolFun’,1e−8,’TolX’,1e−8,’Display ’ , ’ iter ’ ) ; [xmin, fval , flag ,out] = fminsearch(banana, [−1.9,2], opt) ; %[xmin,fval , flag ,out] = fminunc(banana, [−1.9,2],opt) ;
第七讲:MATLAB优化
胡贤良
浙江大学数学系 科学与工程计算研究所
2012年6月28日
1 / 36
1
MATLAB数值优化工具箱
2
MATLAB代码优化
3
算法优化
1 / 36
优化问题
数学上所谓的优化问题,就是求解如下形式的最优解 min fun(x )
Sub . to [ConditionEquation] [BoundaryCondition]
6 / 36
练习II:优化轰炸方案
已知目标有四个要害部位,只要摧毁其中之一即可达到目的。此 项任务的汽油消耗量限制为48000升、重型炸弹48枚、轻型炸 弹32枚。飞机携带重型炸弹时每升汽油可飞行2千米,带轻型炸 弹时每升汽油可飞行3千米。又知每架飞机每次只能装载一枚炸 弹,每出发轰炸一次除来回路程汽油消耗(空载时每升汽油可飞 行4千米)外,起飞和降落每次各消耗100升。数据如表所示 要害部位 1 2 3 4 离机场的距离 (千米) 450 480 540 600 摧毁的可能性 每枚重型炸弹 0.10 0.20 0.15 0.25 每枚轻型炸弹 0.08 0.16 0.12 0.20
如求f (t ) = e −3t sin(4t + 2) + 4e −0.5t cos (2t ) − 0.5的极值。
1 2 3
y = exp(−3∗t)∗sin(4∗t+2)+4∗exp(−0.5∗t)∗cos(2∗t)−0.5; y1 = diff (y, t) ; ezplot (y1 ,[0,4]) ;
百度文库
s .t . 2x + 3y ≤ 100 4x + 2y ≤ 120 x, y ≥ 0 ⇒
s .t . 2x + 3y ≤ 100 4x + 2y ≤ 120 x, y ≥ 0
1 2 3
c = [−6,−4]; a = [2,3;4,2]; b=[100,120]; vlb =[0,0]; vub=[Inf, Inf ]; [x, zval ] = linprog(c,a,b ,[],[], vlb ,vub);
如下是导函数y1 和目标函数y 在[0,4]上的图形
3 / 36
1、线性规划(linprog)
min S .T −5x1 + 4x2 + 2x3 6x1 − x2 + x3 ≤ 8 x1 + 2x2 + 4x3 ≤ 10 3 ≥ x1 ≥ −1 2 ≥ x2 ≥ 0 x3 ≥ 0 此问题即为线性规划问题的标准型,在MATLAB中求解: c = [−5, 4, 2]; a = [6, −1, 1; 1, 2, 4]; b = [8; 10]; vlb = [−1, 0, 0]; vub = [3, 2, Inf ]; [x , fval ] = linprog (c , a, b , [], [], vlb , vub ); 采用单纯型方法求解,更具体格式参考help linprog;
5 / 36
练习I:四元线性规划
3 1 max( x1 − 150x2 + x3 − 6x4 ) 4 50 s.t.
1 1 4 x1 − 60x2 − 50 x3 + 9x4 ≤ 0 1 −1 2 x1 + 90x2 + 50 x3 − 3x4 ≥ 0
x ≤ 1, x ≥ −5, x ≥ −5, x ≥ −5, x ≥ −5 3 1 2 3 4
为了摧毁敌方军事目标尽可能最大,试确定飞机轰炸的方案。
7 / 36
2、二次规划(quadprog)
1 −1 −1 2 x1 + x2 ≤ 2 −x1 + 2x2 ≤ 2 2x1 + x2 ≤ 3 x1 , x2 ≥ 0 x1 x2 x1 x2
min f (x ) = 1 2 (x1 , x2 ) S .T
4 / 36
某车间生产A、B两种产品,为了生产A和B,所需原料分别 为2和3个单位,而所需的工时分别为4和2个单位。现在可以应用 的原材料为100个单位,工时为120个单位,每生产一台A和B分 别可获得利润6元和4元。那么应该安排生产A、B各多少台才能 获得最大利润? max z = 6x + 4y min z = −6x − 4y