汎用数理計画法ソフトウエア NUOPT...

Post on 12-Feb-2020

1 views 0 download

Transcript of 汎用数理計画法ソフトウエア NUOPT...

汎用数理計画法ソフトウエアNUOPTの紹介と利用方法実演

檀 寛成

(株)数理システム 数理計画室

http://www.msi.co.jp/nuopt/

SI2004: 2004/12/18 – p.1/36

本発表の構成

数理計画問題とその分類

モデリング言語 SIMPLEとその特徴

NUOPTに実装されたアルゴリズム内点法

逐次二次計画法 (SQP法)その他の解法

次期バージョンの新機能紹介

数値実験の結果

GUIを用いたデモ

SI2004: 2004/12/18 – p.2/36

数理計画問題

数理計画問題

minimize

� � � �� � � � �

subject to � � �

『制約条件 � � �

の中で目的関数

の値を最小にするような点を求める』

最大化問題は目的関数を � 倍して最小化問題に帰着

���

の定め方で様々な問題クラスが存在

SI2004: 2004/12/18 – p.3/36

線形計画問題 (LP)

線形計画問題(Linear Programming Problem, LP)

� � minimize � � �� � � � �

subject to� � � �� � � �

全ての関係式が線形で表される

広い応用を持つ問題

SI2004: 2004/12/18 – p.4/36

非線形計画問題 (NLP)

非線形計画問題(Nonlinear Programming Problem, NLP)

� � � � � � minimize

� � � � � � � � �

subject to � � � � � ��

� � �

� � � � � � minimize

� � � � � � � � �

subject to � � � � � � � � � � � � ��

� � � � � � � � � � � � �

� � � � � � �

, � � � � � � �

�� �: 非線形関数であって構わない

SI2004: 2004/12/18 – p.5/36

二次計画問題 (QP)

二次計画問題(Quadratic Programming Problem, QP)

� minimize

�! �

� " � # � � �� � � � �

subject to

� � � �� � � �

目的関数:二次関数,制約条件:一次関数

SI2004: 2004/12/18 – p.6/36

混合整数計画問題 (MIP)

混合整数計画問題(Mixed Integer Programming Problem, MIP)

$ % � � minimize � � �� � � � �

subject to

� � � �� � � ��

� & � ' ��� ( � ) � * �

$ % � minimize

�! �

� " � # � � �� � � � �

subject to

� � � �� � � ��

� & � ' ��� ( � ) � * �

変数(の一部)が

� � 整数変数となっているSI2004: 2004/12/18 – p.7/36

線形計画問題: 実例

SI2004: 2004/12/18 – p.8/36

非線形計画問題: 実例

半導体プロセス (イオン注入パラメータ抽出)

Variable +� ,�-

Minimize

&' � � � & . +� ,�- � / & (!�

where

� � � . +� ,�- � �

�� � !

01 2 3 � ! �! # � � � # � 4 3

� � � # � � � 5 � ! �

6 � 4 � ! �!�

7 8 9 : �

� � ! � # � �

6 � 4 � ! �!�

� 4 � +! � 6 - ; ,! � 5 ��� � � + , � - # ; � 5 ��

� ! � � � - ; ,! < � 5 ��

� � � � - � � ,! � =

SI2004: 2004/12/18 – p.9/36

数理計画問題を取り扱うために

モデル定義

大規模なモデルを簡潔に記述したい

汎用的な記述をしたい

アルゴリズムの適用

微分値の必要性

モデルの制御

解のうち必要な部分のみを取り出したい

モデリング言語の必要性

SI2004: 2004/12/18 – p.10/36

数理計画問題を取り扱うために

モデル定義

大規模なモデルを簡潔に記述したい

汎用的な記述をしたい

アルゴリズムの適用

微分値の必要性

モデルの制御

解のうち必要な部分のみを取り出したい

モデリング言語の必要性

SI2004: 2004/12/18 – p.10/36

数理計画問題を取り扱うために

モデル定義

大規模なモデルを簡潔に記述したい

汎用的な記述をしたい

アルゴリズムの適用

微分値の必要性

モデルの制御

解のうち必要な部分のみを取り出したい

モデリング言語の必要性

SI2004: 2004/12/18 – p.10/36

数理計画問題を取り扱うために

モデル定義

大規模なモデルを簡潔に記述したい

