MATLAB在工程管理中的应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

运筹学中的应用(单目标优化)
3、编写MATLAB程序为:
f=[-80;-109;-105]; A=[3,2,4;5,8,6;2,5,3;2,3,2]; b=[600;1030;688;495]; lb=zeros(3,1); [x,fval]=linprog(f,A,b,[],[],lb,[]);
函数LINPROG
数学模型:
min f x A x b Aeq x beq lb x ub
T
例题1
例1 求下面的优化问题
min 5 x1 4 x2 6 x3 x1 x2 x3 20 3 x1 2 x2 4 x3 42 3 x1 2 x2 30 0 x1 , 0 x2 , 0 x3
options(9)-若需要检测用户提供的梯度,则设为1。 options(10)-函数和约束估值的数目。 options(11)-函数梯度估值的个数。 options(12)-约束估值的数目。 options(13)-等约束条件的个数。 options(14)-函数估值的最大次数(默认值是100×变量个数) options(15)-用于目标 — 达到问题中的特殊目标。 options(16)-优化过程中变量的最小有限差分梯度值。 options(17)- 优化过程中变量的最大有限差分梯度值。 options(18)-步长设置 (默认为1或更小)。 Foptions已经被optimset和optimget代替,详情请查函数optimset和 optimget。
2 foptions函数
对于优化控制,MATLAB提供了18个参数,这些参数的具体意义为: options(1)-参数显示控制(默认值为0)。等于1时显示一些结果。 options(2)-优化点x的精度控制(默认值为1e-4)。 options(3)-优化函数F的精度控制(默认值为1e-4)。 options(4)-违反约束的结束标准(默认值为1e-6)。 options(5)-算法选择,不常用。 options(6)-优化程序方法选择,为0则为BFCG算法,为1则采用 DFP算法。 options(7)-线性插值算法选择,为0则为混合插值算法,为1则采 用立方插算法。 options(8)-函数值显示 (目标—达到问题中的Lambda )
Aeq x beq lb x ub
其中f、x、b、beq、lb、ub为向量,A、Aeq为矩阵。 其它形式的线性规划问题都可经过适当变换化为此标准形式。 在MATLAB7.0版中,线性规划问题(Linear Programming)已用 函数linprog取代了MATLAB5.x版中的lp函数。当然,由于版本的 向下兼容性,一般说来,低版本中的函数在7.0版中仍可使用。
工程管理中的应用(单目标优化)
3 Matlab求解编程序为:
f =[1;1;1;1;1;1;1;1]; Aeq=[2 1 1 1 0 0 0 0 02103210 1 0 1 3 0 2 3 4]; beq = [10000 10000 10000]; lb=zeros(8,1); [x,fval]=linprog(f,[],[],Aeq,beq,lb); disp(x); disp(fval);
3.2 无约束多元函数最小值 函数 fminsearch 格式 x = fminsearch(fun,x0) %x0为初始点,fun为目标函数的表达 式字符串或MATLAB自定义函数的函数柄。 x = fminsearch(fun,x0,options) % options查optimset [x,fval] = fminsearch(…) %最优点的函数值 [x,fval,exitflag] = fminsearch(…) % exitflag与单变量情形一致 [x,fval,exitflag,output] = fminsearch(…) %output与单变量情形一致 函数 fminunc(利用函数fminunc求多变量无约束函数最小值) 格式 x = fminunc(fun,x0) %返回给定初始点x0的最小函数值点
工程管理中的应用(单目标优化)
4 运行结果为: Optimization terminated successfully. 1.0e+003 * 2.2526 3.7474 0.0000 1.7474 0.0000 1.2526 0.0000 0.0000 9.0000e+003
工程管理中的应用(单目标优化)
5 结果处理为:
x1 2253; x2 3747; x4 1747; x6 1253; fval 9000
即:共需要钢筋9000根,其中第一种方案2253根,其中第二种方案 3747根,其中第四种方案1747根,其中第六种方案1253根.
样例2
运筹学中的应用(单目标优化)
案例:某公司根据市场需求计划加工生产三种产品,各产品的原 材料消耗定额,工时定额,单位利润和最高资源限制如表1:现要 求安排三种产品的产量x1,x2,x3,满足在资源限制条件下使得总 利润为最大.
பைடு நூலகம்
3 非线性规划问题
3.1 有约束的一元函数的最小值 函数 fminbnd 格式 x = fminbnd(fun,x1,x2) %返回自变量x在区间上函数fun取最小 值时x值,fun为目标函数的表达式字符串或MATLAB自定义函 数的函数柄。 x = fminbnd(fun,x1,x2,options) % options为指定优化参数选项 [x,fval] = fminbnd(…) % fval为目标函数的最小值 [x,fval,exitflag] = fminbnd(…) %xitflag为终止迭代的条件 [x,fval,exitflag,output] = fminbnd(…) % output为优化信息
Matlab应用
1 线性规划问题 2 foptions函数 3 非线性规划问题
4 “半无限”有约束的多元函数最优解
5 极小化极大(Minmax)问题 6 多目标规划问题 7 最小二乘最优问题 8 非线性方程(组)求解
1 线性规划问题
线性规划问题是目标函数和约束条件均为线性函数的问题, MATLAB7.0解决的线性规划问题的标准形式为: min f ( x) x R n sub.to:A x b
disp(x); disp(fval);
运筹学中的应用(单目标优化)
4、运行结果如下: Optimization terminated successfully. 0.0000 26.0000 137.0000
-1.7219e+004
5、由运行结果可知,当安排乙产品26件,丙产品137件的时候,公 司在资源限制的条件下可获得最大利润17219元.
样例1
工程管理中的应用(单目标优化)
案例:在某建筑工地中要制作10000套钢筋,每套由2.9米、2.1 米、1.5米长钢筋组成。它们的直径和材料相同.目前市场上采 购到同类的钢筋的长度每根均为7.4米.问应购进多少7.4米长的 钢筋才能满足工程的需要? 1 首先分析套裁方案,方案如表:
下料 长度 1 2.9 2 2.1 0 1.5 1 料头 0.1 长度
项目 材料1 材料2 材料3
甲产品X1 乙产品X2 丙产品X3 资源限制 3 5 2 2 8 5 3 109 4 6 3 3 105 600KG 1030KG 688KG 495工时
加工能力 2 单位利润 80
运筹学中的应用(单目标优化)
2 该问题的数学模型为:
max z 80 x1 109 x2 105 x3 3 x 2 x 4 x 600 2 3 1 5 x1 8 x2 6 x3 1030 2 x1 5 x2 3 x3 688 2 x1 3 x2 2 x3 495 x1 , x2 , x3 0
3.3 有约束的多元函数最小值 函数 fmincon 格式 x = fmincon(fun,x0,A,b) x = fmincon(fun,x0,A,b,Aeq,beq) x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub) x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon) x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) [x,fval] = fmincon(…) [x,fval,exitflag] = fmincon(…) [x,fval,exitflag,output] = fmincon(…) [x,fval,exitflag,output,lambda] = fmincon(…) [x,fval,exitflag,output,lambda,grad] = fmincon(…) [x,fval,exitflag,output,lambda,grad,hessian] = fmincon(…)
函数LINPROG
格式 x = linprog(f,A,b) %求min f ' *x sub.to 线性规划的最优解。 x = linprog(f,A,b,Aeq,beq) %若没有不等式约束,则A=[ ],b=[ ]。 x = linprog(f,A,b,Aeq,beq,lb,ub) %指定x的范围,若没有等式约束 , 则Aeq=[ ],beq=[ ] x = linprog(f,A,b,Aeq,beq,lb,ub,x0) %设置初值x0 x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options) % options为指定的优化 参数 [x,fval] = linprog(…) % 返回目标函数最优值,即fval= f ' *x。 [x,lambda,exitflag] = linprog(…) % lambda为解x的Lagrange乘子。 [x, lambda,fval,exitflag] = linprog(…) % exitflag为终止迭代的错误条 件。 [x,fval, lambda,exitflag,output] = linprog(…) % output为关于优化的 一些信息
例题2
求下面问题在初始点(0,1)处的最优解
2 2 min x1 x2 x1 x2 2 x1 5 x2
( x1 1) 2 x2 0 2 x1 3 x2 6 0
解:约束条件的标准形式为 sub.to ( x 1) 2 x 0
min z x1 x2 x3 x4 x5 x6 x7 x8 2 x1 x2 x3 x4 10000 2 x2 x3 x5 x6 x7 10000 x x 3 x 2 x 3 x 4 x 10000 4 6 7 8 1 3 x j 0, j 1, 2,3...,8
2 1 2 0 0.3
材料方案编号 3 4 5 6 1 1 0 0 1 0 3 2 1 3 0 2 0.9 0 1.1 0.2
7 0 1 3 0.8
8 0 0 4 1.4
工程管中的应用(单目标优化)
2 设以 xi (i 1, 2,3...8) 表示按第i种方案下料的原材料数量, 则可得该问题的数学模型为:
求解
解: >>f = [-5; -4; -6]; >>A = [1 -1 1;3 2 4;3 2 0]; >>b = [20; 42; 30]; >>lb = zeros(3,1); >>[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb) 结果为: x = %最优解 0.0000 15.0000 3.0000 fval = %最优值 -78.0000
相关文档
最新文档