主要内容

建立了一个线性规划,具体问题具体分析

将问题转化为求解器的形式

这个例子展示了如何将一个线性问题从数学形式转化为优化工具箱™解决语法运用具体问题具体分析的方法。

问题中的变量和表达式表示的模型操作一家化工厂,埃德加和库普的一个例子[1]。两个相关视频描述这个问题。

这个例子中,密切关注第2部分的视频,致力于将解决语法问题。

模型描述

第1部分的视频显示以下方法将问题转化为数学形式:

  1. 得到一个整体的问题。

  2. 确定目标(最大化或最小化)。

  3. 识别(名字)的变量。

  4. 确定约束条件。

  5. 确定哪些变量可以控制。

  6. 指定所有数量的数学符号。

  7. 检查模型的完整性和正确性。

意义的变量在本节中,看到第1部分视频。

最小化目标函数优化问题,受到其他表达式作为约束条件。

目标函数是:

HPS 0.002614 + 0.0239 + 0.009825 EP页

约束:

2500年P16250年
I1192000年
C62000年
I1 - HE1132000年
I1 = LE1 + HE1 + C
1359.8 I1 = 1267.8 HE1 + 1251.4 LE1 + 192 C + 3413 P1
3000年P29000年
I2244000年
LE2142000年
I2 = LE2 +何
1359.8 I2 = 1267.8 + 1251.4 LE2 + 3413 P2
HPS = I1和I2 + BF1 +
HPS =议员C + +有限合伙人
有限合伙人= LE1 + LE2 + BF2
议员= HE1 + + BF1 - BF2
P1和P2 + PP24550年
EP +页12000年
国会议员271536年
有限合伙人100623年
所有的变量都是正的。

第一个解决方法:创建优化变量为每个变量的问题

第一个解决方案方法涉及创建一个优化变量为每个变量的问题。当你创建一个变量,包括他们的界限。

P1 = optimvar (“P1”,下界的,2500,“UpperBound”,6250);P2 = optimvar (“P2”,下界的,3000,“UpperBound”,9000);I1 = optimvar (“I1”,下界的0,“UpperBound”,192000);I2 = optimvar (“I2”,下界的0,“UpperBound”,244000);C = optimvar (“C”,下界的0,“UpperBound”,62000);LE1 = optimvar (“LE1”,下界的,0);LE2 = optimvar (“LE2”,下界的0,“UpperBound”,142000);HE1 = optimvar (“HE1”,下界的,0);何= optimvar (“何”,下界的,0);HPS = optimvar (“HPS”,下界的,0);议员= optimvar (“议员”,下界的,271536);有限合伙人= optimvar (“有限合伙人”,下界的,100623);BF1 = optimvar (BF1的,下界的,0);BF2 = optimvar (“BF2”,下界的,0);EP = optimvar (“EP”,下界的,0);页= optimvar (“页”,下界的,0);

创建问题和客观

容器创建一个优化问题。包括问题的目标函数。

linprob = optimproblem (“目标”,0.002614 * HPS + 0.0239 *页+ 0.009825 * EP);

创建和包括线性约束

表达式的问题包含三个线性不等式:

I1 - HE1132000年
EP +页12000年
P1和P2 + PP24550年
(1)

创建这些不等式约束,包括他们的问题。

linprob.Constraints。cons1 = I1 - HE1 < = 132000;linprob.Constraints。cons2 = EP + PP > = 12000;linprob.Constraints。cons3 = P1 + P2 + PP > = 24550;

这个问题有八个线性等式:

I2 = LE2 +何
有限合伙人= LE1 + LE2 + BF2
HPS = I1和I2 + BF1 +
HPS =议员C + +有限合伙人
I1 = LE1 + HE1 + C
议员= HE1 + + BF1 - BF2
1359.8 I1 = 1267.8 HE1 + 1251.4 LE1 + 192 C + 3413 P1
1359.8 I2 = 1267.8 + 1251.4 LE2 + 3413 P2
(2)

包括这些约束。

linprob.Constraints。econs1 = LE2 + HE2 = = I2;linprob.Constraints。econs2 = LE1 + LE2 + BF2 = =有限合伙人;linprob.Constraints。econs3 = I1和I2 + BF1 = + = HPS;linprob.Constraints。econs4 = C +议员+ LPS = = HPS;linprob.Constraints。econs5 = LE1 + HE1 + C = = I1; linprob.Constraints.econs6 = HE1 + HE2 + BF1 == BF2 + MPS; linprob.Constraints.econs7 = 1267.8*HE1 + 1251.4*LE1 + 192*C + 3413*P1 == 1359.8*I1; linprob.Constraints.econs8 = 1267.8*HE2 + 1251.4*LE2 + 3413*P2 == 1359.8*I2;

解决问题

制定完成的问题。解决问题用解决

linsol =解决(linprob);
找到最优解。

检查解决方案

评估目标函数。(这个值还可以当你第一次电话解决)。

评估(linprob.Objective linsol)
ans = 1.2703 e + 03

核电站的成本最低的方法操作成本1207 .30美元。

检查变量值的解决方案。

