0

非常に単純なLPファイルをGLPKに読み込もうとしています。このLPファイルには4つの変数があり、そのうち2つはバイナリであり、GLPKはこれらの2つのバイナリ変数(HACE_MESAS、HACE_SILLAS)を正しく読み取っていないようです。ログに記録します。

警告:変数HACE_MESASの下限が再定義されました警告:変数HACE_MESASの上限が再定義されました警告:変数HACE_SILLASの下限が再定義されました警告:変数HACE_SILLASの上限が再定義されました

そして、これらの2つの変数に実際の値を置くため、うまく解決できません。

HACE_MESAS = 0.01
HACE_SILLAS = 0.02

LPファイルは次のようになります。

Maximize
 obj: 5 MESAS + 3 SILLAS
Subject To
 IloC0: MESAS + 2 SILLAS >= 0
 IloC1: MESAS + 2 SILLAS <= 50
 IloC2: 2 MESAS + SILLAS >= 0
 IloC3: 2 MESAS + SILLAS <= 40
 IloC4: MESAS - 1000 HACE_MESAS <= 0
 IloC5: SILLAS - 1000 HACE_SILLAS <= 0
 IloC6: HACE_MESAS + HACE_SILLAS <= 1
Bounds
      MESAS >= 0
      SILLAS >= 0
 0 <= HACE_MESAS <= 1
 0 <= HACE_SILLAS <= 1
Binaries
 HACE_MESAS  HACE_SILLAS 
Generals
 MESAS  SILLAS 
End

誰かが私が悪いことをしていることを教えてもらえますか?ありがとう。

4

1 に答える 1

0

冗長な境界を削除するだけです(それらは不要ですが、ご覧のとおり問題が発生します)

 0 <= HACE_MESAS <= 1
 0 <= HACE_SILLAS <= 1

つまり、次のモデルを実行します。

Maximize
 obj: 5 MESAS + 3 SILLAS
Subject To
 IloC0: MESAS + 2 SILLAS >= 0
 IloC1: MESAS + 2 SILLAS <= 50
 IloC2: 2 MESAS + SILLAS >= 0
 IloC3: 2 MESAS + SILLAS <= 40
 IloC4: MESAS - 1000 HACE_MESAS <= 0
 IloC5: SILLAS - 1000 HACE_SILLAS <= 0
 IloC6: HACE_MESAS + HACE_SILLAS <= 1
Bounds
      MESAS >= 0
      SILLAS >= 0
Binaries
 HACE_MESAS  HACE_SILLAS 
Generals
 MESAS  SILLAS 
End

すべてが期待どおりに機能します。

Problem:    
Rows:       7
Columns:    4 (4 integer, 2 binary)
Non-zeros:  14
Status:     INTEGER OPTIMAL
Objective:  obj = 100 (MAXimum)

   No.   Row name        Activity     Lower bound   Upper bound
------ ------------    ------------- ------------- -------------
     1 IloC0                      20             0               
     2 IloC1                      20                          50 
     3 IloC2                      40             0               
     4 IloC3                      40                          40 
     5 IloC4                    -980                           0 
     6 IloC5                       0                           0 
     7 IloC6                       1                           1 

   No. Column name       Activity     Lower bound   Upper bound
------ ------------    ------------- ------------- -------------
     1 MESAS        *             20             0               
     2 SILLAS       *              0             0               
     3 HACE_MESAS   *              1             0             1 
     4 HACE_SILLAS  *              0             0             1 

Integer feasibility conditions:

KKT.PE: max.abs.err = 0.00e+00 on row 0
        max.rel.err = 0.00e+00 on row 0
        High quality

KKT.PB: max.abs.err = 0.00e+00 on row 0
        max.rel.err = 0.00e+00 on row 0
        High quality

End of output
于 2013-02-25T13:06:00.983 に答える