1章前半.

Slides:



Advertisements
Similar presentations
<最適化の概念> 最適化すべき問 題 数学モデル 変数,数式 数理計画法 定められた計算手 順を用いて解くた めの方法論.
Advertisements

サプライ・チェイン最適化 ー収益管理を中心としてー 東京海洋大学 久保 幹雄
凹型区分線形取引コストを考慮した 少額資産運用ポートフォリオ最適化 A 山田賢太郎.
第6回 線形計画法の解法(4) 混合最小値問題 山梨大学.
線形計画 追加問題 ジュースを売って儲けよう!
ネットワーク理論講義補助資料 Text. 組合せ最適化とアルゴリズム 4.5 節 主・双対法 pp
「基礎OR」/「OR演習」 第2回 10/06/2009 森戸 晋.
第八回  シンプレックス表の経済的解釈 山梨大学.
近似アルゴリズム 第10章 終了時刻最小化スケジューリング
サプライ・チェインにおける様々な最適化問題を解くための 統一言語
「基礎OR」/「OR演習」 第3回 宿題3.2 Red Brand Canners解説
初級ミクロ経済学 -生産者行動理論- 2014年10月20日 古川徹也 2014年10月20日 初級ミクロ経済学.
第三回 線形計画法の解法(1) 標準最大値問題 山梨大学.
最短路問題をGurobiで解こう! 流通最適化工学 補助資料.
第四回 線形計画法(2) 混合最大値問題 山梨大学.
最適化ソルバーのための Python言語入門
重力3体問題の数値積分Integration of 3-body encounter.
土木計画学 第11回(12月21日) 土木計画と説明責任 計画における代替案の作成1 担当:榊原 弘之.
プロモーションのモデル.
「基礎OR」/「OR演習」 第3回 10/13/2009 森戸 晋.
経済・経営情報コース コース紹介.
第5回 双対問題 テキストp 内容 双対問題の導出 式を足しあわせる方法 Lagrange緩和 相補性条件 双対辞書
第 七 回 双対問題とその解法 山梨大学.
4.2 連立非線形方程式 (1)繰返し法による方法
制約条件の確率的選択に基づく 資源追加削減法の改良 三木 光範(同志社大工) 廣安 知之(同志社大工) ○小林 繁(同志社大院)
線形計画法 スケールフリーネットワーク 須藤 孝秀.
計算量理論輪講 岩間研究室 照山順一.
顧客生涯価値 TexPoint fonts used in EMF.
ネットワーク理論講義補助資料 Text. 組合せ最適化とアルゴリズム 4.3 節 Lagrange緩和 pp
情報工学総合演習 D-I 近似アルゴリズム 埼玉大学 理工学研究科 山田 敏規、 橋口 博樹、 堀山 貴史
Linear Relaxation for Hub Network Design Problems
サポートベクターマシン によるパターン認識
経営システム工学入門実験 ロジスティクス 第3回
第8章 気楽に「線形計画法」を覚えよう 1.最適化問題 経済行動:制約→最適化行動 最適化行動:売上高→最大化 生産費→最小化
経営システム工学入門実験 ロジスティクス 第3回
第6章 連立方程式モデル ー 計量経済学 ー.
情報学研究科 通信情報システム専攻 小野寺研究室 M1 奥村 佳弘
応用社会システム計画 (第10回) ここで、学習すること 学籍番号: 氏名: ■これまでの講義内容の整理 ■計画問題の設定と手法
割当て問題 • 割当問題の記法・定式化 • 拡張 • 特殊ケース(マッチング) • 3種類のものを割当てる問題.
経営システム工学入門実験 ロジスティクス 第3回
ディジタル回路 3. 組み合わせ回路 五島 正裕 2018/11/28.
ネットワーク上での社会的効用と個人的効用の対立問題に対するアルゴリズム的研究
ネットワーク理論 Text. Part 3 pp 最短路問題 pp 最大流問題 pp.85-94
AMPLについて 2011年12月2日(金) 経営システム工学科 森戸 晋.
生産計画を立てる • 簡単なバージョン:輸送問題 定式化、最小費用流、バリエーション • 部品組立て計画 定式化、バリエーション
第7章 疎な解を持つカーネルマシン 修士2年 山川佳洋.
人為変数や二段階を不要とする 実数型simplex法の解き方の 提案と検証
計算量理論輪講 chap5-3 M1 高井唯史.
連続領域におけるファジィ制約充足問題の 反復改善アルゴリズムによる解法 Solving by heuristic repair Algorithm of the Fuzzy Constraint Satisfaction Problems with Continuous Domains 北海道大学.
ファジィ制約充足問題への 連続領域の導入 Introducing continuous domains to
第4回 線形計画 2000年11月 第4回 線形計画.
First Course in Combinatorial Optimization
知識科学研究科 知識システム構築論講座 林研究室 佛明 智
「データ学習アルゴリズム」 第3章 複雑な学習モデル 報告者 佐々木 稔 2003年6月25日 3.1 関数近似モデル
ナップサック問題 クマさん人形をめぐる熱いドラマの結末.
サポートベクターマシン Support Vector Machine SVM
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
サプライ・チェイン最適化について 研究者・実務家が知っておくべきこと
Selfish Routing 4章前半 岡本 和也.
情報工学Ⅱ (第9回) 月曜4限 担当:北川 晃.
Solver for COnstraint Programming:スコープ Pythonモジュールの使い方
土木計画学 第12回(1月14日) 計画における代替案の作成2 担当:榊原 弘之.
``Exponentiated Gradient Algorithms for Log-Linear Structured Prediction’’ A.Globerson, T.Y.Koo, X.Carreras, M.Collins を読んで 渡辺一帆(東大・新領域)
経営システム工学入門実験 ロジスティクス 第3回
経営システム工学入門実験 ロジスティクス 第3回
本時の目標 二元一次方程式とその解の意味を理解する。
経営システム工学入門実験 ロジスティクス 第3回
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
東京工業大学情報理工学研究科 小島政和 第1回横幹連合コンファレンス 2005年11月25,26日 JA 長野県ビル
グラフの帯域幅連続多重彩色 を求めるアルゴリズム (Bandwidth Consective Multicolorings of Graphs) 西関研究室 西川和秀.
Presentation transcript:

