主要内容

建立一个线性规划,基于解算器

将问题转换为解算器形式

此示例演示如何将问题从数学形式转换为优化工具箱™ 使用基于解算器的方法的解算器语法。虽然问题是一个线性规划,但这些技术适用于所有解算器。

问题中的变量和表达式代表了Edgar和Himmelblau的一个例子中的化工厂运行模型[1].有两个视频描述了这个问题。

本示例的其余部分仅涉及将问题转换为解算器语法。这个例子紧跟着视频优化建模,第2部分:转换为求解器形式。视频和示例之间的主要区别在于,此示例显示了如何使用命名变量或索引变量,这些变量类似于散列键。此区别在将变量组合成一个向量.

模型描述

录像带优化数学建模,第1部分建议将问题转化为数学形式的一种方法是:

  1. 对问题有一个全面的了解

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

  3. 识别(名称)变量

  4. 确定约束条件

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

  6. 用数学符号指定所有数量

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

有关本节中变量的含义,请参阅视频优化数学建模,第1部分.

优化问题是以所有其他表达式为约束条件,使目标函数最小化。

目标函数是:

0.002614 HPS+0.0239 PP+0.009825 EP.

制约因素包括:

2500P16250
I1192,000
C62,000
I1-HE1132,000
I1=LE1+HE1+C
1359.8 I1=1267.8 HE1+1251.4 LE1+192 C+3413 P1
3000P29000
I2244,000
LE2142,000
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+PP24,550
EP+PP12,000
议员271,536
脂多糖100,623
所有变量均为正值。

求解方法

要解决优化问题,请执行以下步骤。

视频中也显示了这些步骤优化建模,第2部分:转换为求解器形式.

选择一个解算器

要找到此问题的适当解决方案,请咨询优化决策表. 该表要求您按目标函数类型和约束类型对问题进行分类。对于这个问题,目标函数是线性的,约束是线性的。决策表建议使用线性规划问题解算器。

正如你在书中看到的优化工具箱函数处理的问题或者线性规划问题函数参考页线性规划问题解算器解决表单的问题

x F T x 以致 { A. x B , A. E Q x = B E Q , L B x U B . (1)
  • FTx表示常数的行向量F将变量的列向量相乘x. 换句话说,,

    FTx=F(1)x(1) +F(2)x(2) + ... +F(N)x(N),

    哪里N长度是多少F.

  • A xB表示线性不等式。A.是一个K-借-N矩阵,在哪里K是不等式和N是变量的数量(变量的大小)x).B是长度的向量K. 有关详细信息,请参阅线性不等式约束.

  • Aeq x=贝基表示线性等式。Aeq是一个M-借-N矩阵,在哪里M是相等数和N是变量的数量(变量的大小)x).贝基是长度的向量M. 有关详细信息,请参阅线性等式约束.

  • x乌兰巴托表示向量中的每个元素x必须大于的对应元素,并且必须小于的对应元素乌兰巴托. 有关详细信息,请参阅约束条件.

的语法线性规划问题如函数参考页所示,解算器是

[x fval]=linprog(f,A,b,Aeq,beq,lb,ub);

输入到线性规划问题解算器是中的矩阵和向量方程式1.

将变量组合成一个向量

方程中有16个变量模型描述. 将这些变量放入一个向量中。变量向量的名称为x在里面方程式1.确定订单,并构建x在变量之外。

下面的代码使用变量名称的单元格数组构造向量。

变量={'I1','I2','HE1','HE2','LE1','LE2','C','BF1',…'BF2','HPS','MPS','LPS','P1','P2','PP','EP'};N=长度(变量);%为v=1创建索引变量:N eval([variables{v},'=',num2str(v),';']);终止

执行这些命令将在工作区中创建以下命名变量:

这些命名变量表示组件的索引号x。您不必创建命名变量。视频优化建模,第2部分:转换为求解器形式演示如何简单地使用组件的索引号来解决此问题x.

写绑定约束

方程中有四个变量有下界,六个变量有上界模型描述.下限:

P12500
P23000
议员271,536
脂多糖100,623.

而且,所有变量都是正的,这意味着它们的下限为零。

创建下限向量作为0,然后添加其他四个下限。

lb=零(大小(变量));磅([P1,P2,MPS,LPS])=。。。[2500,3000,271536,100623];

具有上界的变量为:

P16250
P29000
I1192,000
I2244,000
C62,000
LE2142000.

创建上界向量作为Inf,然后添加六个上限。

ub=Inf(大小(变量));ub([P1,P2,I1,I2,C,LE2])=。。。[6250,9000,192000,244000,62000,142000];

写线性不等式约束

方程中有三个线性不等式模型描述:

I1-HE1132,000
EP+PP12,000
P1+P2+PP24,550.

为了使方程的形式A xB,将所有变量放在不等式的左侧。所有这些等式都已具有该形式。在适当的情况下,通过乘以–1,确保每个不等式都是“小于”形式:

I1-HE1132,000
-EP-PP-12,000
-P1-P2-PP-24,550.

在MATLAB中®工作区,创建A.矩阵为3乘16的零矩阵,对应于16个变量中的3个线性不等式。创建B三分量向量。

A=零(3,16);A(1,I1)=1;A(1,HE1)=-1;b(1)=132000;A(2,EP)=-1;A(2,PP)=-1;b(2)=-12000;A(3,[P1,P2,PP])=[-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+1251.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(1[LE2,HE2,HE2,I2)和I2)1[1,1,-1];Aeq(2[LE1,LE1,LE1,LE2,BF2,LP2,BF2,LP2,LPS)2[1,1,1,1,1,(1,8,16;16;beq(3[I1[I1,1,I1,I1,I1,I1,I2,BF1,BF1,BF1,BF1,HP1,HPS,HPS)3,(3,(3[1[1[1,1,1,1,1,1,[1,1,1,1,1,1,1,1,[1,1,1,1,1,[1,1,1,1,1,1,[1,1,1,1,1,1,1,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 LE1,C,P1,I1])=[1267.81251.41923413,-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解决问题

您现在有了线性规划问题解算器。调用解算器并以格式化形式打印输出:

options=options('linprog','Algorithm','dual-simplex');[x fval]=linprog(f,A,b,Aeq,beq,lb,ub,options);对于d=1:N fprintf('%12.2f\t%s\N',x(d),变量{d})end fval

结果是:

找到最佳解决方案。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

检查解决方案

这个未来值输出给出目标函数在任何可行点的最小值。

解向量x是目标函数具有最小值的点。请注意:

  • BF1,氟化硼LE10,它们的下限。

  • I2244,000,它的上限。

  • 函数的非零分量F向量是

    • HPS380,328.74

    • 聚丙烯11,239.29

    • EP760.71

录像带优化建模,第2部分:转换为求解器形式根据原始问题对这些特征进行解释。

参考文献

[1] 埃德加、托马斯·F.和大卫·M·希梅尔布鲁。化学过程的优化。麦克劳希尔,纽约,1988年。

相关话题