オジェクトの例 (Gurobi)• 変数オブジェクトx の属性 x.VarName => x の名前 x.LB => x の下限• モデルオブジェクト m のメソッド m.addVar() => m に変数を加える m.addConstr() => m に制約を加える m.optimize() => m を最適化する
リストの反復• リスト内の要素を順に for反復で取り出す L= [1,4,6,7] for i in L: print i, => 1 4 6 7 と出力• 要素の順番と中身が欲しい L= [1,4,6,7] for index,i in enumerate(L): print index, i=> 0 1 14 26 37 と出力
6.
リスト内包表記• リストを for文を中に入れて生成 L= [ i for i in range(5) ] => [0 , 1, 2 ,3, 4] を返す• if 文を入れて条件付きで生成 例: 0 から 10 までの奇数 (2で割った剰余が1) のリストを生成 [ i for i in range(11) if i%2 ==1 ] => [1, 3, 5, 7, 9] を返す
7.
合計を計算するための記法• sum( )で合計を計算sum リストの中身の和をとる関数 例: sum ( [1,2,3] ) => 6を返すリスト内包表記でリストを生成してもOK例: sum( [ i for i in range(11)] ) =>55 を返すリストを表す [ ] を省略してもOKsum( i for i in range(11) )
8.
合計を計算するための記法 (Gurobi)• sum() もしくは高速版 quicksum を使う例:変数オブジェクトx,y,z の和をとる sum ( [ x,y,z] ) => x+y+z を返すリスト内包表記でリストを生成してもOK例: 変数オブジェクト x[0], x[1],・・・, x[10] の和をとるsum( x[i] for i in range(11) ) => x[0]+x[1]+ ・・・ +x[10] を返す
9.
sum関数を用いた制約の追加の例• モデルオブジェクト modelに x[0]+x[1]+・・・+x[10] <=8 を追加 model.addConstr( sum( x[i] for i in range(11) ) <=8 )大規模問題のときには quicksum を使う!