RSS

 

RSS


プログラム


プ:SCIP CPLEX 条件式

  • いわいまさか
  • at 2014/8/16 05:46:55

ここ最近、整数計画ソルバーであるSCIPを使っている。
「独学」でやっているので、まだ自分的に途上中。

SCIPの入力文であるところのCPLEXには条件式を表す書式があった。

情報はこちら
制約式を他の変数に応じてオン・オフしたい.「××ならば○○」というような制約式が書きたい
http://www.tuat.ac.jp/~miya/ipmemo.html#Q07.04

条件式には ->   を使うとのこと

なので、以前の記事で書いた
パ:「または」を不等式であらわす
での問題
「5枚あるカードのうちAが2枚か4枚だ」に関しては。
###########
1枚目のカードがAか否か   a1   (0 か 1)
2枚目のカードがAか否か   a2
3枚目のカードがAか否か   a3
4枚目のカードがAか否か   a4
5枚目のカードがAか否か   a5

Aの総数はsumは
a1 + a2 + a3 + a4 + a5 = sum

flag=0  Aが2枚
flag=1  Aが4枚

以下、CPLEXの書式で以下のようにかけた。
###########

Minimize
 value: dummy

Subject To
 flag=0 -> sum=2
 flag=1 -> sum=4
 a1+a2+a3+a4+a5-sum=0

Bounds
 dummy = 0

Binary
 flag
 a1
 a2
 a3
 a4
 a5

End

###########

左側に書く変数は 0-1 変数でなくてはならず,-> の右側は線形制約式でなければならない,という制限がある。

###########

いままで自分が作ったプログラムの中でこの「->」にかえた方がいいものがあるのかも。


  • コメント (0)
  • トラックバック (0)
トラックバックURL :
http://www.iwai-masaka.jp/tb.cgi/56112