1章前半

1節 数理最適化とは 実際の問題を数式で書き下して、最適解を得るための方法論。 1節 数理最適化とは 実際の問題を数式で書き下して、最適解を得るための方法論。 通常、1つの目的関数と満たすべき条件を記述した複数の制約式で構成される。 目的関数は問題の総費用や総利益を表すので、これを最大化、最小化することが目的。

数理最適化問題の種類 線形最適化問題(linear optimization) 非線形最適化問題(nonlinear optimization) 二次最適化問題(quadratic optimization) 整数最適化問題(integer optimization) 混合整数最適化問題(mixed integer optimization) NP-Hard

2節 線形最適化問題 目的関数 maximize 15x1 +18x2 +30x3 subject to 2x1 + x2 +x3 ≤ 60 x1 +2x2 +x3 ≤ 60 x3 ≤ 30 x1, x2, x3 ≥ 0 制約式 このように変数x1,x2,x3を定数倍したものを足し合わせた形を線形といい、制約式の下で目的関数を最大化・最小化する問題を線形最適化問題という。

2節 線形最適化問題② 変数の組x1, x2, x3 を解(solution) と呼び,すべての制約式を満たす解を実行可能解(feasible solution) と呼ぶ。 実行可能解の中で目的関数を最大化(もしくは最小化)するものを最適解(optimal solution) と呼ぶ. 最適解における目的関数の値を,最適目的関数値(optimal objective function value) または単に最適値(optimal value)と呼ぶ。

Python/Gurobiを用いた解法手順 2節 線形最適化問題③ Python/Gurobiを用いた解法手順 Gurobiのモジュールを読み込む モデルの定義 変数の定義 モデルのアップデート 制約式の記述 目的関数の記述 Optimizeメソッドで解く 最適解、最適値の出力