汎用的な記述をしたい

アルゴリズムの適用

微分値の必要性

モデルの制御

解のうち必要な部分のみを取り出したい

モデリング言語の必要性

SI2004: 2004/12/18 – p.10/36

数理計画問題を取り扱うために

モデル定義

大規模なモデルを簡潔に記述したい

汎用的な記述をしたい

アルゴリズムの適用

微分値の必要性

モデルの制御

解のうち必要な部分のみを取り出したい

モデリング言語の必要性

SI2004: 2004/12/18 – p.10/36

モデリング言語 SIMPLEの特徴

数学的関係が自然な形で記述できる

Variable, Parameter, Constraint, Objective, ...

大規模モデルを簡便に記述できる

添字が利用可能

C++のクラスを生成するモジュール化が可能

外部からの制御が可能

必ずしも数理計画問題だけではなく,数理科学的な一般のシステムを記述できるように拡張可能

SI2004: 2004/12/18 – p.11/36

SIMPLEによる記述例 (1)

Hock & Schittkowski: No. 7

変数 � �� � !

目的関数(最小化)

01 2 � � # � !� � � !

制約条件

� � # � !� �! # � !! � 6

SI2004: 2004/12/18 – p.12/36

SIMPLEによる記述例 (1)

Hock & Schittkowski: No. 7

変数 � �� � !

目的関数(最小化)

01 2 � � # � !� � � !

制約条件

� � # � !� �! # � !! � 6

Variable x1, x2;Objective f(type = minimize);f = log(1 + x1 * x1) - x2;pow(1 + x1*x1, 2) + x2 * x2 == 4;

SI2004: 2004/12/18 – p.12/36

SIMPLEによる記述例 (2)

Set Brand;

Element i(set = Brand), j(set = Brand);

Variable x(name="組入れ比率", index=j);

Parameter Q(name="分散共分散行列", index=(i,j));

Parameter rbar(name="期待収益率", index=j);

Parameter rmin(name="ポートフォリオの期待収益率下限");

Objective f(name="リスク", type=minimize);

f = sum(Q[i,j]*x[i]*x[j], (i,j));

sum(x[j],j) == 1; //組入れ比率なので合計すると 1

sum(rbar[j]*x[j], j) >= rmin; //期待収益率下限制約

x[j] >= 0; //空売り禁止の制約

SI2004: 2004/12/18 – p.13/36

計算グラフと自動微分 (1)

SI2004: 2004/12/18 – p.14/36

計算グラフと自動微分 (2)

SI2004: 2004/12/18 – p.15/36

計算グラフと自動微分 (3)

SI2004: 2004/12/18 – p.16/36

内点法: 準備 (1)

線形計画問題・非線形計画問題に対する解法.

NLP(1)を標準形とする.

Lagrange関数:

> � �� /� ? � � � � � � /� � � � � ?� �

/: 制約条件 � � � � � � に対する Lagrange乗数

?: 制約条件 � � �

に対する Lagrange乗数

KKT条件:

@A

ABC D >� �� /� ? � � ��

� � � � � ��

E F G � ��E � ��F � �

E � H I 8 2 � � �� � � ���F � H I 8 2 � ? �� � ? ��� G � � �� �� � �

SI2004: 2004/12/18 – p.17/36

内点法: 概略 (1)

バリヤ KKT条件相補性条件

E F G � � に正のパラメータ J を導入.

次の方程式系の解を

� � � J � � / � J � � ? � J � � とする.

@A

ABK L � �� /� ? � M C D >� �� /� ? � � ��

K � � � � M � � � � � ��

K N � �� ? . J � M E F G J G � �

この条件をバリヤ KKT条件とよぶ.

K � �� /� ? . J � � � K L � �� /� ? � �� K � � � � �� K N � �� ? . J � � � �.

J を正の値から

に近づけることによって得られる� � � J � � / � J � � ? � J � � の軌跡をセンターパスという.

センターパスの極限が元の最適化問題の解である.SI2004: 2004/12/18 – p.18/36

内点法: 概略 (2)

各反復で次の方程式系 (バリヤ KKT条件に対するNewton方程式)を (近似的に)解く:

O P # E : �P F P ��P

� P �

Q � PQ / P

KPL E : �P K P N

KP�

O P:

