最適化セミナーのご案内

1. はじめに

 このドキュメントでは,簡単なデモンストレーションを通じて,Numerical Optimizer注1と外部プログラムの連結方法を解説します.Windows版ではVisualC++のIDE注2を利用した例を用います.外部プログラムとの連結方法には大きく分けて,

 (ア)実行形式を作成して別プロセスで起動する(第2章)

 (イ)ライブラリsolveLPsolveQPをコールする(第3章)

 (ウ)SIMPLEのモデル記述を手続きの中に記述して利用する(第4章)

 (エ)SIMPLEのモデル記述からクラスを生成して利用する(第5章)

という四つの方法があります.このドキュメントではこれらについて順に解説します.各方法の簡単な説明は,次の通りです.

 

 (ア)の方法はNumerical Optimizerを外部プログラムとして別プロセスで起動する方法です.プロセス起動やデータのやり取りにオーバーヘッドがありますが,実装・デバッグは最も容易です.

 (ア)以外の(イ)(ウ)(エ)は,いずれもNumerical Optimizerをライブラリとしてリンクし,その機能を利用する方法です.

 (イ)はLP,MILP,QPに属する問題をSIMPLEを介さずに専用の関数を使って解く方法です.高速ではありますが,ユーザ側でデータを標準形に変形する必要がございます.

 (ウ)(エ)はいずれもSIMPLEを介する方法です.(ウ)は(エ)よりは簡便ですが,Numerical Optimizerのライブラリがリンクされているプログラム全体で同時に一つの問題しか扱うことができません.(エ)は手順がやや複雑になりますが,複数の問題を一つの外部プログラムで操作することが可能です.ただし,一部のUNIX/Linux環境では(エ)の方法をサポートしておりません.

 Numerical Optimizerの対応コンパイラに関するご案内

 BC++・VC++:

 最新のNumerical Optimizerは,以下のコンパイラに関して正式対応いたしておりません.

  • Borland C++ 5.5(V12より非対応)
  • Microsoft Visual C++ 6.0(V16より非対応)
  • Microsoft Visual C++.net(V16より非対応)
  • Microsoft Visual Studio 2005(V17より非対応)
  • Microsoft Visual Studio 2008(V19より非対応)

 なお,対応コンパイラに関する情報につきましては,http://www.msi.co.jp/nuopt/products/spec_table.htmlをご覧ください.

  • VC++
    フォルダ:

    (Numerical Optimizerのインストール場所)\samples\app

    の下に以下のzipファイルがあります.

    • app_VS2010.zip(VS2010用)
    • app_VS2012.zip(VS2012用)
    • app_VS2013.zip(VS2013用)
    • app_VS2015.zip(VS2015用)
    なお,デフォルトのNumerical Optimizerのインストール場所は32bit版Windowsであれば

    C:\Program Files\Mathematical Systems Inc\NUOPT

    64bit版 Windowsであれば

    C:\Program Files (x86)\Mathematical Systems Inc\NUOPT

    となっています.
    まず,ご利用になるコンパイラに対応したzipファイルを解凍します.なお,OSの設定によってはサンプルの場所に書き込み権限が無いため,適切なフォルダにコピーしてからサンプルの解凍・実行をする必要があります.
    解凍を行なうと,VC++のソリューションである

    nuoptvcapp.sln

    があります.
    このソリューション内には以下の5つのプロジェクトがあります.

    これらのプロジェクトが3章以降で説明する実行例に対応しています.本マニュアルで例として用いるのは簡単な整数計画問題である次のナップサック問題です.

    \[\begin{array}{@{}ll@{}}
  \mbox{変数}               & x_{i} \in \{ 0, 1 \}\quad (i \in S) \\
  \mbox{目的関数(最大化)} & \displaystyle \sum_{i \in S} c_{i} x_{i}, \\
  \mbox{制約条件}           & \displaystyle \sum_{i \in S} a_{i} x_{i} \le b
\end{array}\]

    $S$の要素数だけ0-1変数があり,線形制約が一本,線形の目的関数を最大化するという問題です.この問題を設定するのに必要なデータは,

    目的関数の係数$c_{i}$,制約式の係数$a_{i}$,制約式の右辺値$b$

    となります.この問題を解くというアプリケーションを上記の様々な方法で行います.

注1)「Numerical Optimizer」につきまして,V15までに関しましては適宜「NUOPT」と読み替えをお願いいたします.

注2)Microsoft Visual Studio 2010に基づいて説明します.


 

 

上に戻る