2節 線形最適化問題④ from gurobipy import * model = Model ( " lo1 " ) 2節 線形最適化問題④ from gurobipy import * model = Model ( " lo1 " ) x1 = model.addVar (name="x1" ) x2 = model.addVar (name="x2" ) x3 = model.addVar (ub=30, name="x3" ) model.update( ) model.addConstr (2* x1 + x2 + x3 <= 60) model.addConstr ( x1 + 2*x2 + x3 <= 60) model.setObjective (15* x1 + 18* x2 + 30*x3 , GRB.MAXIMIZE) model.optimize( ) print "Opt.Value=" ,model.ObjVal for v in model.getVars ( ): print v.VarName , v .X 実行結果 Opt. Value= 1230.0 x1 10.0 x2 10.0 x3 30.0

3節 整数最適化問題 鶴と亀とタコが何匹かずついる。 頭の数を足すと32,足の数を足すと80になる. 亀とタコの数の和を一番小さくするような匹数を求めよ.

3節 整数最適化問題② 定式化① minimize y + z subject to x + y + z = 32 3節 整数最適化問題② 鶴がx匹、亀がy匹、タコがz匹いたとする。目的関数をy+zが 最小になるようにとれば、以下のように定式化できる。 これを解くと、 最適解が x=29.3333 y=0 z=2.66667 となり、現実ではありえない答えになってしまう   定式化① minimize y + z subject to x + y + z = 32 2x +4y +8z = 80 x, y, z ≥ 0 

3節 整数最適化問題③ 定式化② minimize y + z subject to x + y + z = 32 3節 整数最適化問題③ 最適解が整数になるように、x,y,zがそれぞれ整数である という制約を付け加えると、以下のようになる。   定式化② minimize y + z subject to x + y + z = 32 2x +4y +8z = 80       x, y, z は非負の整数 

3節 整数最適化問題④ from gurobipy import * model = Model ( " seisu " ) 3節 整数最適化問題④ from gurobipy import * model = Model ( " seisu " ) x = model.addVar ( vtype=" I " ) y = model.addVar ( vtype=" I " ) z = model.addVar ( vtype=" I " ) model.update ( ) model.addConstr ( x + y + z == 32) model.addConstr (2* x + 4*y + 8* z == 80) model.setObjective ( y + z , GRB.MINIMIZE) model.optimize ( ) print "Opt.Val.=" , model.ObjVal print " (x , y , z)=" , x .X, y .X, z .X 実行結果 Opt. Val.= 4.0 (x,y,z)= 28.0 2.0 2.0

4節 輸送問題 5人の顧客(需要地点)に対して,3つの工場で生産した製品を 運ぶ必要がある。工場の生産可能量(容量),顧客への輸送費 用,ならびに各顧客における需要量は,表のようになっている。 どのような輸送経路を選択すれば,総費用が最小になるか? 顧客 i 1 2 3 4 5 需要量 di 80 270 250 160 180 工場 j 輸送費用 cij 容量 Mj 6 8 10 500 9 7 表:工場の容量、輸送費用、需要量

4節 輸送問題② 顧客の集合をI = {1, 2, . . . , n}、 工場の集合をJ = {1, 2, . . . , m}とする. 顧客iの需要量をdi、顧客i と工場j 間の1単位の輸送費用を Cij、工場jの容量をMj とする.工場jから顧客iへの輸送量を xijとすると、以下のように定式化できる。

