> maximize(x+y, {4*x+2*y <= 10, 3*x+4*y <= 16}, NONNEGATIVE);
> maximize(x+y, {3*x+2*y <= 5, 2*x+4*y <=4});
> z := 2*x1 - x2 + 3*x3;
z := 2x1 - x2 + 3x3> cnts1 := [x2+2*x3 <= 1, 2*x1-4*x2+6*x3 <= 3, -x1+3*x2+4*x3 <= 12];
cnts1 := [x2+2x3 β€ 1, 2x1-4x2+6x3 β€ 3, -x1+3x2+4x3 β€ 12]> sol1 := maximize(z,cnts1,NONNEGATIVE);
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ minimize ΠΈ maximize Π½Π°Π΄ΠΎ Π½Π΅ Π·Π°Π±ΡΠ²Π°ΡΡ, ΡΡΠΎ ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ β Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΠΏΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π΅ΡΡΡ Π² ΡΠ΄ΡΠ΅ ΠΈ ΠΎΠ½ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΠΈΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ. ΠΠ»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΊ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π½Π°Π΄ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ restart.
6.5.4. ΠΡΠΎΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° simplex
Π€ΡΠ½ΠΊΡΠΈΡ basis(C) Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π±Π°Π·ΠΈΡ Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ Π‘. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
> basis([Ρ = 2*z+w, z = 2*y-w]);
[x, z]Π€ΡΠ½ΠΊΡΠΈΡ convexhull(ps) Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠΏΡΠΊΠ»ΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΠΎΡΠ΅ΠΊ ps. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
> convexhull({[0,0], [1,1], [2,-1], [1,1/3],[1,1/2]));
[[0, 0], [2, -1], [1, 1]]ΠΠ»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠ°Π²Π΅Π½ΡΡΠ² ΡΠ»ΡΠΆΠΈΡ ΡΡΠ½ΠΊΡΠΈΡ cterm(C):
> cterm([2*Ρ +y<=6,7*y-z-3=4]);
[6, 7]Π€ΡΠ½ΠΊΡΠΈΡ define zero(C) Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π·Π°Π²ΠΈΡΡΡΠ΅Π΅ ΠΎΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Digits:
> define_zero();
.1000000000 10-7> Digits:=40;
Digits := 40> define_zero();
.1000000000000000000000000000000000000000 10-37> define_zero(1*10^(-10));
.1000000000000000000000000000000000000000 10-9Π€ΡΠ½ΠΊΡΠΈΡ display(C) ΠΈΠΌΠ΅Π΅Ρ Π΅ΡΠ΅ ΠΈ ΡΠΎΡΠΌΡ display(C,[x, Ρ, z]). ΠΠ½Π° Π·Π°Π΄Π°Π΅Ρ Π²ΡΠ²ΠΎΠ΄ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ ΠΈ Π½Π΅ΡΠ°Π²Π΅Π½ΡΡΠ² Π² ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅:
> display({2*x+5*y-z<= 0, 2*w-4*y-z<=2});
Π€ΡΠ½ΠΊΡΠΈΡ dual(f, Π‘, Ρ) ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ: f β Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π‘ β ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π΅ΡΠ°Π²Π΅Π½ΡΡΠ² ΠΈ Ρ β ΠΈΠΌΡ. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΠΏΡΡΠΆΠ΅Π½Π½ΠΎΠ΅ Ρ f Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅:
> dual(Ρ -y,{2*Ρ +3*y<=5,3*Ρ +6*y<=15}, z);
15z1+5z2, {1 β€ 3z1+2z2, -1 β€ 6z1+3z2}Π€ΡΠ½ΠΊΡΠΈΡ feasible ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°Π΄Π°Π½Π° Π² ΡΡΠ΅Ρ ΡΠΎΡΠΌΠ°Ρ :
feasible(Π‘)
feasible(Π‘,vartype)
feasible(Π‘,vartype,'NewC','Transform')
ΠΠ΄Π΅ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ vartype ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ NONNEGATIVE ΠΈΠ»ΠΈ UNRESTRICTED. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΠΌΡΡ ΠΈΠ»ΠΈ Π½Π΅Ρ:
> feasible({2*Ρ +3*y<=5, 3*Ρ +6*y<=15), NONNEGATIVE);
true> feasible({2*Ρ +3*y<=5, 3*Ρ +6*y<=-15}, NONNEGATIVE);
falseΠΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true, ΡΠΎ Π·Π°Π΄Π°Π½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΠΌΠ°, Π° Π΅ΡΠ»ΠΈ false β Π½Π΅ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΠΌΠ°, ΡΠΎ Π΅ΡΡΡ Π½ΠΈ ΠΏΡΠΈ ΠΊΠ°ΠΊΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π½Π΅ ΡΠΏΠΎΡΠΎΠ±Π½Π° ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠΈΡΡ Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΌ Π½Π΅ΡΠ°Π²Π΅Π½ΡΡΠ²Π°ΠΌ ΠΈ ΡΠ°Π²Π΅Π½ΡΡΠ²Π°ΠΌ.
Π€ΡΠ½ΠΊΡΠΈΡ pivot(C, Ρ , eqn) ΠΊΠΎΠ½ΡΡΡΡΠΈΡΡΠ΅Ρ Π½ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ Π³Π»Π°Π²Π½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ:
> pivot({_SL1=5-4*x-3*y,_SL2=4-3*x-4*y),Ρ ,[_SL1=5-4*x-3*y]);
Π€ΡΠ½ΠΊΡΠΈΡ pivoteqn(C, var) Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ Π΄Π»Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π‘:
> pivoteqn((_SL1 = 5-3*Ρ -2*y, _SL2 = 4-2*Ρ -2*y}, Ρ );
[_SL1 = 5 - 3Ρ - 2y]Π€ΡΠ½ΠΊΡΠΈΡ pivotvar(f, List) ΠΈΠ»ΠΈ pivotvar(f) Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΈΠΌΠ΅ΡΡΠΈΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΡ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π΄Π»Ρ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ:
> pivotvar(x1-2*x2+3*x3-x4);
x1> pivotvar(x1+2*Ρ 3-3*Ρ 4, [x4,x3,x1]);
x3Π€ΡΠ½ΠΊΡΠΈΡ ratio(C, Ρ ) Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ, Π·Π°Π΄Π°ΡΡΠΈΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΆΠ΅ΡΡΠΊΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ:
> ratio([SL1=10-3*x-2*y, SL2=8-2*x-4*y], x);
Π€ΡΠ½ΠΊΡΠΈΡ setup ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΡΠΈ ΡΠΎΡΠΌΡ:
setup(Π‘)
setup(Π‘, NONNEGATIVE)
setup(Π‘, NONNEGATIVE, 't')
ΠΠ½Π° ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ Π² Π»Π΅Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ:
> setup({2*Ρ +3*y<=5,3*Ρ +5*y=15));
ΠΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ β standartize(C) β ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΡΠ΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ (Π½Π΅ΡΠ°Π²Π΅Π½ΡΡΠ²) Π² Π½Π΅ΡΠ°Π²Π΅Π½ΡΡΠ²Π° ΡΠΈΠΏΠ° Β«ΠΌΠ΅Π½ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΠΎΒ»:
> standardize({2*Ρ +3*Ρ<=5,3*Ρ +5*Ρ=15});
{2 Ρ + 3 y β€ 5, 3Ρ + 5Ρ β€ 15, -3Ρ -5y β€ -15}6.6. ΠΠΎΠ²ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Optimization Π² Maple 9.5
Π ΡΠΈΡΡΠ΅ΠΌΡ Maple 9.5 Π±ΡΠ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Optimization, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° Π½ΠΎΠ²Π΅ΠΉΡΠΈΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ»ΡΡΡΠ΅Π½Π½ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠ°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°Π΄Π°ΡΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ, Π½ΠΎ ΠΈ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΈ Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΉ Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½Π½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΡΡ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
6.6.1. ΠΠΎΡΡΡΠΏ ΠΊ ΠΏΠ°ΠΊΠ΅ΡΡ Optimization ΠΈ Π΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
ΠΠ°ΠΊΠ΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Optimization Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ:
> with(Optimization);
[ImportΠPS, Interactive, LPSolve, LSSolve, Maximize, Minimize, NLPSolve, QPSolve]Warning, the name changecoords has been redefined
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΏΡΠ°Π²ΠΊΠΈ ΠΏΠΎ ΠΏΠ°ΠΊΠ΅ΡΡ Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
> help(Optimization);
ΠΠ°ΠΊΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΡΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π³ΡΡΠΏΠΏΡ NAG, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΈΡΠ°ΡΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ°ΠΊΠ΅Ρ Π²Π²ΠΎΠ΄ΠΈΡ 8 ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ²Π΅ ΠΈΠ· Π½ΠΈΡ ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΠ° Maximize ΠΈ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΠ° Minimize. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠ°ΠΊΠ΅Ρ ΠΈΠΌΠ΅Π΅Ρ 4 ΡΠ΅ΡΠ°ΡΠ΅Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ:
β’ LPSolve β Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅;
β’ LSSolve β ΡΠ»ΡΡΡΠ΅Π½Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ²;
β’ QPSolve β ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅;
β’ NLPSolve β Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
Π€ΡΠ½ΠΊΡΠΈΡ ImportMPC ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π²Π²ΠΎΠ΄ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ· ΡΠ°ΠΉΠ»Π°, Π° ΡΡΠ½ΠΊΡΠΈΠΉ Interactive ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΌ Maplet-ΠΎΠΊΠ½ΠΎΠΌ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ.
Π‘ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ Optimization ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ ΠΏΠΎ Π΅Π³ΠΎ ΡΠΏΡΠ°Π²ΠΊΠ΅. Π Π΅Π΅ ΡΠ°Π·Π΄Π΅Π»Π΅ Examples Π΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΎΠ±ΡΠΈΡΠ½ΡΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ° β Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΊ ΡΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π°ΡΡΡΡ ΠΊ ΡΡΠ½ΠΊΡΠΈΡΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ° Π² ΡΠΏΡΠ°Π²ΠΊΠ΅. ΠΠ°ΡΠ°Π»ΠΎ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ Π½Π° ΡΠΈΡ. 6.3. Π Π½Π΅ΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ, ΡΠ΅ΡΠ°Π΅ΠΌΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ Optimization β Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅, ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΡΠ½ΠΎΠ΅ ΠΈ Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² (Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½Π°Ρ ΡΠ΅Π³ΡΠ΅ΡΡΠΈΡ).
Π ΠΈΡ. 6.3. ΠΠ°ΡΠ°Π»ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ° Optimization
6.6.2. Π Π°Π±ΠΎΡΠ° Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Minimize ΠΈ Maximize
Π€ΡΠ½ΠΊΡΠΈΠΈ Minimize ΠΈ Maximize ΡΠ»ΡΠΆΠ°Ρ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΌΠΈΠ½ΠΈΠΌΡΠΌΠΎΠ² ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΠΎΠ² ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Ρ ΡΡΠ΅ΡΠΎΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ ΡΠ°ΠΌΡΠΌΠΈ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΡΠΈΡΠ»Π΅Π½Π½ΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ. Π€ΡΠ½ΠΊΡΠΈΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² Π²ΠΈΠ΄Π΅:
Minimize(obj [, constr, bd, opts])
Minimize(opfobj [, ineqcon, eqcon, opfbd, opts])
Maximize(obj [, constr, bd, opts])
Maximize(opfobj [, ineqcon, eqcon, opfbd, opts])
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
β’ obj β Π°Π»Π³Π΅Π±ΡΠ°ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠ΅Π»Π΅Π²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ;
β’ constr β ΡΠΏΠΈΡΠΎΠΊ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΠΈΠΌΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌΠΈ;
β’ bd β ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²ΠΈΠ΄Π° name=range, Π·Π°Π΄Π°ΡΡΠ°Ρ Π³ΡΠ°Π½ΠΈΡΡ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ;
β’ opts β ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎ ΠΈΠ»ΠΈ ΡΠ°Π²Π΅Π½ΡΡΠ²Π° Π²ΠΈΠ΄Π° option=value, Π³Π΄Π΅ option ΠΎΠ΄Π½Π° ΠΈΠ· ΠΎΠΏΡΠΈΠΈ feasibilitytolerance, infinitebound, initialpoint, iterationlimit ΠΈΠ»ΠΈ optimalitytolerance, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Minimize ΠΈΠ»ΠΈ Maximize.
β’ opfobj β ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°, ΡΠ΅Π»Π΅Π²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ;
β’ ineqcon β ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΈΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠΎΡΠ΅Π΄ΡΡ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠΈΠΏΠ° Π½Π΅ΡΠ°Π²Π΅Π½ΡΡΠ²;
β’ eqcon β ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΈΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠΎΡΠ΅Π΄ΡΡ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠΈΠΏΠ° ΡΠ°Π²Π΅Π½ΡΡΠ²;
β’ opfbd β ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠ΅Π΄Π΅Π»ΠΎΠ²; Π³ΡΠ°Π½ΠΈΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ; ΠΡΠΈΠΌΠ΅ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π½ΠΈΠΆΠ΅:
> Maximize(sin(Ρ )/Ρ );
[1., [Ρ =2.93847411867272567 10-11]]> Minimize(Ρ ^2+Ρ^2);
[0., [Ρ =0., Ρ=0.]]> Minimize(sin(Ρ )/Ρ , initialpoint={x=5});
[-0.217233628211221636 , [Ρ =4.49340945792364720 ]]> Maximize(sin(x*y*z));
[1., [x=1.16244735150962364, z=1.16244735150962364, y=1.16244735150962364]]> Minimize(2*Ρ +3*y, {3*Ρ -y<=9, Ρ +y>=2}, assume=nonnegative);
[4., [Ρ =2., y=0.]]ΠΠ· ΡΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΠΈΡΠ΅Π» Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ Ρ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΡΡ (ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π΅Π΅ Π±ΡΠ»ΠΎ Π±Ρ ΡΠΊΠ°Π·Π°ΡΡ Ρ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½ΠΎΠΉ ΠΈΠ»ΠΈ ΡΠ°Π·ΡΡΠ΄Π½ΠΎΡΡΡΡ). ΠΡΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π³ΡΡΠΏΠΏΡ NAG ΠΈ ΡΠ΅ΡΠ°ΡΠ΅Π»ΠΈ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½ΠΈΠΆΠ΅.
6.6.3. ΠΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ β LPSolve
ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅ Optimization Π²Π²Π΅Π΄Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡ:
LPSolve(obj [, constr, bd, opts])
ΠΠ½Π° ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
β’ obj β Π°Π»Π³Π΅Π±ΡΠ°ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΡΠ΅Π»Π΅Π²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ;
β’ constr β ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΈΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ;
β’ bd β ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²ΠΈΠ΄Π° name=range, Π·Π°Π΄Π°ΡΡΠ°Ρ Π³ΡΠ°Π½ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ;
β’ opts β ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎ ΠΈΠ»ΠΈ ΡΠ°Π²Π΅Π½ΡΡΠ²Π° Π² ΡΠΎΡΠΌΠ΅ option=value, Π³Π΄Π΅ option ΠΎΠ΄Π½Π° ΠΈΠ· ΠΎΠΏΡΠΈΠΉ assume, feasibilitytolerance, infinitebound, initialpoint, iterationlimit ΠΈΠ»ΠΈ maximize, ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ LPSolve.
ΠΡΠΈΠΌΠ΅Ρ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½ Π½Π° ΡΠΈΡ. 6.4. ΠΠ΄Π΅ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΡΠ΅Π»Π΅Π²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ -3x-2Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Ρ ΠΈ Ρ. Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° ΡΠ΅Ρ Π½ΠΈΠΊΠ° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
Π ΠΈΡ. 6.4. ΠΡΠΈΠΌΠ΅Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π΄Π°Π²Π°ΡΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π² ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅:
LPSolve(c [, lc, bd, opts])
ΠΠ΄Π΅ΡΡ Ρ Π²Π΅ΠΊΡΠΎΡ, Π·Π°Π΄Π°ΡΡΠΈΠΉ ΡΠ΅Π»Π΅Π²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π±ΡΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π²ΡΡΠ΅. ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ LPSolve Π² ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π½ΠΈΠΆΠ΅: