用MATLAB求解优化问题

上传人:go****e 文档编号:137257099 上传时间:2020-07-06 格式:PDF 页数:15 大小:775.43KB
返回 下载 相关 举报
用MATLAB求解优化问题_第1页
第1页 / 共15页
用MATLAB求解优化问题_第2页
第2页 / 共15页
用MATLAB求解优化问题_第3页
第3页 / 共15页
用MATLAB求解优化问题_第4页
第4页 / 共15页
用MATLAB求解优化问题_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《用MATLAB求解优化问题》由会员分享,可在线阅读,更多相关《用MATLAB求解优化问题(15页珍藏版)》请在金锄头文库上搜索。

1、用用 MATLAB 优化工具箱解线性规划优化工具箱解线性规划 min z=cX bAXts. . 1、模型: 命令:命令:x=linprog(c,A,b) 2、模型:、模型: beqAeqX bAX . . min ts cXz 命令:命令:x=linprog(c,A,b,Aeq,beq) 注意:若没有不等式:注意:若没有不等式:bAX存在,则令存在,则令 A= ,b= . 若没有等式约束若没有等式约束, 则令则令 Aeq= , beq= . 3、模型:、模型: VUBXVLB beqAeqX bAX . . min ts cXz 命令:命令:1 x=linprog(c,A,b,Aeq,beq

2、, VLB,VUB) 2 x=linprog(c,A,b,Aeq,beq, VLB,VUB, X0) 注意:注意:1 若没有等式约束若没有等式约束, 则令则令 Aeq= , beq= . 2其中其中 X0 表示初始点表示初始点 4、命令:、命令:x,fval=linprog() 返回最优解及处的目标函数值返回最优解及处的目标函数值 fval. 例例 1max 654321 6 . 064. 072. 032. 028. 04 . 0 xxxxxxz 85003. 003. 003. 001. 001. 001. 0. . 654321 xxxxxxts 70005. 002. 0 41 xx

3、10005. 002. 0 52 xx 90008. 003. 0 63 xx 6, 2 , 10jxj 解解 编写编写 M 文件小文件小 xxgh1.m 如下:如下: c=-0.4 -0.28 -0.32 -0.72 -0.64 -0.6; A=0.01 0.01 0.01 0.03 0.03 0.03;0.02 0 0 0.05 0 0;0 0.02 0 0 0.05 0;0 0 0.03 0 0 0.08; b=850;700;100;900; Aeq=; beq=; vlb=0;0;0;0;0;0; vub=; x,fval=linprog(c,A,b,Aeq,beq,vlb,vub)

