シンプレックス法で線形計画問題(最大化問題)を解くプログラムです。一度に最適解を求めることも、 ステップを追って求めることも可能です。
(必要ならば)「データの入力」タブを表示し、(必要ならば)変数の個数、式の本数を変更し「変更」ボタンを押す。このプログラムは最大化問題を解くプログラムなので、最小化問題を解く場合はあらかじめ目的関数を-1倍して最大化問題に変更しておくこと。制約式の係数と定数項を入力する。非負変数でない場合は「非負変数」のチェックマークをはずす。制約式のタイプとして、「$\le$」、「$\ge$」、「$=$」のどれかを選ぶ。目的関数の係数は一番下の行に入力する。入力できる係数は有理数までである。10.6、-5/6、等、小数点数、分数(帯分数ではなく仮分数)を入力できる。
「結果(経過)の表示」タブを表示する。(必要ならば)余裕変数等を自動的に追加して最初のシンプレックス表を求め、この時点での状況(最適解、非有界、等)がステータスバーに表示される。「解く」ボタンを押せば、解が求まる。「ステップ実行」がチェックされていれば、シンプレックス法を1ステップずつ実行する。
次の線形計画問題(「線形数学」竹内啓著、培風館、p.37より)を解く。
(必要ならば)「データの入力」タブを表示して、変数の個数を2個、式の本数を3本に変更し、データを入力する。「結果(経過)の表示」タブを表示すると、
余裕変数(SL)と余剰変数(SU)が追加され、最初のシンプレックス表が表示される。ステータスバーにより、実行可能解を探そうとすること、3行1列がピボットであることが分かる。ここでは、「ステップ実行」のチェックをはずし、答えを求める。「解く」ボタンを押すと、
となり、ステータスバーにより、実行不可能であることが分かる。
次の線形計画問題を解く。
(必要ならば)「データの入力」タブを表示して、データを入力する。「結果(経過)の表示」タブを表示すると、
余裕変数が追加され、最初のシンプレックス表が表示される。ステータスバーにより、実行可能であり、最適解を探そうとすること、2行4列がピボットであることがわかる。ここでは、「ステップ実行」のチェックをはずし、答えを求める。「解く」ボタンを押すと、
となり、ステータスバーにより、非有界であることが分かる。
次の線形計画問題(”Cooperative Game Theory and Applications” by Imma Curiel, p.21より)を解く。
(必要ならば)「データの入力」タブを表示して、変数の個数を2個、式の本数を3本に変更し、データを入力する。「結果(経過)の表示」タブを表示すると、
余裕変数が追加され、最初のシンプレックス表が表示される。ステータスバーにより、実行可能であること、最適解を探そうとしていること、1行1列がピボットであることが分かる。ここでは、「ステップ実行」のチェックをはずし、答えを求める。「解く」ボタンを押すと、
となり、ステータスバーにより、最適解が求まり、最大値は26、500であることが分かる。表を読むことにより、x1 =65、x2 =90の時、最大値が26,500であり、その時の双対変数(潜在価格)の値が0、21+3/7、7+1/7であることが分かる。
次の線形計画問題(「線型不等式とその応用」長堀長慶著、岩波書店、p.73より)を解く。
(必要ならば)「データの入力」タブを表示して、変数の個数を7個、式の本数を4本に変更し、データを入力する。
「結果(経過)の表示」タブを表示すると、
最初のシンプレックス表が表示される。ステータスバーにより、実行可能解を探そうとしていること、4行5列がピボットであることが分かる。ここでは、(必要ならば)「ステップ実行」のチェックし、シンプレックス法を1ステップずつ実行する。「解く」ボタンを必要な回数だけ押す。
まず、実行可能になり、最適解を探そうとしていること、および、ピボットが3行4列であることが分かり、次に 最適解が求まる。x1 =8、x2 =1、x3 =0、x4 =8、x5 =2、x6 =x7 =0の時、最大値2.7である。(上記のシンプレックス表ではピボットの選び方が幸運だったため、最右列がゼロにならなかった。しかし、最初のシンプレックス表で、ピボットを2行7列にすれば、最右列にゼロが現れる。)
次の線形計画問題(「線形数学」竹内啓著、培風館、p.33より)を解く。
(必要ならば)「データの入力」タブを表示して、変数の個数を2個、式の本数を3本に変更し、データを入力する。「結果(経過)の表示」タブを表示すると、
余裕変数が追加され、最初のシンプレックス表が表示される。ステータスバーにより、実行可能であること、最適解を探そうとしていること、3行1列がピボットであることが分かる(2行1列になる場合もある)。ここでは、(必要ならば)「ステップ実行」のチェックし、シンプレックス法を1ステップずつ実行する。「解く」ボタンを必要な回数だけ押すと、
となり、x1 =1/2、x2 =3/4の時、最大値5/4であること、その時の双対変数(潜在価格)の値が、1/4、1/4、0であることが分かる。
次の行列ゲーム(”Game Theory” by Owen, p54より)を解く。
これを解くには、次の線形計画問題を解けばよい。
(必要ならば)変数の個数を4個、式の本数を5本に変更し、上記のデータを入力する。変数x4 の「非負変数」のチェックをはずす。「結果(経過)の表示」タブを表示すると、
自由変数x4 が2個の非負変数に分離され、余裕変数が追加され、最初のシンプレックス表が表示される。ステータスバーにより、実行可能であり、最適解を探そうとしていること、ピボットが3行4列であることが分かる。ここでは「ステップ実行」のチェックをはずし、解を求める。「解く」ボタンを押すと、
となり、プレイヤー1の最適戦略が(1/8, 1/2, 3/8)であり、ゲームの値が3+1/4であることが分かる。また、プレイヤー2の最適戦略が(1/12, 5/12, 1/2, 0)であることも分かる。
次の割当問題(”Cooperative Game Theory and Applications” by Imma Curiel, p.54より)を解く。
(必要ならば)変数の個数を9個、式の本数を6本に変更し、上記のデータを入力する。
「結果(経過)の表示」タブを表示すると
となり、最初のシンプレックス表が表示される。ステータスバーにより、実行可能解を探そうとしていること、最初のピボットが1行5列であることが分かる。ここでは(必要ならば)「ステップ実行」をチェックして解を求める。「解く」ボタンを必要な回数だけ押す。
となり、x1 =0、x2 =0、x3 =1、x4 =1、x5 =0、x6 =0、x7 =0、x8 =1、x9 =0の時、最大値が24であることが分かる。
次の輸送問題(「問題解決のためのオペレーションズ・リサーチ入門」高井英造、真鍋龍太郎著、日本評論社、第5章より)を解く。
(必要ならば)変数の個数を15個、式の本数を8本に変更し、上記のデータを入力する。
「結果(経過)の表示」タブを表示すると、
となり、最初のシンプレックス表が表示される。ステータスバーにより、実行可能解を探そうとしていること、最初のピボットが4行6列であることが分かる。ここでは、(必要ならば)「ステップ実行」のチェックを外し、解を求める。「解く」ボタンを押すと、
となり、x1 =25、x2 =x3 =0、x4 =70、x5 =25、x6 =0、x7 =60、x8 =40、x9 =5、x10 =0、x11 =75、x12 =x13 =x14 =x15 =0の時、最大値が-615(最小費用は615)であることが分かる。
2人のプレイヤーAとBの5品目(可分とする)に対する評価値が次の表のようになっている時、勝者調整法による配分を線形計画法を利用して求める。
品目1
品目2
品目3
品目4
品目5
合計
Aの配点
25
5
30
20
20
100
Bの配点
20
10
15
25
30
100
次の線形計画問題を解けばよい。
(必要ならば)変数の個数を11個、式の本数を7本に変更し、上記のデータを入力する。
「結果(経過)の表示」タブを表示すると
となり、最初のシンプレックス表が表示される。ステータスバーにより、実行可能解を探そうとしていること、最初のピボットが7行8列であることが分かる。ここでは、(必要ならば)「ステップ実行」のチェックを外し、解を求める。「解く」ボタンを押すと、
となり、x1 =1、x2 =0、x3 =1、x4 =2/9、x5 =0、x6 =0、x7 =1、x8 =0、x9 =7/9、x10 =1の時、最大値が59+4/9であることが分かる。表にすれば次のようになる。プレイヤーAは品目1と品目3と品目4の2/9を貰い、プレイヤーBは品目2と品目5と品目4の7/9を貰う。そのときの利得は\(59 \frac{4}{9}\)となる。
品目1
品目2
品目3
品目4
品目5
合計
A
25
30
\(\frac{2}{9} \times 20 \)
\(59 \frac{4}{9}\)
B
10
\(\frac{7}{9} \times 25 \)
30
\(59 \frac{4}{9}\)