(整理)Matlab优化⼯具箱基本⽤法.
Matlab 优化⼯具箱
x = bintprog(f, A, b, Aeq, Beq, x0, options) 0-1规划
⽤MATLAB 优化⼯具箱解线性规划
命令:x=linprog (c ,A ,b )
2、模型:
beq
AeqX b AX ..min =≤=t s cX z
命令:x=linprog (c ,A ,b ,Aeq,beq )
注意:若没有不等式:b AX ≤存在,则令A=[ ],b=[ ]. 若没有等式约束, 则令Aeq=[ ], beq=[ ]. 3、模型:VUB
X VLB beq AeqX b AX ..min ≤≤=≤=t s cX z
命令:[1] x=linprog (c ,A ,b ,Aeq,beq, VLB ,VUB )
[2] x=linprog (c ,A ,b ,Aeq,beq, VLB ,VUB, X0)
注意:[1] 若没有等式约束, 则令Aeq=[ ], beq=[ ]. [2]其中X0表⽰初始点 4、命令:[x,fval]=linprog(…)
返回最优解x及x处的⽬标函数值fval.
例1 max 6543216.064.072.032.028.04.0x x x x x x z +++++= 85003.003.003.001.001.001.0.
.654321≤+++++x x x x x x t s
70005.002.041≤+x x 10005.002.052≤+x x 90008.003.063≤+x x 6,2,10
=≥j x j
解编写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)
min z=cX
b AX t s
≤..1、模型:
例2 321436m in x x x z ++= 120.
.321=++x x x t s
301≥x 5002≤≤x 203≥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,三种⼯件的数量分别为400、 600和500,且已知⽤三种不同车床加⼯单位数量不同⼯件所需的台时数和加⼯费⽤如下表。问怎样分配车床的加⼯任务,才能既满⾜加⼯⼯件的要求,⼜使加⼯费⽤最低?
解设在甲车床上加⼯⼯件1、2、3的数量分别为x1、x2、x3,在⼄车床上加⼯⼯件1、2、3的数量分别为x4、x5、x6。可建⽴以下线性规划模型:
6543218121110913m in x x x x x x z +++++=
=≥≤++≤++=+=+=+6
,,2,1,09003.12.15.08001.14.0500
600
400x ..6543216352
41 i x x x x x x x x x x x x t s 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 = zeros(6,1); vub=[];
[x,fval] = linprog(f,A,b,Aeq,beq,vlb,vub)
例4.某⼚每⽇8⼩时的产量不低于1800件。为了进⾏质量控制,计划聘请两种不同⽔平的检验员。⼀级检验员的标准为:速度25件/⼩时,正确率98%,计时⼯资4元/⼩时;⼆级检验员的标准为:速度15⼩时/件,正确率95%,计时⼯资3元/⼩时。检验员每错检⼀次,⼯⼚要损失2元。为使总检验费⽤最省,该⼯⼚应聘⼀级、⼆级检验员各⼏名?解设需要⼀级和⼆级检验员的⼈数分别为x1、x2⼈, 则应付检验员的⼯资为:因检验员错检⽽造成的损失为:
故⽬标函数为:
约束条件为:
线性规划模型:
编写M ⽂件xxgh4.m 如下:
c = [40;36]; A=[-5 -3]; 212124323848x x x x +=??+??21211282)%5158%2258(x x x x +=+???2121213640)128()2432(m in x x x x x x z +=+++=≥≥≤??≤??≥??+??0,018001581800258180015825821
21
21x x x x x x 2
13640m in x x z +=≥≥≤≤≥+0,015945
35 ..212121x x x x x x t s
b=[-45];
Aeq=[];
beq=[];
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
即只需聘⽤9个⼀级检验员。
Matlab优化⼯具箱简介
1.MATLAB求解优化问题的主要函数
2.优化函数的输⼊变量
使⽤优化函数或优化⼯具箱中其它优化函数时, 输⼊变量见下表:
4.控制参数options 的设置
Options 中常⽤的⼏个参数的名称、含义、取值如下:
(1) Display : 显⽰⽔平.取值为’off ’时,不显⽰输出; 取值为’iter ’时,显⽰每次迭代的信息;取值为’final ’时,显⽰最终结果.默认值为’final ’.
(2) MaxFunEvals : 允许进⾏函数评价的最⼤次数,取值为正整数. (3) MaxIter : 允许进⾏迭代的最⼤次数,取值为正整数
控制参数options 可以通过函数optimset 创建或修改。命令的格式如下: (1) options=optimset(‘optimfun ’)
创建⼀个含有所有参数名,并与优化函数optimfun 相关的默认值的选项结构options.
(2)options=optimset(‘param1’,value1,’param2’,value2,...)
创建⼀个名称为options 的优化选项参数,其中指定的参数具有指定值,所有未指定的参数取默认值.
(3)options=optimset(oldops,‘param1’,value1,’param2’, value2,...)
创建名称为oldops 的参数的拷贝,⽤指定的参数值修改oldops 中相应的参数. 例:opts=optimset(‘Display ’,’iter ’,’TolFun ’,1e-8)
该语句创建⼀个称为opts 的优化选项结构,其中显⽰参数设为’iter ’, TolFun 参数设为1e-8. ⽤Matlab 解⽆约束优化问题
⼀元函数⽆约束优化问题21),(m in x x x x f ≤≤ 常⽤格式如下:
(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 求x e
f x
sin 2-=在0
主程序为wliti1.m:
f='2*exp(-x).*sin(x)';
fplot(f,[0,8]); %作图语句 [xmin,ymin]=fminbnd (f, 0,8) f1='-2*exp(-x).*sin(x)';
matlab等高线命令
[xmax,ymax]=fminbnd (f1, 0,8) 运⾏结果:
xmin = 3.9270 ymin = -0.0279 xmax = 0.7854 ymax = 0.6448
例2 对边长为3⽶的正⽅形铁板,在四个⾓剪去相等的正⽅形以制成⽅形⽆盖⽔槽,问如何剪法使⽔槽的容积最⼤?
先编写M ⽂件fun0.m 如下: function f=fun0(x) f=-(3-2*x).^2*x; 主程序为wliti2.m:
[x,fval]=fminbnd('fun0',0,1.5); xmax=x fmax=-fval
运算结果为: xmax = 0.5000,fmax =2.0000.即剪掉的正⽅形的边长为0.5⽶时⽔槽的容积最⼤,最⼤容积为2⽴⽅⽶.
2、多元函数⽆约束优化问题标准型为:min F(X) 命令格式为:
(1)x= fminunc (fun,X0 );或x=fminsearch (fun,X0 )(2)x= fminunc (fun,X0 ,options );或x=fminsearch (fun,X0 ,options )(3)[x ,fval]= fminunc (...);或[x ,fval]= fminsearch (...)(4)[x ,fval ,exitflag]= fminunc (...);或[x ,fval ,exitflag]= fminsearch
(5)[x ,fval ,exitflag ,output]= fminunc (...);或[x ,fval ,exitflag ,output]= fminsearch (...)说明:
fminsearch 是⽤单纯形法寻优. fminunc 的算法见以下⼏点说明:
解
设剪去的正⽅形的边长为x ,则⽔槽的容积为:x x )23(2
-
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论