トップ > 製品概要 > Numerical Optimizer FAQ

Numerical Optimizer FAQ

INDEX
一般的な質問
数理計画法って?
Numerical Optimizerは何をするの?
どこで作られたソフト?
導入実績と適用事例は?
価格とライセンス形態は?
どのようなプラットフォームで動作するの?
(株)NTT データ数理システムはパッケージ販売のみ?
モデル記述とデータについて
モデルとデータって何?
SIMPLEの記述はどんなもの?
新しい言語を覚えるのはちょっと...?
モデルは自分で書くの?(数式はちょっと...)
データはどうやって受け渡しするの?
Numerical Optimizerを使ってアプリケーションを作成することは可能?
数理計画法アルゴリズムについて
Numerical Optimizerが解ける数理計画問題の範囲は?
大域的最適解は求まるの?
アルゴリズムについてはよく知らないのだけど...
どの程度の規模の問題がどのくらいの速度で解けるの?
非線形関数の微係数は与える必要があるの?
扱っている問題には折れ線関数や条件判定が含まれるのだけど...
扱っている問題は式で表現できないのだけど...
その他
Numerical Optimizerの持っているGUI(Ver5以降)の機能は?
SNUOPTとは?

モデル記述とデータについて

モデルとデータって何?

最適化問題とは

変数
目的関数  → 最小化
制約条件  
(2つの拠点の最適生産日数 を求める)
            

のようなものです。しかし、このような数字を含んだ式の羅列では、データが変化したり、特に問題が大規模になった場合の管理や式の理解が難しくなります。これを

変数  
最小化
制約
               

のように問題を一旦抽象的に表現して(モデル記述)、数字の部分(データ)を

として別に与えた方が問題の構造が明らかになり、データが変化したり、問題が大規模になった場合にも対処しやすくなります。Numerical Optimizerのモデリング言語SIMPLEはこのように数理計画問題をモデルとデータに分離して記述する手段を提供している(もちろん分離しない状態での記述も可能です)ので、大規模モデルでも簡潔にわかりやすく記述できます。この特性は例えばMicrosoft Excelに付属しているソルバー機能にはありません。ソルバーでは、データとモデルが分離されていないので、データがかわるたびに式の定義を行いなおす必要があります。

SIMPLEの記述はどんなもの?

SIMPLEはC++のクラスライブラリとして実装されていますので、C/C++に非常に似通った外観を持ちます。前項の最初の例は次のようになります。

// 簡単な LP
Variable x;    
Variable y;
Objective cost(type=minimize);    
cost = 180*x + 160*y; 
6*x + y >= 12;   
3*x + y >= 8;    
4*x + 6*y >= 24; 
0 <= x <= 5;
0 <= y <= 5; 

外部からデータを入力するには、変数と目的関数に当たるのは Variable,Objective として宣言し、変数同士の演算によって式そのものを表現します。使う演算子は C++(C)のものと全く同じです。モデルを抽象化してデータを外から与える場合には、定数データ( Parameter)、集合(Set)、添字( Element)という概念が必要となりますが、その場合には次のような記述となります。

Set N,P;
Element j(set=N),i(set=P);
Variable x(index=j);
Parameter c(index=j),d(index=i);
Parameter a(index=(i,j));
Objective cost(type=minimize);
cost = sum(x[j],j);
sum(a[i,j]*x[j],j) >= d[i];
5 >= x[j] >= 0;

これは前項の二つめの例に対応する記述です。添字を使った和( sum)の表現など簡潔にモデルが記述できることにご注意ください。

新しい言語を覚えるのはちょっと...

SIMPLE によるモデルの記述量はあまり多いものではありませんので、それほど習得に手間はかかりません。記述の大部分は既存の例題の一部修正やカット、ペーストで済みます。マニュアルにはチュートリアルが付属していますし、簡単なご質問への E-mail( nuopt-support@msi.co.jp )ベースでの解答や特別セミナー(有償)の制度を通じてサポートいたします。

