Xpress-BCL
Xpress-BCL は、アプリケーション内で、問題を構築するためのオブジェクト指向ライブラリーです。それは、ステップ・バイ・ステップのアプローチを使い、変数を追加し、制約式を追加する機能を持っています。開発者は、C/C++、または、Javaプログラム内から、これを呼び出し、順々に完全な問題を構築してゆきます。ひとたび、問題が定義されると、問題は、Xpress-Optimizerを使って解かれます。 さらに、BCL機能により、開発者はアプリケーション内で、直接、解にアクセスすることができます。
勿論、Xpress-Optimizerに直接、問題をロードすることができます。それには、2つの方法があります。 ユーザは、業界標準のMPSマトリックス形式やLPマトリックス形式を使ってファイルから問題をロードしたり、アプリケーションから、直接、呼出す機能を使って問題全体をロードしたりすることができます。
これら4つの方式の具体例や、これらの方式の持つメリット、デメリットについては、「Xpress-MPによるモデリング白書」を参照して下さい。
|
#include <iostream>
#include "xprb_cpp.h"
using namespace ::std;
using namespace ::dashoptimization;
int main(int argc, char **argv)
{
XPRBvar xs, xl; // Decision variables
XPRBprob p("Chess"); // Initialize a new problem
// Define the decision variables
xs = p.newVar("xs");
xl = p.newVar("xl");
// Define and set the objective function
p.setObj(p.newCtr("Profit", 5*xs + 20*xl));
// Define the constraint 3*xs + 2*xl <= 160
p.newCtr("Lathe", 3*xs + 2*xl <= 160);
// Define the constraint xs + 3*xl <= 200
p.newCtr("Boxwood", xs + 3*xl <= 200);
p.maxim(""); // Solve the LP-problem
cout<<"Solution:"<<p.getObjVal()<<endl;
cout<<"Make "<<xs.getSol()<<"small sets"<<endl;
cout<<"Make "<<xl.getSol()<<"large sets"<<endl;
return 0;
} |
|