4、 例例 2 321 436minxxxz 120. . 321 xxxts 30 1 x 500 2 x 20 3 x 解解:编写编写 M 文件文件 xxgh2.m 如下:如下: c=6 3 4; A=0 1 0; b=50; Aeq=1 1 1; beq=120; vlb=30,0,20; vub=; x,fval=linprog(c,A,b,Aeq,beq,vlb,vub 例例 3(任务分配问题)某车间有甲、乙两台机床,可用于加工三种工件。(任务分配问题)某车间有甲、乙两台机床,可用于加工三种工件。 假定这两台车床的可用台时数分别为假定这两台车床的可用台时数分别为 800 和和 900,三

5、种工件的数量分别为,三种工件的数量分别为 400、 600 和和 500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工 费用如下表。问怎样分配车床的加工任务,才能既满足加工工件的要求,又使费用如下表。问怎样分配车床的加工任务,才能既满足加工工件的要求,又使 加工费用最低?加工费用最低? 解解设在甲车床上加工工件设在甲车床上加工工件 1、2、3 的数量分别为的数量分别为 x1、x2、x3,在乙车床上,在乙车床上 加工工件加工工件 1、2、3 的数量分别为的数量分别为 x4、x5、x6。可建立以下线性规划模型:。可建立以下线

6、性规划模型: 654321 8121110913minxxxxxxz 6 , 2 , 1, 0 9003 . 12 . 15 . 0 8001 . 14 . 0 500 600 400 x . . 654 321 63 52 41 ix xxx xxx xx xx x ts i 编写编写 M 文件文件 xxgh3.m 如下如下: f = 13 9 10 11 12 8; A=0.4 1.1 1 0 0 0 0 0 0 0.5 1.2 1.3; b = 800; 900; Aeq=1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1; beq=400 600 500; vlb

7、= zeros(6,1); vub=; x,fval = linprog(f,A,b,Aeq,beq,vlb,vub) 例例 4某厂每日某厂每日 8 小时的产量不低于小时的产量不低于 1800 件。为了进行质量控制,计划聘请两种不同水平件。为了进行质量控制,计划聘请两种不同水平 的检验员。一级检验员的标准为:速度的检验员。一级检验员的标准为:速度 25 件件/小时,正确率小时,正确率 98%,计时工资,计时工资 4 元元/小时;二小时;二 级检验员的标准为:速度级检验员的标准为:速度 15 小时小时/件,正确率件,正确率 95%,计时工资,计时工资 3 元元/小时。检验员每错检一小时。检验员每

8、错检一 次,工厂要损失次,工厂要损失 2 元。为使总检验费用最省,该工厂应聘一级、二级检验员各几名?元。为使总检验费用最省,该工厂应聘一级、二级检验员各几名? 解解设需要一级和二级检验员的人数分别为设需要一级和二级检验员的人数分别为 x1、x2 人人, 则应付检验员的工资为:则应付检验员的工资为: 因检验员错检而造成的损失为:因检验员错检而造成的损失为: 故目标函数为:故目标函数为: 约束条件为:约束条件为: 线性规划模型:线性规划模型: 编写编写 M 文件文件 xxgh4.m 如下:如下: c = 40;36; A=-5 -3; b=-45; Aeq=; beq=; 2121 2432384

9、8xxxx 2121 1282)%5158%2258(xxxx 212121 3640)128()2432(minxxxxxxz 0, 0 1800158 1800258 1800158258 21 2 1 21 xx x x xx 21 3640minxxz 0, 0 15 9 4535 . . 21 2 1 21 xx x x xx ts vlb = zeros(2,1); vub=9;15; %调用调用 linprog 函数:函数: x,fval = linprog(c,A,b,Aeq,beq,vlb,vub) 结果为:结果为: x = 9.0000 0.0000 fval =360 即

10、只需聘用即只需聘用 9 个一级检验员。个一级检验员。 Matlab 优化工具箱简介优化工具箱简介 1.MATLAB 求解优化问题的主要函数求解优化问题的主要函数 2.优化函数的输入变量优化函数的输入变量 使用优化函数或优化工具箱中其它优化函数时, 输入变量见下表: 3. 优化函数的输出变量下表优化函数的输出变量下表: 4控制参数控制参数 options 的设置的设置 Options 中常用的几个参数的名称、含义、取值如下中常用的几个参数的名称、含义、取值如下: (1)Display: 显示水平.取值为off时,不显示输出; 取值为iter时,显示每次迭代的信息;取 值为final时,显示最终结

11、果.默认值为final. (2)MaxFunEvals: 允许进行函数评价的最大次数,取值为正整数. (3)MaxIter: 允许进行迭代的最大次数,取值为正整数 控制参数控制参数 options 可以通过函数可以通过函数 optimset 创建或修改。命令的格式如下:创建或修改。命令的格式如下: (1) options=optimset(optimfun) 创建一个含有所有参数名,并与优化函数 optimfun 相关的默认值的选项结构 options. (2)options=optimset(param1,value1,param2,value2,.) 创建一个名称为 options 的优化

12、选项参数,其中指定的参数具有指定值,所有未指定的参数 取默认值. (3)options=optimset(oldops,param1,value1,param2, value2,.) 创建名称为 oldops 的参数的拷贝,用指定的参数值修改 oldops 中相应的参数. 例:opts=optimset(Display,iter,TolFun,1e-8) 该语句创建一个称为 opts 的优化选项结构,其中显示参数设为iter, TolFun 参数设为 1e-8. 用用 Matlab 解无约束优化问题解无约束优化问题 一元函数无约束优化问题一元函数无约束优化问题 21 ),(minxxxxf 常

13、用格式如下:常用格式如下: (1)x= fminbnd (fun,x1,x2) (2)x= fminbnd (fun,x1,x2 ,options) (3)x,fval= fminbnd(.) (4)x,fval,exitflag= fminbnd(.) (5)x,fval,exitflag,output= fminbnd(.) 其中(3) 、 (4) 、 (5)的等式右边可选用(1)或(2)的等式右边。 函数 fminbnd 的算法基于黄金分割法和二次插值法,它要求目标函数必须是连续函数, 并可能只给出局部最优解。 例例 1 1 求求xef x sin2 在 0x 0,且a11 a12; 同

14、理,p2= b2- a21x1- a22x2,b2,a21,a22 0 2成本与产量成负指数关系成本与产量成负指数关系 甲的成本随其产量的增长而降低,且有一个渐进值,可以假设为 负指数关系,即: 0, 111111 11 crcerq x 同理,0, 222222 22 crcerq x 模型建立模型建立 总利润为:总利润为: z(x1,x2)=(p1-q1)x1+(p2-q2)x2 若根据大量的统计数据,求出系数 b1=100,a11=1,a12=0.1,b2=280, a21=0.2,a22=2,r1=30,1=0.015,c1=20, r2=100,2=0.02,c2=30,则 问题转化

15、为无约束优化问题:求甲,乙两个牌号的产量 x1,x2,使 总利润 z 最大. 为简化模型,先忽略成本,并令 a12=0,a21=0,问题转化为求: z1 = ( b1 - a11x1 ) x1 + ( b2 - a22x2 ) x2 的极值. 显然其解为 x1 = b1/2a11 = 50, x2 = b2/2a22 = 70, 我们把它作为原问题的初始值. 模型求解模型求解 1.建立 M-文件 fun.m: function f = fun(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*

16、x(2)-(100*exp(-0.02*x(2)+30)*x(2); f=-y1-y2; 2.输入命令: x0=50,70; x=fminunc(fun,x0), z=fun(x) 3.计算结果: x=23.9025, 62.4977,z=6.4135e+003 即甲的产量为 23.9025,乙的产量为 62.4977,最大利润为 6413.5. 非线性规划非线性规划 1、 二次规划二次规划 用用 MATLAB 软件求解软件求解,其输入格式如下其输入格式如下: 1.x=quadprog(H,C,A,b); 2.x=quadprog(H,C,A,b,Aeq,beq); 3.x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB); 4.x=quadprog(H,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 其它小学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号