トップ > 製品概要 > NUOPT の更新情報 > NUOPT 6 の更新情報

NUOPT6の更新情報

NUOPT 6 の新機能等を紹介いたします。

  1. GUI 部分(Windows版のみ)
    1. モデル、データファイルの扱い(外部のエディタの起動)
    2. 外部環境との親和性
    3. グラフ機能追加

  2. モデリング言語部分
    1. エラー出力の強化
    2. データの上書き
    3. 浮動小数点エラーの検出
    4. アンチウイルスソフトとの並存による不具合の解消

  3. 数理計画アルゴリズム本体部分
    1. 非線形計画法に対する逐次二次計画法(SQP法)の導入
    2. 整数計画法の高速化
    3. 内点法の安定化
    4. 基底からのリスタート機能

1. GUI 部分(Windows版のみ)

Ver.6ではユーザの方々の声を取り入れ、より使いやすく機能アップしました。 GUI を通してしかアクセスできなかったファイルを外で編集したり閲覧したりできるようになったことが大きな変更です。

1.1. モデル、データファイルの扱い(外部のエディタの起動)

モデル(.smp)とデータ(.dat/.csv)アイコンの実体はユーザの管理する任意のディスクスペース上にあるものとし、ユーザの編集がその都度反映されるようになりました。Ver.5ではモデル、データをエクスプローラからGUIのボードにドラッグ&ドロップすると、その都度GUI内にコピーが生成されるので、ユーザがエクスプローラ上に作成したモデル、データを変更してもその変更がGUIには反映されず、GUIが提供する手段でしかモデルやデータの編集ができませんでした。Ver.6ではモデル、データファイルをドラッグ&ドロップしても、GUIはコピーではなく、ファイルをリンクとして認識します(各アイコンはオリジナルのファイルの絶対パスを記憶します)。そのため、モデルやデータファイルを任意のエディタで編集し、その都度最適化に反映させることができます。

GUIからモデル、データの編集メニューを押した際には外部のエディタプログラム(デフォルトは「メモ帳」)が立ち上がります。これによって、Ver.5で問題となっていたモデルやデータの編集画面がボードに重なって作業がしずらくなることも避けられます。またエディタプログラムをユーザが指定することも可能です。 Ver.5のモデル、データ編集エディタには印刷という機能がありませんでしたが、Ver.6では外部エディタを通じて、印刷が可能になります。

1.2. 外部環境との親和性

Ver.5では最適化の結果を見るにはNUOPTGUIをいったん通す必要がありましたが、Ver.6では、最適化を行うと、その関連付け先のモデルファイルのあるフォルダに result という名前のフォルダを作成してそこに結果がまとめて格納されるようになりました。

さらに、デバッグ用やテスト実行のためにExcel連携を行った場合のExcelからの内容と等価なデータファイル(.dat)がモデルファイルのあるフォルダに excel.dat という名前で作成されるようになりました。また、モデルに対応する実行モジュールもモデルファイルのあるフォルダにコピーされます。

1.3. グラフ機能追加

NUOPTGUI固有のツールとしてグラフを描くアイコンが追加され、Excelを経由せずとも計算結果をグラフ表示することができるようになりました。「NUOPTWindows版マニュアル」の「1.13.7 NUOPTグラフ描画機能によるグラフ描画」にその具体例がございます。

2. モデリング言語部分

数理計画問題を記述する付属のモデリング言語SIMPLEの機能改良です。
特にエラーチェックまわりが充実しました。浮動小数点エラーやデー タファイルのエラー、その他の実行時エラーもモデル記述の行番号で特定でき るようになりましたので、モデルのデバッグが容易になります。ユーザー支援に関する機能が増強されています。

2.1. エラー出力の強化

Ver.6より、モデルやデータファイルにエラーがあった場合、エラーメッセージとともにエラーの検出された行番号を出力するようになり、デバッグが容易になりました。Ver.5では変数やパラメータ利用の場所が宣言の場所よりも先に現れている場合のエラーが別のエラーに見えるという不具合がありましたが、それについても修正しています。

2.2. データの上書き

Ver.5よりパフォーマンスの下落を防ぐため、同一の名前のオブジェクトをデータファイルから複数回定義することを禁止しておりますが、Ver.6ではその扱いを緩め、

options.multDataPolicy = 1;

とすると、許すようになりました。詳細は「SIMPLEマニュアル」の「7.3 データ名の重複について」をご覧ください。

2.3. 浮動小数点エラーの検出

非線形最適化の実行時、ゼロ割やオーバーフローが起きた場合に、原因をモデリング言語の行番号単位で追跡して表示する機能が追加されました。