4節 輸送問題③ from gurobipy import * 4節 輸送問題③ from gurobipy import * d = { 1 : 80 , 2 : 270 , 3:250 , 4 : 160 , 5:180} M = { 1 : 500 , 2 : 500 , 3:500} I = [ 1 , 2 , 3 , 4 , 5 ] J = [ 1 , 2 , 3 ] I , d = multidict ({ 1 : 80 , 2 : 270 , 3:250 , 4 :160 ,5:180 }) J , M = multidict ({ 1 : 500 , 2 : 500 , 3:500 } ) c = { ( 1 , 1 ) : 4 , ( 1 , 2 ) : 6 , ( 1 , 3 ) : 9 , ( 2 , 1 ) : 5 , ( 2 , 2 ) : 4 , ( 2 , 3 ) : 7 , ( 3 , 1 ) : 6 , ( 3 , 2 ) : 3 , ( 3 , 3 ) : 4 , ( 4 , 1 ) : 8 , ( 4 , 2 ) : 5 , ( 4 , 3 ) : 3 , ( 5 , 1 ) : 10 , ( 5 , 2 ) : 8 , ( 5 , 3 ) : 4 , }

4節 輸送問題④ model = Model ( " transportation " ) x = {} for i in I : 4節 輸送問題④ model = Model ( " transportation " ) x = {} for i in I : for j in J : x [ i , j ] = model.addVar ( vtype="C" , name="x(%s ,%s ) " % ( i , j ) ) model.update ( ) model.addConstr ( quicksum( x [ i , j ] for j in J ) == d [ i ] , name="Demand(%s ) " % i ) model.addConstr ( quicksum( x [ i , j ] for i in I ) <= M [ j ] , name="Capacity(%s ) " % j ) model.setObjective ( quicksum( c [ i , j ] * x [ i , j ] for ( i , j ) in x ) , GRB.MINIMIZE)

4節 輸送問題⑤ model.optimize ( ) print "Optimal value : " , model.ObjVal 4節 輸送問題⑤ model.optimize ( ) print "Optimal value : " , model.ObjVal EPS = 1.e-6 for ( i , j ) in x : if x [ i , j ] .X > EPS: print " sending quantity %10s from factory %3s to customer %3s " % ( x [ i , j ] .X, j , i )

4節 輸送問題⑥ 実行結果 Optimal value: 3370.0 4節 輸送問題⑥ 実行結果 Optimal value: 3370.0 sending quantity 230.0 from factory 2 to customer 3 sending quantity 20.0 from factory 3 to customer 3 sending quantity 160.0 from factory 3 to customer 4 sending quantity 270.0 from factory 2 to customer 2 sending quantity 80.0 from factory 1 to customer 1 sending quantity 180.0 from factory 3 to customer 5

5節 双対問題 4節の輸送問題について、工場の拡張を考えて みる.どの工場を拡張すればどのくらいの費用 の削減が期待できるだろうか? また,各顧客からの追加注文に対しては,どのく らい追加費用を顧客からもらえば元がとれるだ ろうか? 双対問題を考える!!

5節 双対問題② 双対問題とは,もとの問題と表裏一体を成す線形最適化問題のこと。 5節 双対問題② 双対問題とは,もとの問題と表裏一体を成す線形最適化問題のこと。 双対問題で扱う双対変数は、制約となっている資源を1単位分増加させるとどれだけ利益が増えるかを示している。潜在価格(shadow price)とも呼ばれる。 ここでは工場の容量の余裕変数(スラック変数)と双対変数を調べることで、工場の拡張の効果と追加費用を求める。

5節 双対問題③ 輸送問題のプログラムの最後に次の文を付け加える。 print "Const.Name : Slack , Dual" 5節 双対問題③ 輸送問題のプログラムの最後に次の文を付け加える。 print "Const.Name : Slack , Dual" for c in model.getConstrs ( ) : print "%s : %s , %s " %(c.ConstrName , c . Slack , c . Pi )

5節 双対問題④ 実行結果 Const. Name: Slack , Dual Demand(1): 0.000000 , 4.000000 5節 双対問題④ 実行結果 Const. Name: Slack , Dual Demand(1): 0.000000 , 4.000000 Demand(2): 0.000000 , 5.000000 Demand(3): 0.000000 , 4.000000 Demand(4): 0.000000 , 3.000000 Demand(5): 0.000000 , 4.000000 Capacity(1): 420.000000 , 0.000000 Capacity(2): 0.000000 ,-1.000000 Capacity(3): 140.000000 , 0.000000