1

次の例に従って、線形計画法にCVXOPTを使用しています。http ://abel.ee.ucla.edu/cvxopt/examples/tutorial/lp.html

X1 >= 0 

ただし、負の値を取得します。どうして?「最適なソリューションが見つかりました」というメッセージが表示されます

A = matrix( [ [0.0, 0.0, 1.0, 1.0, -0.0, -0.0, -1.0, -1.0, -1.0, 0.0, 0.0], 
              [0.0, 1.0, 1.0, 0.0, -0.0, -1.0, -1.0, -0.0, 0.0, -1.0, 0.0], 
              [1.0, 0.0, 0.0, 1.0, -1.0, -0.0, -0.0, -1.0, 0.0, 0.0, -1.0]
              ]
            ) 

制約値(右側)

b = matrix( [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0] )

最小化機能:

c = matrix( [-1.0, -1.0, -1.0] )

呼び出し:

 sol=solvers.lp(c,A,b)

だが:

print (sol['x']): 
[-4.83e-09]
[ 1.00e+00]
[ 1.00e+00]

-4.83e-09>=0 
False

ありがとう

4

1 に答える 1

6

ユーザー ガイドによると、CVXOPTのデフォルトの許容範囲は 1.0e-7です。したがって、制約がこのレベルの精度でのみ満たされることを期待する必要があります。

EDITしたがって、「ハード」制約が確実に満たされるようにするには、変数の下限を「ハード」制約 (つまり、この場合は 0)実現可能性の許容範囲に等しくなるように設定する必要があります。

X1 >= 1.0e-7
于 2012-09-09T20:13:39.043 に答える