Nuorium Optimizer V24リリース

  • HOME
  • Nuorium Optimizer V24リリース

2022年3月28日に Nuorium Optimizer V24 をリリースします。
本記事では製品の名称変更と新機能についてご紹介します。

製品の名称変更

もともと「数理最適化を行う場所」という意味を持つ GUI 環境 Nuorium が製品に付属しています。 この Nuorium を継承し、「数理最適化を行う上で欠かせない存在」として今後も皆様のお手元で お役に立ち続けたいという想いを込めて Numerical Optimizer から Nuorium Optimizer(ニューオリウムオプティマイザー)に変更します。

Nuorium Optimizerのロゴも公開します。

シンボルマークは対となった青と黒の帯によって出来上がる立体的な図形が数理最適化をイメージさせます。 また、「NUOPT」の頭文字および Numerical Optimizer の現行ロゴを想起する「N」を基調としたデザインになっています。

Nuorium Optimizer V24 の新機能

以下の機能が追加・強化されます。

  • アルゴリズム:QP 単体法の追加
  • PySIMPLE:IIS とオブジェクトのシリアライズ
  • wls:二次制約への対応
  • Nuorium:ターミナル機能
  • 定式化技法集
  • RSIMPLE:R インターフェースの追加

アルゴリズム:QP単体法の追加

線形計画問題に対する解法の一つに単体法と呼ばれるアルゴリズムがあります。 V23 にて当社従来の単体法よりもスパース性をより活用するスパース単体法(hsimplex)を導入しました。 hsimplex は特に、ハイパースパース性を持つ問題(スパースな基底解が多い問題)に対して高速に動作します。 例えば、発電計画問題などはハイパースパース性を持つ場合があります。

V24 では二次計画問題に対して hsimplex を拡張したアルゴリズム QP 単体法を実装しました。 こちらもハイパースパース性を持つ問題に対して高速に動作します。 二次計画問題を解く際には、解法の一つとしてぜひご検討ください。

PySIMPLE:IIS とオブジェクトのシリアライズ

線形計画問題において互いに矛盾する制約式がある場合、その最小の組を IIS(Irreducible Infeasible Set)と呼びます。 この IIS を Python オブジェクトとして取得できるようになりました。 実行不可能な場合に、原因となる制約の特定や、その制約に対するケアなどを自動化する強力な手助けとなります。

x = Variable(lb=0)
y = Variable(lb=0, ub=1)
z = Variable(lb=0)
p = Problem()
p += x + y + z
p += y + z >= 0, 'cons1'
p += x + y >= 5, 'cons2'
p += x + z <= 3, 'cons3'
p.solve(silent=True) # 実行不可能
print(p.result.iis)  # IIS オブジェクトの表示
# 0: cons2: violation=-1
#     x+y>=5
# 1: cons3
#     -x-z>=-3

また、PySIMPLE のオブジェクトをシリアライズできるようになりました。 この機能を用いると求解後の変数値を保存しておき、モデルを変更したときに 以前得た解を初期値に与えて実行可能解であるかどうかを直ぐに判断できるなど、 モデル開発と保守に大きく貢献します。

i = Element(value=[1, 2, 3])
x = Variable(index=i)
with open('dump.pkl', 'wb') as f:
    Serialize.dump(x, f)
with open('dump.pkl', 'rb') as g:
    x_ = Serialize.load(g)

その他の使い方はマニュアルをご覧ください。

wls:二次制約への対応

局所探索法の wls は更なる活躍を広げるべく二次制約と unbound な整数変数に対応しました。 二次制約は目標値とのブレを一定水準以下に抑えたいといった場面で登場します。 より実務に合わせた制約式を定義して求解できるようになります。

Nuorium ターミナル機能

Nuorium ではこれまでモデリング言語 SIMPLE の記述を中心に、より快適・円滑にモデル編集や解析ができるように、 テキストエディタとしての側面も重要視して強化してきました。 この汎用的な高機能テキストエディタとしての特徴はそのままに、Nuorium の version 6 では更にターミナル機能を搭載しました。 cmd(コマンドプロンプト)や PowerShell(パワーシェル)といったシェルを呼び出す端末として Nuorium を利用できます。

例えば編集中のモデル model.smp を表示したまま、画面分割を行ってコマンドプロンプトを呼び出し、 mknuopt model.smp というビルドコマンドを実行できます。

ビルドに成功すれば、そのまま model.exe と入力してモデルも実行できます。 Ctrl-Shift-T でコマンドプロンプトを外部呼び出しできますが、 version 6 より Nuorium 上でも呼び出せるようになります。

ターミナル機能はシェル設定画面からユーザ設定が可能です。 下図は Python のインタラクティブモードの呼び出し設定です。

これによって例えば PySIMPLE をインタラクティブに使用することも可能になりました。 ターミナル機能の搭載で Nuorium 上での編集作業がより効率的に、そして多面的になりました。 是非、新しい Nuorium をご体験ください。

定式化技法集

開発版をご購入されたユーザー様がモデリングを独自に行う際に、役立つ様々なテクニカルドキュメントを公開します。

私たちは『特殊なケースでの定式化技法』という資料を公開していましたが、 この機会に大幅に見直し、実践的な実務家となるために必要な定式化の様々な技法の整理・充実を図りました。 重要となる概念ごとに一つのトピックとしてまとめ、それらの関連性についても整理しています。

実際に役立つテクニックばかりで、実務家としてモデリングに取り組む際には必携です!

RSIMPLE:R インターフェースの追加

統計解析ソフトウェア R をインターフェースとする「RNUOPT」が、「RSIMPLE」として Nuorium Optimizer に加わります。 RSIMPLE を用いると、例えばロジスティック回帰モデルは次のように記述できます。

M <- Set()
i <- Element(set=M)
L <- Set()
l <- Element(set = L)
X <- Parameter(index=dprod(l,i),X.d)
t <- Parameter(index=l,t.d)
a <- Variable(index=i)
a0 <- Variable()
y <- Expression(index=l)
y[l] ‾ exp(Sum(a[i]*X[l,i],i)+a0) / (1+exp(Sum(a[i]*X[l,i],i)+a0))
mle <- Objective(type="maximize")
mle ‾ Sum(t[l]*log(y[l])+(1-t[l])*log(1-y[l]),l)

RSIMPLE を通じて、R が備えている統計解析機能と Nuorium Optimizer の提供する数理最適化機能を連携した分析が可能です。

さいごに

新しくなった Nuorium Optimizer と共に、複雑化する社会において数理最適化で価値を見出す会社としてより一層精進します。 今後とも当社並びに Nuorium Optimizer をどうぞよろしくお願いします!

監修:株式会社NTTデータ数理システム 機械学習、統計解析、数理計画、シミュレーションなどの数理科学を 背景とした技術を活用し、業種・テーマを問わず幅広く仕事をしています。
http://www.msi.co.jp NTTデータ数理システムができること
「数理科学の基礎知識」e-book無料ダウンロードはこちら

関連記事