久保幹雄,ジョア(ジョアン)・ペドロ・ペドロソ,村松正和,アブドル・レイス 著
近代科学社 2012年
ダウンロード
ソースコード zipファイル |
|
第1章のスライド (Power Pointファイル) 前半 後半 |
|
記念セミナースライド |
- 数理最適化の基本とPython言語によるインターフェイス (PPT) 久保幹雄
- 制約最適化ソルバー SCOP とメタヒューリスティクス (PDF) 野々部宏司
- 錐計画の基本と応用 (PDF) 村松正和
- 数理最適化の応用例と実験的解析 (PPT) 久保幹雄
- スケジューリング最適化ソルバー OptSeqとその応用 (PDF) 野々部宏司
誤植等 (数式はLaTeXで記述)
p.67 10行目:(2次関数を二次関数に直す!) を消す. | |
14,15行目: 後ろから:「ここでグラフとは,「点」と「枝」から構成される抽象概念である.グラフは,現実の問題をわかりやすく表すのに非常に便利な道具である.」 を省く を消す. | |
p.68 図の下から4行目から5行目: 「ここでグラフとは,「点」と「枝」から構成される抽象概念である.グラフは,現実の問題をわかりやすく表すのに非常に便利な道具である.」を消す. | |
p.111 プログラム内の11,12,13行目を以下に変更(以下,文番号が1つずれる).11 for t in range(1,T+1): 12 ind = [(j,t2) for j in J for t2 in range(t-p[j]+1,t+1) if (j,t2) in X] 13 if ind != []: 14 model.addConstr(quicksum(X[j,t2] for (j,t2) in ind) <= 1, “MachineUB(%s)”%t) |
2刷
p.12 下から4行目(プログラム内): I=[1,2,3,4] => I=[1,2,3,4,5] | |
p.18 下から1行目: 図1.6 (a) に示した => p.36の図1.6 (a) に示した | |
p.24 4行目: i=1,2,3,4x => i=1,2,3,4 (xをとる) | |
p.27 (プログラムは除いて)5行目:鶴が2匹 =>鶴が24匹 | |
p.30 下側のプログラムの10行目: model.update()を除く(同時に11行目の行番号を10に修正) | |
p.31 下から1行目:”mkp.mp s” => “mkp.mps” | |
p.33 欄外ゼミナール内 6行目:Alison Doing => Alison Doig | |
p.45 下から5行目(メイン関数のプログラムj内): d, c,f, M =make_data() => I, J, d, c, f, M =make_data() | |
p.45 下から4行目(メイン関数のプログラムj内): model=flp(d, c,f, M) => model=flp(I, J, d, c, f, M) | |
p.52 3行目:\sum_{i \in I} \xi_i (ギリシア文字のクシイ) => \sum_{i \in I} z_i | |
p.75 モデリングのコツ6内の6行目の数式:y => 1-y | |
p.75 モデリングのコツ6 内7行目:特性順序集合=>特殊順序集合 | |
p.81 下から6行目(数式内):x_e \in \{0,1 => x_e \in \{0,1\} | |
p.82 5行目:以下では,カットセット制約のみを考える.=>省く! | |
p.104 14-15行目(プログラムの上の3-4行目):「制約ごとに異なるMを設定するならば,$r_j+\sum s_j -s_k$,」をとり,その後の $\max (r_j) +\sum s_j$ を $\max (r_j) +\sum p_j$ に変更 | |
p. 105 1行目:$\max (r_j) +\sum s_j$ => $\max (r_j) +\sum p_j$ | |
p.105 下から2行目(数式内の右側の式):x1 => x_1(添え字にする) | |
p.119 下から8行目:\forall t < b_r または t>f_r の不等式(2つ)をちゃんとした不等式にする. | |
p.127 9行目: \forall p in P をとる. | |
p. 135 5,6行目:数式内の;(セミコロン)を半角にする. | |
p.157 下から6行目(数式内1行目): f(x_i) => f_i (x_i) | |
p.157 下から5行目(数式内2行目): subject to と $x_i$ の間にスペースを入れる. | |
p.269 5行目: t=1,8 => t=1,7 | |
p.170: プログラムの下から4行目から10行目までを以下に変更 for t in range(1,T): for j in J: if j != 0: model.addConstr(x[i,t,j] + quicksum(x[i,t+1,k] for k in J if k != j and k != 0) <= 1,”Require(%s,%s,%s)” % (i,t,j)) for t in Ts: for j in S: if t==1: model.addConstr(x[i,t+1,j] >= x[i,t,j], “SameShift(%s,%s,%s)” % (i,t,j)) elif t==T: model.addConstr(x[i,t-1,j] >= x[i,t,j], “SameShift(%s,%s,%s)” % (i,t,j)) else: model.addConstr(x[i,t-1,j] + x[i,t+1,j] >= x[i,t,j], “SameShift(%s,%s,%s)” % (i,t,j)) |
|
p.171 5行目 花文字(カリグラフ) K の添え字 を 3 に変更(2ヶ所) | |
p.180 中断の制約式の中: *1zwc を除く. | |
p.198 3行目:リストL[4,5,6,3 =>リスト[4,5,6,3] |
3刷
p.50 5行目の数式:c_{ij} x_{ij} \leq z \forall i \in I; j \in J を \sum_{j \in J} c_{ij} x_{ij} \leq z \forall i \in I に変更(式を強化できる) |
|
p.50 プログラム内の11行目と12行目の間に以下を挿入: model.addConstr(quicksum(c[i,j]* x[i,j] for j in J) <= z,”Max_x(%s)”%(i)) |
|
p.50 プログラム内の14行目をとる. p.173 下から7行目:を最小にする(x,y)を求めよ.=>を最小にする(X,Y)を求めよ. | |
p.183 表10.3:0.07, => 0.07(カンマをとる) | |
p.195 下から3行目:中括弧 の中に => 中括弧 { } の中に | |
p.199 8行目:リスト包括表記 => リスト内包表記 | |
p.234 12行目: もしくは文字列”source”を与える. 文字列”source”はすべての活動に先行する開始時刻0のダミー活動を定義するときにもちいられる. => もしくは文字列”sink”を与える. 文字列”sink”はすべての活動に後続するダミー活動を定義するときにもちいられる. | |
p.82 15行目の数式:minimize \sum_{j}f_{1j} を maximize \sum_{j}f_{1j} に変更 | |
p.82 16行目の数式:subject to \sum_{j:i<j}f_{ij}-\sum_{j:i<j}f_{ij}=0 \forall i=2,3,…,n,i \neq k を subject to \sum_{j:i<j}f_{ij}-\sum_{j:i<j}f_{ji}=0 \forall i=2,3,…,n,i \neq k に変更 |
リンク
実験的解析の結果 (Results obtained using Python/Gurobi) | |
数理最適化ソルバーGurobi関連 日本総代理店オクトーバースカイ Gurobi フリーのpulp (pip install pulp) をインストールした後,pip install mypulp でGurobiと同様のインターフェイスが使用可能 |
|
制約最適化ソルバー SCOP |
|
スケジューリング最適化ソルバー OptSeq |