More Related Content
Similar to 数理最適化とPython (20)
More from Yosuke Onoue (19)
数理最適化とPython
- 2. お前、誰よ 尾上 洋介(おのうえ ようすけ) Twitter @_likr(りけると読んでください) 関西大学大学院総合情報学研究科 M1 数理最適化のアルゴリズムと応用の研究 ナップサック問題 株式会社スプーキーズエンジニア Web,Android … Python歴 2年 GAE,Django,Numpy,Python/C API,PyCUDA,SL4A … 質問など-> @_likr
- 5. 計算科学 (Computational Science) コンピュータによる計算で問題解決を行う科学 物理シミュレーション 流体力学 化学 構造計算 バイオインフォマティクス 応用数学 四色問題の証明 ≠計算機科学(Computer Science) 質問など-> @_likr
- 6. Why Python? 豊富なライブラリ batteries included Numpy, Scipyをはじめとして,ネイティブ言語実装のライブラリが豊富 GUIでビジュアライズ シンプルな構文 科学者は科学に集中したい 移植性 オープンソース 数十万〜百万円クラスのソフトがよく用いられる 質問など-> @_likr
- 7. 科学技術計算分野でのPython 組織 NASA 今はそうでもないとかなんとか… 高エネルギー加速器研究機構 書籍 入門自然言語処理 Bioinformatics Programming Using Python Python Scripting for Computational Science 質問など-> @_likr
- 11. 解法での分類 厳密解法 動的計画法 分枝限定法 近似解法 性能保証あり 近似アルゴリズム 性能保証なし 遺伝的アルゴリズム ニューラルネットワーク 質問など-> @_likr
- 12. Coopr COmmon Optimization Python Repository COIN-ORのサブプロジェクト Pythonの最適化ライブラリ群 coopr.pyomo – モデリング coopr.pysp – 確率計画アルゴリズム COIN-OR 最適化関連ソフトウェアをオープンソースで提供することで学術研究の発展をはかるプロジェクト 質問など-> @_likr
- 15. その他 モデリング系 PuLP POAMS PyMathProg - PyGLPK OpenOpt - scipy アルゴリズム系 pyipopt - 非線形計画問題ソルバ ecspy - 遺伝的アルゴリズム等の進化的計算パッケージ 質問など-> @_likr
- 20. モデルのデザイン 制約は何か 原料の量 P11トンあたりのM1消費量×x1+p21トンあたりのM1消費量×x2≦ M1の消費可能量 … 非負性 -1トン生産とかは不可能 質問など-> @_likr
- 24. 使い方 from coopr import pyomomodel = pyomo.AbstractModel()# TODO model の肉付けinstance = model.create()instance.pprint() 質問など-> @_likr
- 25. 何を決定するのか model.p = pyomo.Set(initialize=[1, 2])model.x = pyomo.Var(model.p, within=pyomo.NonNegativeReals) Var 決定変数の定義に使用 within(=domain) Reals(default), Binary, Integer, NonPositiveInteger… Set 集合の定義に使用 モデルの抽象化 質問など-> @_likr
- 26. 何を目的にするのか rule = lambda model: 2*model.x[1] + 5*model.x[2]model.profit = pyomo.Objective(rule=rule, sense=pyomo.maximize) Objective 目的関数の定義に使用 sense minimize(default) or maximize 質問など-> @_likr
- 27. 制約は何か rule = lambda model: (2*model.x[1] + 6*model.x[2]) <= 27model.m1 = pyomo.Constraint(rule=rule) Constraint 制約関数の定義に使用 ruleは真偽値を返す関数 質問など-> @_likr
- 28. ソルバを使う コンソール実行$ pyomomodel.py model.py中に変数名modelでモデル定義 results.ymlが保存される スクリプト内実行from coopr import optsolver = opt.SolverFactory('glpk')result = solver.solve(instance)print result 質問など-> @_likr
- 38. 問題 ある会社には部門が5つあり(A, B, C, D, E),現在全てがロンドンにある 部門の一部をブリストルとブライトンに再配置する 1つの都市における部門は3つまでとする 再配置をすればコストダウンによる利益(/年)が生じる 部門間は一定量の通信を行う 通信費(/年)は都市間ごとに決まっている 年間総費用を最小にするには各部門をどう配置する? 質問など-> @_likr
- 41. 枠に収める xi = 0 のとき部門iをブリストルに,xi = 1 のとき部門iをブライトンに,xi = 2 のとき部門iをロンドンにではダメ? 非線形性を持ち,MIPの枠外になる yijklではなくxij × xklではダメ? 二次計画問題となり,MIPの枠外になる 質問など-> @_likr
- 42. 目的を何にするか 利益の和 – 費用の和の最大化 部門iを都市jに置く利益 Pij × xij 部門iを都市jに置き,部門kを都市lに置く費用 Cjl × Qik × yijkl 質問など-> @_likr
- 45. 問題 27マス(3 × 3 × 3)の立方体のマスに○か×を置いていく ○の数は14個,×の数は13個 線(3マスが一直線に並んでいる状態)は49本ある 27マス全てを埋めて,同じ記号が並んでいる線の数を最小にする組み合わせを求めよ 興味を持った人は考えてみてください 質問など-> @_likr