トップ > 製品概要 > Numerical Optimizer 更新情報

Numerical Optimizer 更新情報

Numerical Optimizer V23 の新機能

Numerical Optimizer V23 の新機能情報を公開中です。

1. ソルバ/ライブラリ

新アルゴリズム WLS

Numerical Optimizer に新たなメタヒューリスティクス解法 wls(重み調整局所探索法)が追加されました。 整数計画問題に対して、データ構造「隣接リスト」を用い効率的に解を探索します。 二次の目的関数やソフト制約付きの最適化問題も取扱可能です。 集合被覆問題、集合分割問題などをはじめとしたすべての係数が 0 か 1 の制約式を多く含む問題に対してより高速な求解が実現されます。 以下の例のように、PySIMPLE で従来通り定式化を記述した後アルゴリズムに wls を指定するだけで使用可能です。

## PySIMPLE 新アルゴリズム wls のサンプル
from pysimple import *
x = BinaryVariable()
y = IntegerVariable(lb=-1, ub=3)
z = BinaryVariable()
p = Problem(name="wlsサンプル")
p += x - 2 * y + 3 * z
p += x + z == 2
p += 3 * x + 2 * y - z <= 0
p.options.method = "wls" # アルゴリズムに wls を指定
p.solve() # wls で求解される

解の修復機能

Numerical Optimizer の分枝限定法に解の修復機能が追加されました。 この機能により、制約を満たしそうな整数変数の値を与えて、連続変数の値をソルバに決定させる、などが可能となります。 以下の例では 0-1 整数変数 x, y の値だけ与えておき、連続変数 z の値をソルバに決定させています。 解の修復が終わると通常の分枝限定法を開始します。

// SIMPLE 解の修復機能のサンプル
IntegerVariable x(type=binary); IntegerVariable y(type=binary);
Variable z; z >= 0;
x + y >= 4 - z;
Objective f(type=minimize); f = z;
options.branchRepairSolution = "on"; // 解の修復機能を有効にする
x = 1; y = 1; // 整数変数 x, y の値のみ与える
solve(f); // 連続変数 z の値を修復してから分枝限定法を開始

## PySIMPLE 解の修復機能のサンプル
from pysimple import *
x = BinaryVariable(init=1) # 整数変数 x を定義して初期値を与える
y = BinaryVariable(init=1) # 整数変数 y を定義して初期値を与える
z = Variable(lb=0)
p = Problem()
p += x + y >= 4 - z
p += z
p.options.branchRepairSolution = True # 解の修復機能を有効にする
p.solve() # 連続変数 z の値を修復してから分枝限定法を開始

2. PySIMPLE

詳細はこちらのページをご覧ください。

二次計画問題への対応

制約式、目的関数に二次式を含む二次計画問題を扱うことができるようになりました。

メタヒューリスティクスアルゴリズム wcsp/wls の利用

重み付き制約充足問題に対するメタヒューリスティクス解法 wcsp を呼び出せるようになりました。 また、新たなメタヒューリスティクス解法 wls を利用できるようになりました。

高速化

V22.1.0 と比較して 19.5% の高速化を達成しました。

3. Nuorium

ライブリロード機能

ドキュメント化した SIMPLE ファイルや Markdown ファイルを、ブラウザを通して HTML ドキュメントとして同期表示するライブリロード機能を追加しました。

レポート作成を追加

最適化計算を総合的に要約するレポートを作成する機能を追加しました。簡易的な報告であれば、この機能によって即座にレポートを作成できます。

ステータスバーに実行時の進捗報告

最適化計算中の進捗状態をステータスバーに表示できるようになりました。 これによって現在稼働中のマルチスレッド数や、終了条件の進捗をリアルタイムに監視できるようになりました。

実行関連

実行単位が無指定の場合は、拡張子に応じた実行(ユーザ設定可能)を行う挙動に変更しました。 これにより SIMPLE ファイル以外の場合について、ユーザはデフォルトでよく使う実行形式を選択可能となります。 例えば .py の拡張子に対して、好みの python.exe を指定するといったご利用方法となります。

キーバインド追加

マルチカーソルから連番を生成できるようになりました。これにより、より省力な編集作業が可能になります。

Grep バッファ

エディタ上で横断的に正規表現検索が可能な Grep バッファを搭載しました。Nuorium で完結した作業をこれまで以上に体験することが可能となりました。

4. V22 との互換性

  1. options.maxmem や分枝限定法の出力における mem の単位を MB から MiB に統一しました。
  2. SIMPLE において wcsp のペナルティ取得関数名を変更しました。
    • result.getHardPenaltyBest() を result.hardPenalty に変更しました。
    • result.getSemihardPenaltyBest() を result.semiHardPenalty に変更しました。
    • result.getSoftPenaltyBest() を result.softPenalty に変更しました。
  3. method を指定せずに MINLP を解こうとした場合、エラーとなるように変更しました。
  4. PySIMPLE の互換性については PySIMPLE マニュアル 6. 更新履歴をご参考ください。

過去の Numerical Optimizer の更新情報

Numerical Optimizer の各バージョンにおける更新情報を記録しております。なお、各ページについてリリース当時の社名等で表記しております。