此示例演示如何将问题从数学形式转换为优化工具箱™ 使用基于解算器的方法的解算器语法。虽然问题是线性规划,但这些技术适用于所有解算器。
问题中的变量和表达式代表了一个化学工厂的运行模型,来自埃德加和希梅尔布劳的一个例子[1].有两个视频描述了这个问题。
最优化的数学建模,第1部分用图画的形式显示问题。它展示了如何生成的数学表达式模型描述从这幅图中。
优化建模,第2部分:转换为求解形式描述如何将这些数学表达式转换为“优化工具箱”求解器语法。这个视频展示了如何解决这个问题,以及如何解释结果。
本示例的其余部分仅涉及将问题转换为解算器语法。这个例子紧跟着视频优化建模,第2部分:转换为求解形式。视频和示例之间的主要区别在于,此示例显示了如何使用命名变量或索引变量,这些变量类似于散列键。此区别在将变量组合成一个向量.
这段视频最优化的数学建模,第1部分提出将问题转化为数学形式的一种方法是:
对问题有一个全面的认识
确定目标(最大化或最小化某物)
识别(名字)变量
确定约束条件
确定可以控制哪些变量
用数学符号说明所有的量
检查模型的完整性和正确性
关于本节中变量的含义,请参见视频最优化的数学建模,第1部分.
优化问题是最小化目标函数,以所有其他表达式为约束。
目标函数是:
0.002614 HPS+0.0239 PP+0.009825 EP
.
制约因素包括:
2500
≤P1
≤6250
I1
≤192000年
C
≤62,000
I1-HE1
≤132,000
I1=LE1+HE1+C
1359.8 I1=1267.8 HE1+1251.4 LE1+192 C+3413 P1
3000
≤P2
≤9000
I2
≤244,000
LE2
≤142000年
I2 = le2 + he2
1359.8 I2=1267.8 HE2+1251.4 LE2+3413 P2
HPS = i1 + i2 + bf1
HPS = c + MPS + LPS
LPS = le1 + le2 + bf2
MPS=HE1+HE2+BF1-BF2
P1 + p2 + pp
≥24,550
EP +页
≥12,000
议员
≥271,536
脂多糖
≥100623年
所有变量均为正值。
要解决优化问题,请执行以下步骤。
视频中还显示了这些步骤优化建模,第2部分:转换为求解形式.
要找到此问题的适当解决方案,请咨询优化决策表. 该表要求您按目标函数类型和约束类型对问题进行分类。对于这个问题,目标函数是线性的,约束是线性的。决策表建议使用linprog
解算器。
如你所见优化工具箱函数处理的问题或者linprog
函数参考页linprog
解决形式的问题
(1) |
fTx意思是由常数组成的行向量f将变量的列向量相乘x.换句话说,
fTx=f(1)x(1) +f(2)x(2) + ... +f(n)x(n),
在哪里n为长度f.
一个x≤b代表线性不等式。一个是一个k-借-n矩阵,k是不等式和n是变量的数量(变量的大小)x).b是长度的向量k.有关更多信息,请参见线性不等式约束.
Aeq x=说真的代表线性等式。Aeq是一个米-借-n矩阵,米等式的个数是和吗n是变量的数量(变量的大小)x).说真的是长度的向量米.有关更多信息,请参见线性等式约束.
磅≤x≤乌兰巴托表示向量中的每个元素x的对应元素必须大于磅,并且必须小于的对应元素乌兰巴托.有关更多信息,请参见绑定约束.
的语法linprog
如函数参考页所示,解算器为
[x fval]=linprog(f,A,b,Aeq,beq,lb,ub);
输入到linprog
解算器是矩阵和向量方程式1.
的方程中有16个变量模型描述. 将这些变量放入一个向量中。变量向量的名称为x在里面方程式1.确定订单,并构建x在变量之外。
下面的代码使用变量名称的单元格数组构造vector。
变量= {I1、I2,‘HE1’,‘合’,‘LE1’,‘LE2’,‘C’,‘BF1’,……BF2, HPS”,“议员”、“有限合伙人”,P1, P2, '页',' EP '};N =长度(变量);% create variables for indexing for v = 1:N结束
执行这些命令将在工作区中创建以下命名变量:
这些命名变量表示组件的索引号x。您不必创建命名变量。视频优化建模,第2部分:转换为求解形式演示如何简单地使用组件的索引号来解决问题x.
的方程中有四个变量有下界,六个变量有上界模型描述.下限:
P1
≥2500
P2
≥3000
议员
≥271,536
脂多糖
≥100623年
.
而且,所有的变量都是正的,这意味着它们的下界是0。
创建下界向量磅
作为0
,然后加上其他四个下界。
lb=零(大小(变量));磅([P1,P2,MPS,LPS])=。。。[2500,3000,271536,100623];
有上界的变量有:
P1
≤6250
P2
≤9000
I1
≤192000年
I2
≤244,000
C
≤62,000
LE2
≤142000
.
创建上界向量作为正
,然后加上六个上界。
乌兰巴托=正(大小(变量));乌兰巴托([P1, P2, I1、I2 C, LE2]) =…(6250, 9000, 192000, 244000, 62000, 142000];
方程中有三个线性不等式模型描述:
I1-HE1
≤132,000
EP +页
≥12,000
P1 + p2 + pp
≥24,550
.
为了使方程的形式一个x≤b,将所有变量放在不等式的左侧。所有这些等式都已具有该形式。在适当的情况下,通过乘以–1,确保每个不等式都是“小于”形式:
I1-HE1
≤132,000
ep -页
≤-12000年
- p1 - p2 - pp
≤-24,550
.
MATLAB中®工作空间,创建一个
矩阵为3乘16的零矩阵,对应于16个变量中的3个线性不等式。创建b
有三个分量的向量。
一个= 0 (16);(1, I1) = 1;(1) HE1) = 1;b (1) = 132000;(2) EP) = 1;(2页)= 1;b (2) = -12000;(3, (P1, P2, PP)) = (1 1 1);b (3) = -24550;
方程组中有八个线性方程组模型描述:
I2 = le2 + he2
LPS = le1 + le2 + bf2
HPS = i1 + i2 + bf1
HPS = c + MPS + LPS
I1=LE1+HE1+C
MPS=HE1+HE2+BF1-BF2
1359.8 I1=1267.8 HE1+1251.4 LE1+192 C+3413 P1
1359.8 I2=1267.8 HE2+1251.4 LE2+3413 P2
.
为了使方程的形式Aeq x=说真的,把所有的变量放到等式的一边。方程成为:
Le2 + he2 - i2 = 0
Le1 + le2 + bf2 - LPS = 0
I1 + i2 + bf1 - HPS = 0
C+MPS+LPS-HPS=0
Le1 + he1 + c - i1 = 0
He1 + he2 + bf1 - bf2 - MPS = 0
1267.8 he1 + 1261.4 le1 + 192 c + 3413 p1 - 1359.8 i1 = 0
1267.8 HE2+1251.4 LE2+3413 P2-1359.8 I2=0
.
现在写Aeq
矩阵与说真的
对应于这些方程的向量。在MATLAB工作区中,创建Aeq
矩阵为8乘16的零矩阵,对应于16个变量中的8个线性方程组。创建说真的
有八个分量的矢量,都是零。
Aeq = 0 (8, 16);说真的= 0 (8,1);Aeq ([LE2 HE2, I2]) = (1 1 1);Aeq (2, [LE1 LE2, BF2,有限合伙人))= (1,1,1,1);Aeq ([I1、I2 BF1, HPS]) = (1, 1, 1, 1);Aeq (4, [C、议员、有限合伙人,HPS]) = (1, 1, 1, 1);Aeq (5, [LE1 HE1 C, I1)) = (1, 1, 1, 1);Aeq(6日[HE1 HE2, BF1 BF2,议员))= [1,1,1,1,1);Aeq(7日[HE1 LE1 C, P1, I1)) =(1267.8、1251.4,192,3413,-1359.8);Aeq (8, [HE2 LE2, P2, I2]) = (1267.8, 1251.4, 3413, -1359.8);
目标函数是
fTx=0.002614 HPS+0.0239 PP+0.009825 EP
.
把这个表达式写成向量f
的乘数x矢量:
f=零(大小(变量));f([HPS PP EP])=[0.002614 0.0239 0.009825];
您现在有了linprog
解算器。调用求解器并以格式化的形式打印输出:
选择= optimoptions(“linprog”、“算法”、“对偶单纯形”);[x fval] = linprog(f,A,b,Aeq,beq,lb,ub,options);fprintf('%12.2f \t%s\ N ',x(d),变量{d}) end fval . txt ('%12.2f \t%s\ N ',x(d),变量{d}) end fval . txt ('%12.2f \t%s\ N ',x(d),变量{d}
结果是:
找到最佳解决方案。136328.74 I1 244000.00 I2 128159.00 HE1 143377.00 HE2 0.00 LE1 100623.00 LE2 8169.74 C 0.00 BF1 0.00 BF2 380328.74 HPS 271536.00 MPS 100623.00 LPS 6250.00 P1 7060.71 P2 11239.29 PP 760.71 EP fval=1.2703e+03
的fval
输出给出目标函数在任何可行点的最小值。
解向量x
是目标函数具有最小值的点。请注意:
BF1
,BF2
和LE1
是0
它们的下界。
I2
是244,000
,它的上界。
的非零分量f
向量是
HPS
- - - - - -380328 .74点
页
- - - - - -11239 .29
EP
- - - - - -760.71
这段视频优化建模,第2部分:转换为求解形式根据原问题给出这些特征的解释。
[1] 埃德加、托马斯·F.和大卫·M·希梅尔布鲁。化学过程的优化。麦克劳希尔,纽约,1988年。