MATLAB线性规划
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
工程项目投资问题 某公司有一批资金欲投资到5个工程项目中,各工程项 目的净收益(投入资金的百分比)见下表所示 工程项目 A B C D E
10 12 15 12 8 收益/% 由于一些原因,公司决定用于项目A的投资不大于其他 各项投资之和,而用于项目B和项目D的投资要大于项 目C和项目E的投资。试确定投资分配方案,使该公司 收益最大。 解 设 x1 , x2 , x3 , x4 , x5 分别表示用于项目A,B,C,D,E的投资 百分数,由于各项目的投资百分数之和等于100%所以 x1 x2 x3 x4 x5 1 根据题意可建立下面的模型, 即
s.t .5 x1 3 x 2 6 x1 7 x 2 5x2 180 0 x1 , x 2 100 160
MATLAB求解程序清单为 》f= [-6,-5]ˊ; A=[5,3;6,7;0,5]; b=[100,160,180]ˊ; lb=[0, 0]ˊ; [x,fval]= linprog(f,A,b,[ ],[ ],lb) ↓ 结果输出为 x= 12.9412 11.7647 Fval= -136.4706 说明 生产产品甲乙的数量分别为12.94Kg,11.76Kg时,创造的最高总售价为 136.47万元。
max 0.1x1 0.12 x2 0.15 x3 0.12 x4 0.08 x5 s.t.x1 x2 x3 x4 x5 0 x2 x4 x3 x5 0 x1 x2 x3 x4 x5 1 x j 0, j 1, 2...5
值fval.
例:求解下面的线性规划
min 2 x1 x 2 3 x3 5 x 4 s.t.x1 2 x 2 4 x3 x 4 6 2 x1 3 x 2 x3 x 4 12 x1 x3 x 4 4 x1, x 2 , x3 , x 4 0
函数 fgoalattain fminbnd fmincon fminimax fminsearch fminunc 描述 求解多目标的优化问题 求解边界约束条件下的非线 性最小化 求解有约束的非线性最小化 求解最小最大化 求解无约束非线性最小化 求解多变量函数的最小化 一般语法 [x,fval]=fgoalattain(fun,x0,goa l,weight,A,b,lb,ub) [x,fval]=fminbnd(fun,x1,x2) [x,fval]=fmincon(fun,x0,A,B) [x,fval]=fminimax(fun,x0) [x,fval]=fminsearch(fun,x0) [x,fval]=fminunc(fun,x0)
1
x
x
m ax 6 x1 5 x 2 s.t .5 x1 3 x 2 1 0 0 6 x1 7 x 2 1 6 0 5x2 1 8 0 x1 , x 2 0
该模型要求使目标函数最大化,则按照MATLAB的要求进行转换,将目标函数 最小化,即 m in 6 x1 5 x 2
线性规划问题的MATLAB6.5辅助计算及工程 应用实例
用于线性规划的MATLAB函数主要是linprog 假设线性规划问题的数学模型为 T x min s.t. A*X≤b
f
Aeq*x=beq lb≤x≤ub 式中,f,x,b,beq,lb,ub为向量,A和Aeq为矩阵。 MATLAB中给向量和矩阵的赋值是逐行进行的,行之 间用分号“;”隔开,每行元素之间可用“,”也 可用空格隔开,矩阵右上角用符号“ˊ”表示转置 运算。
MATLAB求解程序清单为 》f= [-0.1,-0.12,-0.15,-0.12,-0.08]ˊ; A=[1,-1,-1,-1,-1;0,-1,1,-1,1]; b=[0,0]ˊ; Aeq=[1,1,1,1,1] Beq =[1] lb=[0, 0,0,0,0]ˊ; [x,fval]= linprog(f,A,b,Aeq,beq,lb) ↓
将该模型转换为目标函数最小化,即
min 0.1x1 0.12 x2 0.15 x3 0.12 x4 0.08 x5 s.t.x1 x2 x3 x4 x5 0 x2 x4 x3 x5 0 x1 x2 x3 x4 x5 1 x j 0, j 1, 2...5
Linprog函数的调用格式如下
1,[x,fval]=linprog(f,A,b),解线性规划问题min f T x, 约束条件为A*x≤b, 同时返回解x处的目标函数值fval. 2, [x,fval]=linprog(f,A,b,Aeq,beq),求解线性规划问 题的min f T x,约束条件为A*x≤b, 但增加等式约束的条件, 即Aeq*x=beq;若等式不存在,则令A= [ ],b= [ ], 同时返回解x处的目标函数值fval. 3, [x,fval]= linprog(f,A,b,Aeq,beq,lb,ub),求解线 性规划问题的min f T x,约束条件为A*x≤b及Aeq*x=beq, 并定义变量x的下界lb和上界ub,使得x始终在该范围内; 若等式不存在,则令A= [ ],b= [ ],同时返回解x处 的目标函数值fval.
结果输出为 x= 0.0000 0.2500 0.5000 0.2500 0.0000 Fval= -0.1350 可见,5个项目的投资百分数分别为0,25%,50 %,25%和0时可使该公司获得最大的收益,最大 收益为13.5%
4, [x,fval]= linprog(f,A,b,Aeq,beq,lb,ub,Xo), 求解线性规划问题的min f T x,约束条件为A*x≤b及Aeq*x=beq, 并定义变量x的下界lb和上界ub,设置初值为Xo,同时返回解
x处的目标函数值fval. 5,[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub,Xo,opti ons),求解线性规划问题的min f T x,约束条件为A*x≤b及 Aeq*x=beq,并定义变量x的下界lb和上界ub,设置初值为Xo, 用options指定的优化参数进行最小化,同时返回解x 处的目标函数值fval. 6,x= linprog(„),仅输出解x的值,不输出目标函数
工程应用实例
生产决策问题: 某工厂生产甲,乙两种产品,已知生产1Kg产品甲需用原料 A5Kg,原料B6Kg;生产1Kg产品乙需用原料A3Kg,原料 B7Kg,原料C5Kg。若1Kg产品甲和乙的销售价格分别为6万元 和5万元,三种原料的限用量分别为100Kg,160Kg,180Kg. 试确 x 定应生产这两种产品各多少千克才能使总销售价格最高? 解 令生产产品甲的数量为 ,生产产品乙的数量为 ,由 2 题意可建立下面的模型。 1
linprog
quadprog
求解线性规划问题
求解二次规划问题
[x,fval]=linprog(f,A,b,Aeq,beq, lb,ub)
[x,fval]=quadprog(H,f,A,b,Aeq ,beq)
应用MATLAB6.5的优化工具箱解决工程中的 实际问题步骤如下:
1根据实际的最优化问题建立相应的数学模型。 2对建立的数学模型进行分析和研究,选择恰 当求解方法。 3根据最优化方法的计算,选择MATLAB6.5优 化函数,然后编写求解程序,最后利用计算机 求出最优解。
MATLAB6.5优化工具箱(Optimization toolbox) 主要功能如下。
1.求解线性规划和二次规划问题。 2.求解函数的最大.最小值。 3.求解非线性规划问题。 4.求解多目标优化问题。 5.求解非线性的最小二乘。 6.求解大规模优化问题。 7.其他。
优化工具箱常用函数及其功能,语法表
解 MATLAB求解程序清单为 》f= [-2,-1,3,-5]ˊBiblioteka Baidu A=[1,2,4,-1;2,3,-1,1;1,0,1,1]; b=[6,12,4]ˊ; lb=[0,0,0,0]ˊ; [x,fval]= linprog(f,A,b,[ ],[ ],lb) ↓
结果输出为
x=
0.0000 2.6667 0.0000 4.0000 Fval= -22.6667 说明x解为最优解,最优值为22.6667。