Maxima で綴る数学の旅

紙と鉛筆の代わりに、数式処理システムMaxima / Macsyma を使って、数学を楽しみましょう

-数学- Q.E.の例題 簡単な最適化問題

 

QEの計算アルゴリズムとその応用―数式処理による最適化
 

 上記の本の中にはQ.E.の例題が豊富に載っています。この本ではそれらの例題を、実際にQ.E.処理系を使って解いています。使われている処理系はこの本の著者らが開発しているSynrac (Maple上の追加パッケージ)とMathematicaです。

 

ここでは、それらの例題をQepmax + Qepcad Bの組み合わせを使ってMaxima上で解いてみます。

 

まず最初はこの本のp3に載っている、最初の例題です。x1, x2が下記の条件Cを満たすとき、x1+x2を最適化せよ、というのが最初の問題です。

(%i1) load("qepmax.mac");

$$ \tag{%o1} \verb|/Users/yasube/Programming/qepmax/qepmax.mac| $$

最適化するべきx1+x2にmという変数を割り当てます。

(%i2) G:m=x1+x2;

$$ \tag{%o2} m=\mathrm{x2}+\mathrm{x1} $$

x1, x2が満たす条件をCとして記述します。

(%i3) C: (x2>=0) %and (x1+1>=0) %and (x2-x1^2>=0);

$$ \tag{%o3} \left(\mathrm{x1}+1\geq 0\right) \wedge \left(\mathrm{x2}\geq 0\right) \wedge \left(\mathrm{x2}-\mathrm{x1}^2\geq 0\right) $$

この問題を解くには(%i4)のQ.E.を実行します。GとCを同時に満たすx1, x2が存在するためのmの条件が求まります。

(%i4) qe([[E,x1],[E,x2]],G %and C);

$$ \tag{%o4} 4\,m+1\geq 0 $$

上記の(%o4)がその条件となります。見やすくするために解いてみます。

(%i5) to_poly_solve([%],m);

$$ \tag{%o5} \left[ -\frac{1}{4}<m \right]  \cup \left(\left[ m=-\frac{1}{4} \right] \right) $$

つまりm=x1+x2は \( -\frac{1}{4} \) 以上であることが分かりました。

 

 では \( m=x1+x2= -\frac{1}{4} \)となるx1, x2を求めてみます。

(%i6) qe([ ],G %and C),part(%,2);

$$ \tag{%o6} \left(2\,\mathrm{x1}+1=0\right) \wedge \left(4\,\mathrm{x2}+4\, \mathrm{x1}+1=0\right) $$

(%i7) solve([part(%,1),part(%,2)],[x1,x2]);

$$ \tag{%o7} \left[ \left[ \mathrm{x1}=-\frac{1}{2} , \mathrm{x2}=\frac{1}{4} \right]  \right]  $$