主要内容

이번역번역이지는최신내용을담고담고않습니다않습니다。최신최신내용을영문영문으로여기를클릭클릭

선형계획설정하기,솔버기반

문제문제를솔버형식형식으로변환

이예제에서는솔버기반접근법을사용하여문제를수학형식형식优化工具箱™솔버구문으로변환하는방법을줍니다줍니다줍니다보여줍니다줍니다줍니다줍니다줍니다줍니다。이문제는선형계획이지만이기법은모든솔버에적용됩니다。

문제에사용된변수와표현식은에드거(埃德加)및힘멜블라우(库普)의문헌[1]의의에서화학공장을가동하는모델을。문제를설명하는두개비디오비디오가있습니다。

  • 数学建模与优化,第1部分에서는문제를그림형식으로보여줍니다。이비디오비디오에서는그림모델설명에에대한수학표현식표현식을생성방법을보여보여하는방법을보여

  • 优化建模,第2部分:转换为求解器에서는이러한수학표현식을优化工具箱솔버구문으로변환하는방법을다룹니다。이비디오에서는문제를푸는방법과결과를해석하는방법을보여줍니다。

이예제의의나머지부분부분에서문제를솔버구문으로변환하는에대해서만만적으로으로으로이예제예제는优化建模,第2部分:转换为求解器에서도볼수있습니다。비디오와예제의주요차이점은이예제에서는해시키와유사한명명된변수(또는인덱스변수)를사용하는방법을보여준다는점입니다。이러한차이점은여러변수를하나의벡터로결합하기에나와있습니다。

모델설명

비디오数学建模与优化,第1部分에서는문제를적형식변환변환하는중하나는다음이있다있다소개합니다。

  1. 문제를전반적으로파악

  2. 목표식별(최대화또는최소화)

  3. (이름)변수식별

  4. 제약조건식별

  5. 제어할수있는변수확인

  6. 모든모든수량을수학수학표기법으로

  7. 모델이완전하고정확한지확인

이섹션에서변수가가지는의미비디오数学建模与优化,第1部分을을하십시오。

최적화문제는목적함수최소화하는것이며,다른다른표현식이제약제약으로적용。

목적함수는다음과같습니다。

0.002614 HPS + 0.0239 PP + 0.009825 EP

제약조건은다음과같습니다。

2500≤.P1≤.6250.
I1≤.192,000
C≤.62000年
I1 - He1.≤.132,000.
I1 = le1 + he1 + c
1. i1 = 1267.8 he1 + 1251.4 le1 + 192 c + 3413 p1
3000.≤.P2≤.9000
I2≤.244,000.
LE2≤.142,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 + PP24550年
EP + PP.12,000
议员271536年
有限合伙人100,623
모든변수는양수입니다。

풀이방법

이최적화문제를풀려면다음의단계를따르십시오。

이단계는비디오优化建模,第2部分:转换为求解器에서도볼수있습니다。

솔버선택하기

이문제에에적합한솔버를솔버를최적화의사결정표항목을참조하십시오。이표에서는목적함수유형과제약조건유형을기준으로문제를분류하도록요구합니다。이문제에서는목적함수와제약조건이모두선형입니다。의사결정표를따르면linprog솔버를사용하면됩니다。

优化工具箱函数处理的问题또는linprog무료와이파이에서볼수있듯이linprog솔버는다음형식의문제풉니다풉니다。