台= struct2table (linsol)
台= 1×16表BF1 BF2 C EP HE1 HE2 HPS I1 I2 LE1 LE2有限合伙人议员P1 P2 PP中国画交__________ __________ __________ __________ ________ ___ _____ _____ _____ _____ _____ _____ 0 0 8169.7 760.71 1.2816 3.8033 1.4338 e + e + 05年05年1.3633 e + e + 05年05年2.44 1.0062 e + e + 05 0 05年1.0062 2.7154 e + e + 05年05 6250 7060.7 11239

这张桌子太大容易查看其内容。垂直堆栈变量安排他们。

var = {“P1”,“P2”,“I1”,“I2”,“C”,“LE1”,“LE2”,“HE1”,“何”,“HPS”,“议员”,“有限合伙人”,BF1的,“BF2”,“EP”,“页”};outputvars =堆栈(资源描述、var、“NewDataVariableName”,“Amt”,“IndexVariableName”,“Var”)
outputvars = 16×2表Var Amt ___ __________ P1 6250 P2 7060.7 I1 1.3633 e + 05 I2 2.44 e + 05 C 8169.7 LE1 0 LE2 1.0062 e + 05 HE1 1.2816 e + 05 HE2 1.4338 e + 05 HPS 3.8033 e + 05年议员2.7154 e + 05有限合伙人1.0062 e + 05 BF1 BF2 0 EP 11239页760.71
  • BF1,BF2,LE10,他们的下界。

  • I2244000年,其上界。

  • 目标函数的非零组件(成本)

    • HPS- - - - - -380328 .74点

    • - - - - - -11239 .29

    • EP- - - - - -760.71

第2部分视频解释这些特征的原始问题。

第二个解决方案方法:创建一个优化变量和指标

或者,您可以解决这个问题用一个优化变量指标变量的名称问题。这种方法使您能够给一个下界的0到所有问题变量。

var = {“P1”,“P2”,“I1”,“I2”,“C”,“LE1”,“LE2”,“HE1”,“何”,“HPS”,“议员”,“有限合伙人”,BF1的,“BF2”,“EP”,“页”};x = optimvar (“x”var,下界的,0);

设置变量范围

包括使用点符号的变量的取值范围。

x (“P1”)。下界= 2500;x (“P2”)。下界= 3000;x (“议员”)。下界= 271536;x (“有限合伙人”)。下界= 100623;x (“P1”)。UpperBound = 6250;x (“P2”)。UpperBound = 9000;x (“I1”)。UpperBound = 192000;x (“I2”)。UpperBound = 244000;x (“C”)。UpperBound = 62000;x (“LE2”)。UpperBound = 142000;

创建问题,线性约束和解决方案

剩下的问题设置类似于使用分离变量设置。不同之处在于,而不是解决一个变量的名字,等P1使用索引,你解决它,x (P1)

创建问题的对象,包括线性约束和解决这个问题。

linprob = optimproblem (“目标”,0.002614 * x (“HPS”)+ 0.0239 * x (“页”)+ 0.009825 * x (“EP”));linprob.Constraints。cons1 = x (“I1”)- - - x (“HE1”)< = 132000;linprob.Constraints。cons2 = x (“EP”)+ x (“页”)> = 12000;linprob.Constraints。cons3 = x (“P1”)+ x (“P2”)+ x (“页”)> = 24550;linprob.Constraints。econs1 = x (“LE2”)+ x (“何”)= = x (“I2”);linprob.Constraints。econs2 = x (“LE1”)+ x (“LE2”)+ x (“BF2”)= = x (“有限合伙人”);linprob.Constraints。econs3 = x (“I1”)+ x (“I2”)+ x (BF1的)= = x (“HPS”);linprob.Constraints。econs4 = x (“C”)+ x (“议员”)+ x (“有限合伙人”)= = x (“HPS”);linprob.Constraints。econs5 = x (“LE1”)+ x (“HE1”)+ x (“C”)= = x (“I1”);linprob.Constraints。econs6 = x (“HE1”)+ x (“何”)+ x (BF1的)= = x (“BF2”)+ x (“议员”);linprob.Constraints。econs7 = 1267.8 * x (“HE1”)+ 1251.4 * x (“LE1”)+ 192 * x (“C”)+ 3413 * x (“P1”)= = 1359.8 * x (“I1”);linprob.Constraints。econs8 = 1267.8 * x (“何”)+ 1251.4 * x (“LE2”)+ 3413 * x (“P2”)= = 1359.8 * x (“I2”);[linsol, fval] =解决(linprob);
找到最优解。

检查索引解决方案

检查解决方案作为垂直表。

台=表(var ', linsol.x ')
台表Var1 = 16×2 Var2 _____ _____“P1”6250“P2”7060.7“I1”1.3633 e + 05 I2的2.44 e + 05 ' C ' 8169.7 ' LE1 ' 0 ' LE2 1.0062 e + 05 ' HE1 1.2816 e + 05“何”1.4338 e + 05的HPS 3.8033 e + 05年的议员们2.7154 e + 05“有限合伙人”1.0062 e + 05 BF1的0“BF2”0“EP”760.71页11239

参考书目

[1]埃德加·托马斯·F。,David M. Himmelblau.化工过程的优化。纽约:麦格劳-希尔,1987年。

相关的话题