AMPLについて 2011年12月2日(金) 経営システム工学科 森戸 晋 直感的なモデル記述 minimize TOTAL_COST: sum{i in 1..N, j in 1..M}C[i,j]*x[i,j] +sum{j in 1..M}F[j]*y[j]; subject to DEMAND{i in 1..N}: sum{j in 1..M}x[i,j]>=D[i]; subject to CAPACITY{j in 1..M}: sum{i in 1..N}x[i,j]<=L[j]; subject to LOGIC{i in 1..N,j in 1..M}: x[i,j]<=M*y[j]; 2 AMPLのファイル構成 •施設候補地は2 •需要地は7 •施設の容量は… •各顧客の需要は.. SAMPLE.MOD 定式化を記述するファイル 必要な目的関数,制約,記号 の定義を列挙する SAMPLE.RUN アルゴリズムを記述するファイル どの問題をいつ何回解くのか? どのデータを使うのかを指定す る SAMPLE.DAT 実験のデータを記述する ファイル 各種インスタンス (集合,定数)を列挙 3 実際に問題を解く 施設配置問題 施設を開設する場所と,輸送量を決定したい 施設を建てる建てないを Yj={0,1}で表現 輸送量はxij 各需要地の需要Diは満たさねばならない 各施設には生産上限Ljがある 4 モデルファイル(FLP.mod)を読む param N; param M; param C{i in 1..N, j in 1..M}; param F{j in 1..M}; param D{i in 1..N}; param L{j in 1..M}; var x{i in 1..N, j in 1..M} >= 0; var y{j in 1..M} integer in 0..1; 記号の定義 パラメータ(定数)を指定 決定変数を指定 (xは非負,yはバイナリ) minimize TOTAL_COST: Sum{i in 1..N,j in 1..M}C[i,j]*x[i,j]+sum{j in 1..M}F[j]*y[j]; subject to DEMAND{i in 1..M}: Sum{j in 1..N}x[i,j]>=D[i]; subject to CAPACITY{j in 1..M}: Sum{i in 1..N}x[i,j]<=L[j]; subject to LOGIC{i in 1..N,j in 1..M}: x[i,j]<=M*y[j]; モデルの記述 5 スクリプトファイル(FLP.run)を読む model FLP.mod; data FLP.dat; option solver CPLEX; problem FLP: x, y, TOTAL_COST, DEMAND, CAPACITY, LOGIC; solve FLP; display FLP; display x; display y; display FLP > FLP.sol; display x > FLP.sol; display y > FLP.sol; 変数はxとy 目的関数は「TOTAL」 制約式は「DEMAND…」 解の表示,書き込み 6 コマンドプロンプト上から実行 ⇒コマンドプロンプトから当該フォルダに移動し, 「ampl FLP.run」で実行される 結果は? modelの後のCAPACITYを削除してもう一度 実行すると答えはどうなる? WorkspaceフォルダにFLP.solというファイル ができてるはずなので,テキストエディタで開 いてみましょう 7 【課題1】 Error Debugging 【課題1】 TASK.run,TASK.modにはエラーがあります。 TASK.runを実行してエラーメッセージを確認 し,デバッグしてみてください 8
© Copyright 2025 ExpyDoc