2.4. アンチウイルスソフトとの並存による不具合の解消

Ver.5ではアンチウイルスソフトがリアルタイムディスク保護を行っている場合、大規模な問題においてモデリング言語の解釈速度が低下するという問題がございました。Ver.6ではNUOPT側でこの対策を講じ解決されております。このため、場合によっては数倍程度の実行速度の向上が得られます。

3. 数理計画アルゴリズム本体部分

NUOPT本体のライブラリ部分に対する機能強化について説明します。

3.1. 非線形計画法に対する逐次二次計画法(SQP法)の導入

内点法に加えて逐次二次計画(Sequential Quadratic Programming:SQP)法が組み込まれました。SQP法は非線形計画問題の解法の一つとしてよく知られていますが、今回組み込んだSQP法は、大規模問題におけるパフォーマンスを考慮した数理システム独自のアルゴリズムに基づくものです。その実装においては大規模問題に対する単体法・有効制約法・内点法において弊社が培ったノウハウが注入されております。数値実験の結果、既存の内点法と同等の安定性を備えていることが確認され、一部の問題では内点法よりも安定かつ高速に解を求めることができます。

変数および制約式数がいずれも3000個以下の非線形計画問題421問(ベンチマーク問題集CUTEより選択)中、内点法のみで解けるのは359問(85%)でしたが、SQP法を解法の選択肢として加えると、388問(92%)を解くことができるようになりました。

3.2. 整数計画法の高速化

Ver.6では混合整数計画問題の実行速度が大幅に改善しました。以下は混合整数線形計画問題の実験例です。

 

#変数

#制約式

#整数変数

Ver.6(秒)

Ver.5(秒)

倍率

MIP1

124

133

71

38.4

89.7

2.3

MIP2

504

1541

1417

7.1

12.2

1.7

MIP3

1225

1152

672

6.4

11.5

1.8

MIP4

98

1989

1989

11.4

13.3

1.2

MIP5

106

117

64

76.3

482.1

6.3

MIP6

92

104

58

8.6

34.8

4.0

MIP7

213

260

259

86.6

139.8

1.6

MIP8

292

556

315

200.2

642.1

3.2

MIP9

2055

10724

10724

146.3

1027.9

7.0

MIP10

332

45

45

39.8

85.3

2.1

MIP11

144

572

572

2.5

13.7

5.5

MIP12

1393

1224

408

112

251.9

2.2

MIP13

1369

1152

384

8.2

10.8

1.3

MIP14

37

87482

87482

44.3

258.9

5.8

MIP15

1193

840

48

397.2

1566.5

3.9

MIP16

457

1541

1417

3.6

10.8

3.0

MIP17

364

1298

1254

31.8

67.9

2.1

MIP18

1249

1224

720

88.4

284.9

3.2

MIP19

1855

1886

192

8.6

54.9

6.4

MIP20

235

378

168

120.6

267

2.2

利用マシン:Pentium1.5GHz +1Gバイトメモリ。
以下実験例は同一マシンによるもの。

3.3. 内点法の安定化

一部の大規模問題に見られる性質:

が引き起こす数値的問題に対する対策を改良して、計算の安定性を向上しました。この改良はすべての内点法による解法(直線探索法・信頼領域法・高次方向を用いる線形計画問題専用内点法)に有効です。この対策の組み込みにより、10万変数以上の大規模問題を含む線形計画問題115問のセットで全問題が正常に最適化できました(以前は3問失敗)。また1つの問題(14万変数、28万制約)では1176秒だった計算時間が404秒に短縮しています。

3.4. 基底からのリスタート機能

単体法・有効制約法によって線形・二次計画問題を解いた際に、その最適解の情報(基底)を利用し、類似の問題の最適化を高速化します。この求解をリスタートと言います。類似の問題とは、制約の上下限値、目的関数の係数、制約式の係数行列の要素、ヘッセ行列の要素(二次計画の場合)のそれぞれ一部が異なる問題を想定しています。次は線形計画問題の単体法による求解について、通常の単体法による求解時間と、類似の問題(違いは数個の制約式上限)の基底情報を利用した場合の求解時間を比較したものです。

 

変数

制約式

単体法

リスタート

LP1

3489

2325

10.4秒

1.1秒

LP2

946

441

2.5秒

0.9秒

LP3

1988

941

6.9秒

1.2秒

LP4

2750

398

3.3秒

0.5秒

LP5

2031

2158

7.0秒

1.0秒

いずれも基底情報を使うと数倍に高速化され、類似の問題を連続して解く場合にリスタート機能が有効であることがわかります。