在VS2017中如何配置cplex環境

近期由於需要cplex求解運籌學中的相關優化問題,需要利用IBM的cplex,但是網上蒐集到的資料都比較老, 配置了兩次都顯示失敗。因此,有必要記錄一下配置過程:
cplex配置主要有三個過程:

  • 新建項目

在VS2017中新建一個空項目:具體步驟如下:① 在vs2017中選擇“文件-新建-項目-visual C++-空項目”,然後在“名稱”一欄輸入項目名稱“Testcplex”,選擇項目文件的“位置”;②在解決方案Testcplex的源文件夾下,新建一個cpp文件,起名爲“TestCode.cpp,並粘貼測試源代碼,該源代碼來源於IBM CPLEX官方說明文檔Getting Statred

#include <ilcplex/ilocplex.h>
#include <stdio.h>
using namespace std;

ILOSTLBEGIN
int
main(void *) {
    IloEnv env;
    try {
    IloModel model(env);
    IloNumVarArray vars(env);
    vars.add(IloNumVar(env, 0.0, 40.0));  // 0 <= x1 <= 40
    vars.add(IloNumVar(env));  // 0 <= x2
    vars.add(IloNumVar(env));  // 0 <= x3
model.add(IloMaximize(env, vars[0] + 2 * vars[1] + 3 * vars[2])); //maximize x1 + 2 x2 + 3 x3
    model.add(-vars[0] + vars[1] + vars[2] <= 20);//subject to -x1 + x2 + x3 <= 20
    model.add(vars[0] - 3 * vars[1] + vars[2] <= 30);//x1 - 3 x2 + x3 <=30
IloCplex cplex(model);
        if (!cplex.solve()) {
            env.error() << "Failed to optimize LP." << endl;
            throw(-1);  }
        IloNumArray vals(env);
        env.out() << "Solution status = " << cplex.getStatus() << endl;
        env.out() << "Solution value = " << cplex.getObjValue() << endl;
        cplex.getValues(vals, vars);
        env.out() << "Values = " << vals << endl;
    }
    catch (IloException & e) { cerr << "Concert exception caught: " << e << endl; }
    catch (...) { cerr << "Unknown exception caught" << endl; }
    env.end();
system("pause");
    return 0;
}

當測試代碼複製到項目中後,出現錯誤,因此我們需要對Cplex環境進行配置。

  • 配置CPLEX環境
    首先確認CPLEX安裝路徑,我的電腦的安裝路徑是: C:\Program Files\IBM\ILOG\CPLEX_Studio128
    1.將VS調試環境修改爲release, x64. 如圖1,所示:
    圖2 調試環境修改

2.在vs2017中選中解決方案“Testcplex”,右鍵-“屬性”,打開該方案的屬性選項頁面(圖2)。同樣要保證:配置中爲“活動(Release)”,平臺爲“活動(x64)”。
配置屬性2

3.Testcplex屬性頁中,依次選擇:“C/C++”—“常規”—“附加包含目錄”,然後點開下拉選框,分別選擇以下兩個文件夾,
C:\Program Files\IBM\ILOG\CPLEX_Studio128\concert\include
C:\Program Files\IBM\ILOG\CPLEX_Studio128\cplex\include
配置附加選項

4.Testcplex屬性頁中,依次選擇:“C/C++”—“預處理器”—“預處理器定義”,輸入如下三個定義“NDEBUG”,”_CONSOLE”,”IL_STD”,一行一個,注意下劃線和大寫。然後,選“確定”,再選“應用”。
預處理器配置

5.Testcplex屬性頁中,依次選擇:“c/c++” -“代碼生成”-“運行庫”,設置爲“多線程 DLL (/MD)”。確定。
運行庫設置

6.Testcplex屬性頁中,依次選擇:“鏈接器”-“常規”-“附加庫目錄”,選擇兩個文件夾:
C:\Program Files\IBM\ILOG\CPLEX_Studio128\concert\lib\x64_windows_vs2017\stat_mda
C:\Program Files\IBM\ILOG\CPLEX_Studio128\cplex\lib\x64_windows_vs2017\stat_mda
附加庫設置

7.Testcplex屬性頁中,依次選擇:“鏈接器”-“輸入”-“附加依賴項”,然後輸入如下三個文件的路徑:
C:\Program Files\IBM\ILOG\CPLEX_Studio128\concert\lib\x64_windows_vs2017\stat_mda\concert.lib
C:\Program Files\IBM\ILOG\CPLEX_Studio128\cplex\lib\x64_windows_vs2017\stat_mda\cplex1280.lib
C:\Program Files\IBM\ILOG\CPLEX_Studio128\cplex\lib\x64_windows_vs2017\stat_mda\ilocplex.lib
鏈接器配置

至此,CPLEX環境配置完成,從中我們可以看到,剛剛拷貝進去的項目不會發生錯誤的提示。
測試代碼

  • 測試配置:求解一個線性規劃問題
    將項目生成爲可執行文件,即可調試運行。線性規劃問題爲:

min x1 + 2 x2 + 3 x3

約束條件:

-x1 + x2 + x3 <= 20

x1 - 3 x2 + x3 <=30

0 <= x1 <= 40

0 <= x2

0 <= x3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章