C !D> � � P� / P� ? P � もしくはその近似行列

� P � C � � � � P � �Q ? P � E :�P F P Q � P E : �P K P N

O P が半正定値行列であり R が十分大きいとき,

Q � P

はペナルティ関数Sの降下方向となる.

J� R を適当にコントロールすれば,直線探索を行うことにより大域的収束性を確保できる.

SI2004: 2004/12/18 – p.19/36

内点法: イメージ

SI2004: 2004/12/18 – p.20/36

内点法: イメージ

SI2004: 2004/12/18 – p.20/36

内点法: イメージ

SI2004: 2004/12/18 – p.20/36

内点法: イメージ

SI2004: 2004/12/18 – p.20/36

内点法: イメージ

SI2004: 2004/12/18 – p.20/36

内点法: イメージ

SI2004: 2004/12/18 – p.20/36

SQP法: 準備 (1)

非線形計画問題に対する解法.

NLP(2)を標準形とする.

Lagrange関数:

> � �� / � � � � � � � T U V W U X

/ � � � � � ��

/ � � � � � � Y � � � : Lagrange乗数

KKT条件:

@A

ABC D >� �� / � � ��

� � � � � � � � � � � � � �

� � � � � � �� / � � �� / � � � � � � � � � � � � � �

SI2004: 2004/12/18 – p.21/36

SQP法: 概略 (1)

現在の反復点 � P で部分問題を解く.

部分問題: 現在の反復点 � P における元の問題NLP(2)の二次計画問題 (QP)による近似

minimize

�! Q �

� O P Q � # C � � � P � � Q �

subject to � � � � P � # C � � � � P � � Q � � � � � � � � � �

� � � � P � # C � � � � P � � Q � � � � � � � � �

O P:

C !D> � � P� / P � もしくはその近似行列

Q � P: この部分問題の解

点列

' � P ( を � P Z � � � � P # [ P Q � P として生成( [ P: ステップサイズ)

SI2004: 2004/12/18 – p.22/36

SQP法: イメージ

SI2004: 2004/12/18 – p.23/36

SQP法: イメージ

SI2004: 2004/12/18 – p.23/36

SQP法: イメージ

SI2004: 2004/12/18 – p.23/36

SQP法: イメージ

SI2004: 2004/12/18 – p.23/36

SQP法: イメージ

SI2004: 2004/12/18 – p.23/36

SQP法: イメージ

SI2004: 2004/12/18 – p.23/36

SQP法: イメージ

SI2004: 2004/12/18 – p.23/36

SQP法: イメージ

SI2004: 2004/12/18 – p.23/36

SQP法: イメージ

SI2004: 2004/12/18 – p.23/36

SQP法: イメージ

SI2004: 2004/12/18 – p.23/36

NUOPTの内点法・SQP法

標準的な内点法・SQP法

大規模問題に適した内点法・SQP法を独自に開発内点法:Hiroshi Yamashita, Hiroshi Yabe and Takahito Tanabe,

A globally and superlinearly convergent primal-dual interior point trust region

method for large scale constrained optimization, Mathematical Programming,

to appear.

SQP法:Hiroshi Yamashita and Hiroshige Dan,

Global convergence of a trust region sequantial quadratic programming

method, Journal of Operations Research Society of Japan, to appear.

SI2004: 2004/12/18 – p.24/36

NUOPTに実装されているアルゴリズム

内点法

直線探索法を用いるもの (LP, convex NLP)準ニュートン法を用いるもの (NLP)信頼領域法を用いるもの (NLP)LP専用内点法 (LP)

逐次二次計画法

準ニュートン法を用いるもの (NLP)信頼領域法を用いるもの (NLP)

単体法 (LP) /有効制約法 (QP)

分枝限定法 (MILP, MIQP)

SI2004: 2004/12/18 – p.25/36

次期バージョン新機能紹介 (1)

制約充足アルゴリズム

制約充足問題: 制約を満たすように変数に値を割り当てる問題(例)看護士のスケジューリング毎日一定数以上の看護士を確保する一定日数以上の連続勤務は許さないその他様々な条件

『京都大学「問題解決エンジン」グループの開発による制約充足アルゴリズム』を組み込み

モデリング言語 SIMPLEによって問題記述可能

実務的な制約も容易に記述可能

SI2004: 2004/12/18 – p.26/36

