1. はじめに
このドキュメントでは,簡単なデモンストレーションを通じて,Nuorium Optimizer注1と外部プログラムの連結方法をVisualC++のIDE注2を利用した例を用い解説します.なお,Windows版についてのみ扱うため,Linux/Unix/macOS版についてはNuorium Optimizerサポート(nuopt-support@ml.msi.co.jp)までお問い合わせください.
外部プログラムとの連結方法には大きく分けて,
(ア)実行形式を作成して別プロセスで起動する(第2章)
(イ)ライブラリsolveLP
,solveQP
をコールする(第3章)
(ウ)C++SIMPLEのモデル記述を手続きの中に記述して利用する(第4章)
(エ)C++SIMPLEのモデル記述からクラスを生成して利用する(第5章)
という四つの方法があります.このドキュメントではこれらについて順に解説します.各方法の簡単な説明は,次の通りです.
(ア)の方法はNuorium Optimizerを外部プログラムとして別プロセスで起動する方法です.プロセス起動やデータのやり取りにオーバーヘッドがありますが,実装・デバッグは最も容易です.
(ア)以外の(イ)(ウ)(エ)は,いずれもNuorium Optimizerをライブラリとしてリンクし,その機能を利用する方法です.
(イ)はLP,MILP,QPに属する問題をC++SIMPLEを介さずに専用の関数を使って解く方法です.高速ではありますが,ユーザ側でデータを標準形に変形する必要がございます.
(ウ)(エ)はいずれもC++SIMPLEを介する方法です.(ウ)は(エ)よりは簡便ですが,Nuorium Optimizerのライブラリがリンクされているプログラム全体で同時に一つの問題しか扱うことができません.(エ)は手順がやや複雑になりますが,複数の問題を一つの外部プログラムで操作することが可能です.
Nuorium Optimizerの対応コンパイラに関するご案内
対応コンパイラに関する情報につきましては,https://www.msi.co.jp/solution/nuopt/spec_table.htmlをご覧ください.
- サンプル
フォルダ:(Nuorium Optimizerのインストール場所)\samples\app
の下に以下のzipファイルがあります.
app_VS2015.zip
(VS2015用)app_VS2017.zip
(VS2017用)app_VS2019.zip
(VS2019用)app_VS2022.zip
(VS2022用)
C:\Program Files (x86)\Mathematical Systems Inc\NUOPT
となっています.
まず,ご利用になるコンパイラに対応したzipファイルを解凍します.なお,OSの設定によってはサンプルの場所に書き込み権限が無いため,適切なフォルダにコピーしてからサンプルの解凍・実行をする必要があります.
解凍を行なうと,VC++のソリューションであるnuoptvcapp.sln
があります.
これらのプロジェクトが3章以降で説明する実行例に対応しています.本マニュアルで例として用いるのは簡単な整数計画問題である次のナップサック問題です.
このソリューション内には以下の3つのプロジェクトがあります.の要素数だけ0-1変数があり,線形制約が一本,線形の目的関数を最大化するという問題です.この問題を設定するのに必要なデータは,
目的関数の係数
,制約式の係数
,制約式の右辺値
となります.この問題を解くというアプリケーションを上記の様々な方法で行います.
注1)「Nuorium Optimizer」につきまして,V15までは「NUOPT」・V16からV23までは「Numerical Optimizer」と適宜読み替えをお願いいたします.
注2)Microsoft Visual Studio 2017に基づいて説明します.
上に戻る