プログラムの使用方法

 たとえば,
目的関数,
	z = c1x1 + c2x2 + ・・・ + cmxm
を,制約条件,
	a11x1 + a12x2 + ・・・ + a1mxm ≦ b1
	a21x1 + a22x2 + ・・・ + a2mxm ≦ b2
		・・・・・
	an1x1 + an2x2 + ・・・ + anmxm ≦ bn
のもとで,最大にする.		
のような問題は,以下に示すようなデータを含むファイルを作成し,入力に対するリダイレクト機能を使用すれば実行できます(コメント部分は除く).なお,制約条件式において,不等号が逆(≧)の場合は「 > 」,また,等号の場合は「 = 」を使用して下さい.さらに,各変数の値はすべて 0 以上という条件は,自動的に付加されます.
m n   // 変数の数と制約条件の数
c1 c2 ・・・ cm   // 目的関数の係数
a11 a12 ・・・ a1m < b1   // 制約条件式(以下,同様)
a21 a22 ・・・ a2m < b2
	・・・・・
an1 an2 ・・・ anm < bn		
  例えば,

目的関数,
z = 3x1 + 2x2   (1)
を,制約条件,
3x1 + x2 ≦ 9   (2)
2.5x1 + 2x2 ≦ 12.5   (3)
x1 + 2x2 ≦ 8   (4)
x1, x2 ≧ 0
のもとで,最大にする.

のような問題の場合,入力データは以下のようになります.
2 3
3 2
3 1 < 9
2.5 2 < 12.5
1 2 < 8		
  このプログラムを実行すると,最適解とともに,各ステップにおける単体表も出力させることが可能です(関数 optimize の引数を 1 とした場合).たとえば,上に示した問題の場合,単体表は以下のようになりますが,その 2 行目以降が表と同じ順番で出力されます.

基底変数 基底可能解 x1 x2 x3 x4 x5
x3 9 3 1 1 0 0
x4 12.5 2.5 2 0 1 0
x5 8 1 2 0 0 1
z 0 -3 -2 0 0 0

  上に示した問題の場合は,以下に示すような出力が得られます.
x3 9.000000 3.000000 1.000000 1.000000 0.000000 0.000000
x4 12.500000 2.500000 2.000000 0.000000 1.000000 0.000000
x5 8.000000 1.000000 2.000000 0.000000 0.000000 1.000000
 z 0.000000 -3.000000 -2.000000 0.000000 0.000000 0.000000

x1 3.000000 1.000000 0.333333 0.333333 0.000000 0.000000
x4 5.000000 0.000000 1.166667 -0.833333 1.000000 0.000000
x5 5.000000 0.000000 1.666667 -0.333333 0.000000 1.000000
 z 9.000000 0.000000 -1.000000 1.000000 0.000000 0.000000

x1 2.000000 1.000000 0.000000 0.400000 0.000000 -0.200000
x4 1.500000 0.000000 0.000000 -0.600000 1.000000 -0.700000
x2 3.000000 0.000000 1.000000 -0.200000 0.000000 0.600000
 z 12.000000 0.000000 0.000000 0.800000 0.000000 0.600000

(2.000000, 3.000000) のとき,最大値 12.000000		
  以下に示すのは,いくつかの問題に対する入力例です.なお,各問題における,「解」を含む行は最適解であり,入力データではありません.

2 3
3 2
3 1 < 9
2.5 2 < 12.5
1 2 < 8
  解 (2, 3) 12


2 3
2 3
1 2 < 14
1 1 < 8
3 1 < 18
  解 (2, 6) 22


2 3
-2 -3
1 1 > 5
4 1 > 8
1 2 > 6
  解 (4, 1) -11


3 3
-1 3 -2
3 -1 2 < 7
-2 4 0 < 12
-4 3 8 < 10
  解 (4, 5, 0) 11


2 3
2 1
1 -1 < 1
-2 1 < 2
1 -2 < 3
  解 -


4 3
-2 -1 1 1
1 -1 2 -1 = 2
2 1 -3 1 = 6
1 1 1 1 = 7
  解 (3, 0, 1, 3) -2


3 3
2 3 1
1 2 1 < 10
2 1 5 = 20
1 2 3 = 15
  解 (5/2, 5/2, 5/2) 15


3 3
-1 2 -2
2 -1 -1  < -20
1 1 2 > 30
-1 2 1 = 24
  解 (0, 4, 16) -24


2 3
-1 -1
3 5 < 15
2 1 > 4
1 -1 = 1
  解 (5/3, 2/3) -7/3


4 4
-45 -30 -60 -50
23 10 30 20 > 25
245 150 350 380 > 320
68 45 102 80 > 75
1 1 1 1 = 1
  解 (0.357, 0, 0.393, 0.25) -52.14


2 3
5 6
1 3 < 60
3 4 < 100
2 1 < 50
  解 (20, 10) 160


3 2
-60 -100 -50
1 3 2 > 5
3 4 1 > 6
  解 (0, 1.4, 0.4) -160