次期バージョン新機能紹介 (2)

大域的最適化アルゴリズム

一般の非線形最適化問題を連続的に凸緩和し,大域的な最適性を保証する解を出力

局所解が多数存在する問題や,精度が要求される複雑な非線形最適化問題への応用が可能

SI2004: 2004/12/18 – p.27/36

数値実験の結果 (1)

計算環境 (の一例)CPU:Pentium IV 1.5Ghz, Memory:1GbyteC, C++, Fortran 77

実験問題

... (LP)金融工学におけるマルコビッツモデル (QP)Hock & Schittkowski問題集 (NLP)CUTE/CUTEr問題集からの抜粋 (NLP)MIPLIB問題集 (MILP)

SI2004: 2004/12/18 – p.28/36

数値実験の結果 (2)

内点法による LP対する結果

Problem vars. cons. nonz. timeLP1 383927 201156 1053564 208.3LP2 161692 132021 1868865 170.5LP3 283250 139758 2408585 364.7LP4 308634 246078 902275 74.4

計算時間は非零要素数に依存

SI2004: 2004/12/18 – p.29/36

数値実験の結果 (3)

有効制約法によるマルコビッツモデルに対する結果

vars. cons. time100 2 0.03500 2 0.08

1000 2 0.251500 2 0.272000 2 0.455000 2 0.91

10000 2 1.86

制約条件数が少なく有効制約法が有利

SI2004: 2004/12/18 – p.30/36

数値実験の結果 (4)

[Hock & Schittkowski問題集]

小規模 NLPを集めたベンチマーク問題集(115題)変数:

� <

,制約:

� �

内点法: 114題求解可能

SQP法: 113題求解可能解けなかった問題問題 No.13(内点法・SQP法共に求解不可)制約想定(KKT条件が最適性の条件となるための前提)が成立していない問題 No.87(SQP法で求解不可)目的関数が連続微分不可能

NLPに十分適用可能

SI2004: 2004/12/18 – p.31/36

数値実験の結果 (5)

SQP法による CUTE/CUTEr問題集に対する結果

Problem vars. cons. iter. val.\

timeBRATU2D 3200 2888 4 4.3e-12 43.69BRATU2D 5184 4900 16 1.8e-09 893.99CHANDHEQ 100 100 9 9.5e-07 0.82CHEMRCTA 5000 5000 70 7.0e-11 119.09EXPFITC 5 502 118 5.7e-10 0.74GAUSSELM 506 1135 21 1.6e-17 3.66GRIDNETA 7564 3844 2 1.8e-16 28.37HYDROELL 1009 1008 2 3.5e-15 0.58NLMSURF 5625 0 39 3.2e-07 1927.46ORTHREGA 8197 4096 9 7.2e-07 406.38

SI2004: 2004/12/18 – p.32/36

数値実験の結果 (4)

NUOPTが求解可能であった問題数(CUTE/CUTEr問題集)

問題規模 問題数 内点法 SQP法 全体

100変数 100制約以下 304 281 269 293

500変数 500制約以下 78 64 60 69

1000変数 1000制約以下 36 17 26 30

3000変数 3000制約以下 24 18 17 20

3000変数 3000制約以上 27 20 17 22

合計 469 400 389 434

SI2004: 2004/12/18 – p.33/36

数値実験の結果 (6)

分枝限定法による MIPLIB問題集対する結果

Problem vars. cons. intvs. timefiber 1298 364 1254 32.6pp08aCUTS 240 247 64 2011.1air05 7195 427 7195 1199.6qnet1 1541 504 1417 6.3bell3a 133 124 71 65.9pk1 86 46 55 344.1l152lav 1989 98 1989 11.4air03 10757 125 10757 2.4cap6000 6000 2177 6000 1985.1

変数/制約が少なくても解きにくい問題もあるSI2004: 2004/12/18 – p.34/36

GUIを用いた実演

基本的な使い方の紹介

Excelとの連携機能の紹介

SI2004: 2004/12/18 – p.35/36

まとめ

汎用数理計画法ソフトウエア NUOPTモデリング言語による問題記述

様々なクラスの問題を取り扱うことができるアルゴリズムの実装

独自アルゴリズムの開発

使いやすい GUIインタフェース

SI2004: 2004/12/18 – p.36/36