モデルは自分で書くの?(数式はちょっと...)

はい、Numerical Optimizerを使うには適用する問題を数式の形で表現して与える必要があります。しかし、数理計画法の定式化には明らかなパターンがあり、殆どの応用は既存の例題の一部を組み合わせたり、書き換えるのみで可能ですので、最初から式を起こさなければ成らないということは殆どありません。Numerical Optimizerは典型的な例題が多数付属しておりますし、NTT データ数理システムはお考えの問題がNumerical Optimizerを使って定式化可能かどうかを判定したり、定式化を行って解いてみるサービスを無償【注】で提供しておりますので、どうぞご利用ください。具体的な問題をお持ちの方は NTT データ数理システム( nuopt-info@msi.co.jp)までお気軽にどうぞ。定式化一般についてのセミナーも随時開催しております。

【注】問題の複雑さ・規模により、場合によっては有償とさせて頂く場合もございますので予めご了承ください。質問を頂くことに対しましては大歓迎です。

データはどうやって受け渡しするの?

Windows上またはUNIX上のテキストファイル(テキスト形式、CSV形式)、Excelのセル、ユーザの作成したプログラム(C/C++の配列)のいずれからでもデータを与え、また結果を出力することができます。モデルはすべての場合で共通に利用できます。Excelのセルからデータを与える場合には、Numerical Optimizerが提供するExcelアドインを使って指定します。ユーザの作成したプログラムから与える方法は詳しくはマニュアルに具体的に解説されています。Windowsでは、Visual Studio【3】の環境に、UNIXでは、gccやSolarisのCCを使ってユーザプログラムとNumerical Optimizerを連結して、数理計画モデルにデータを与えることができます。「SNUOPTとは?」で説明しているSNUOPTではSPLUS環境と直接データを受け渡しすることが可能です。

Numerical Optimizer の Excel 連結機能を使ったデモンストレーションの例

Numerical OptimizerのExcel連結機能を使ったデモンストレーションの例

Numerical Optimizerを使ってアプリケーションを作成することは可能?

可能です。Numerical Optimizerはモデリング言語をそのままコンパイルしてライブラリ化する方法を提供している他、旧来の数理計画法ライブラリに整合する形で、問題の係数行列を入力して関数をコールして解を返すという以下のようなインタフェースを持つライブラリを提供しています。

nuoptResult*
solveLP // LPを解くインタフェース

(
nuoptParam* options
,int n,int m
,int minimize
,double* x0
,double* bL,double* bU,int* ibL,int* ibU 
,double* cL,double* cU,int* icL,int* icU
,double* objL 
,int nAelem,int* irowA,int* jcolA, double* a
,int* ivtype = 0
,int* pri  = 0
,int* dir = 0
,int* until = 0
,double* upc = 0
,double* dpc = 0
);

例えばVisual Studio【3】があればこのライブラリを使って .exeや.dllなどの実行形式を作成することは自由に可能で、作成した.dllを例えばVB、ExcelのVBAから起動するなどの利用形態【4】が可能です。

なお、Numerical Optimizer の外部接続のサンプルにつきましてはパッケージと一緒に配布されております【5】のでご参照ください。

Numerical Optimizer を使ったアプリケーション作成の実例

Numerical Optimizer を使ったアプリケーション作成の実例
Numerical Optimizerを使ったアプリケーション作成の実例(ポートフォリオ).DLL+ExcelVBA

【3】具体的な対応状況につきましては「対応機種/OS」のページをご確認ください。

【4】作成した実行形式を配布して実行するためには Numerical Optimizer の実行ライセンスが必要となります。
実行ライセンスにつきましては nuopt-info@msi.co.jp までお問い合わせください。

【5】 Numerical Optimizer のインストール先が C:¥Program Files¥NUOPT の場合、
  C:¥Program Files¥NUOPT¥SAMPLES¥app
に外部接続のサンプルはございます。

他の