X F T. X 这样 { 一种 X ≤. B. 一种 E. 问: X = B. E. 问: L. B. ≤. X ≤. B. (1)
  • FT.Xf로는상수구성된행벡터와변x로수구성된열벡터를곱한값을의미합니다。즉,다음과같습니다。

    FT.x = f(1)x(1)+ f(2)x(2)+ ... + f(n)x(n),

    f n은여기서의길이입니다。

  • A x≤b은선형부등식을나타냅니다。는k×n행렬이고,여기k서는부등식의개수이며n은변수의개수(x의크기)입니다。k b는길이가인벡터입니다。자세한내용은선형부등식제약조건항목을참조하십시오。

  • x = beq은선형등식을나타냅니다。aeq는m×n행렬이고,여기여기m은등식의개수이며n은변수의(x의크기)입니다beq는길이가m인벡터입니다。자세한내용은선형등식제약조건항목을참조하십시오。

  • lb≤x≤ub은벡터x의각요소가LB의대응하는요소보다하고하고하고하고의대응하는하는작아야함을의미자세한내용은범위제약조건항목을참조하십시오。

함수도움말페이지에에표시된것linprog솔버의구문은다음과같습니다。

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

linprog솔버에대한입력값은수식1에나와있는행렬과벡터입니다。

여러변수를하나의벡터로결합하기

모델설명의방정식에는16개의변수가있습니다。이변수들을을하나의벡터벡터에。수식1에서변수로구성된벡터의이름은x입니다。순서를결정하고변수에서x의성분을생성합니다。

다음코드는변수의이름으로구성된셀형배열을사용하여벡터를생성합니다。

变量= {'i1','i2','he1','he2','le1','le2','le2','c','bf1','bf2','bf2','hps','mps','lps','p1','p2','pp','ep'};n =长度(变量);%创建v = 1:n eval的索引变量([变量{v}','=',num2str(v),';');结尾

다음명령을실행하면작업공간에다음과같은명명된변수가생성됩니다。

이러한명명명명된변수변수는성분에에대한번호를명명된변수를만들지됩니다됩니다。비디오优化建模,第2部分:转换为求解器에서는x의성분에대한인덱스번호를사용하여간단하게문제를푸는방법을보여줍니다。

범위제약조건작성하기

모델설명의의방정식에는하한하한값갖는갖는갖는개의변수와상한상한을갖는갖는갖는갖는갖는의변수가있습니다하한값은다음과같습니다。

P12500
P23000.
议员271536年
有限合伙人100,623

또한,모든변수는양수。이는변수변수의이0임을의미합니다。

하한벡터0.으로으로구성된벡터로벡터로만든후위의4개를추가합니다。

磅= 0(大小(变量));磅([P1, P2,国会议员,有限合伙人])=…(2500、3000、271536、100623);

상한이있는변수는다음과。

P1≤.6250.
P2≤.9000
I1≤.192,000
I2≤.244,000.
C≤.62000年
LE2≤.142000

상한벡터를로구성된벡터로만든후위의상한6개를추가합니다。

UB = INF(大小(变量));UB([P1,P2,I1,I2,C,LE2])= ... [6250,9000,192000,244000,62000,142000];

선형부등식제약조건작성하기

모델설명의방정식에는3개의선형부등식이있습니다。

I1 - He1.≤.132,000.
EP + PP.12,000
P1 + P2 + PP24550年

一个x≤b.형식의방정식방정식을얻으려면얻으려면변수를부등식의의좌변에에위의모든방정식은이미이형식을가집니다。필요한경우,-1을곱하여각이“보다작음”형식이되도록해야합니다。

I1 - He1.≤.132,000.
-EP - PP.≤.-12,000.
-P1 - P2 - PP≤.-24,550.

马铃薯®작업공간에서一种행렬을16개변수에대한3개의선형부등식에해당하는3×16영행렬로만듭니다。세개의성분을갖는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,-1];B(3)= -24550;

선형등식제약조건작성하기

모델설명의방정식에는8개의선형이있습니다。

I2 = Le2 + He2
LPS = LE1 + LE2 + BF2
HPS = i1 + i2 + bf1
HPS = C + MPS + LPS
I1 = le1 + he1 + c
MPS = HE1 + HE2 + BF1 - BF2
1. i1 = 1267.8 he1 + 1251.4 le1 + 192 c + 3413 p1
1359.8 i2 = 1267.8 he2 + 1251.4 le2 + 3413 p2

AEQ X = BEQ형식의방정식방정식을얻으려면얻으려면변수를방정식의의한쪽변에위의방정식이다음과다음과이됩니다。

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.행렬을16개변수에대한8개의선형방정식에하는하는8×16영행렬로만듭니다。8개의성분이모두0인贝卡벡터를만듭니다。

AEQ = Zeros(8,16);Beq =零(8,1);AEQ(1,[Le2,He2,I2])= [1,1,-1];AEQ(2,[LE1,LE2,BF2,LPS])= [1,1,1,-1];AEQ(3,[I1,I2,BF1,HPS])= [1,1,1,-1];AEQ(4,[C,MPS,LPS,HPS])= [1,1,1,-1];AEQ(5,[Le1,He1,C,I1])= [1,1,1,-1];AEQ(6,[HE1,HE2,BF1,BF2,MPS])= [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];

목적함수작성하기

목적함수는다음과같습니다。

FT.X =0.002614 HPS + 0.0239 PP + 0.009825 EP

이표현식을x벡터의승수구성된벡터F로작성합니다。

f = 0(大小(变量));f([HPS PP EP]) = [0.002614 0.0239 0.009825];

linprog를사용하여문제풀기

이제linprog솔버에필요한입력값얻었습니다얻었습니다。다음과같이솔버를솔버를호출하고서식지정된으로으로출력값을에출력출력출력출력출력

选项= Optimoptions('linprog','算法','dual-simplex');[x fval] = Linprog(F,A,B,AEQ,BEQ,LB,UB,选项);对于d = 1:n fprintf('%12.2f \ t%s \ n',x(d),变量{d})结束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

해검토하기

fval.출력값은모든실현가능점에서에서목적함수의최솟값을제공

해벡터X는목적함수가최솟값을가지는점입니다。이제다음과같은동작이일어나게됩니다。

  • BF1.BF2.LE10.,즉하한입니다。

  • I2244,000.,즉상한입니다。

  • F0벡터의이아닌성분은다음과같습니다。

    • HPS.-380,328.74

    • PP.-11239 .29

    • EP.-760.71.

비디오优化建模,第2部分:转换为求解器에서는원래문제측면에서이러한특성에대한해석을제공합니다。

참고문헌

[1] Edgar,Thomas F.和David M. Hemmelblau。化学过程的优化。麦格劳山,纽约,1988年。

관련항목