前言
Cplex是IBM公司的一款高性能求解器,它在线性规划、整数规划等多个领域都具有不俗表现,对于运筹专业的学生来说,Cplex是不得不学的“神器”。从本文开始,博主将在此记录Cplex的学习之旅,目测内容有基于Cplex的简单建模、分支定界、列生成、分支定价。
Cplex支持python、java、C++等多种语言,我选择我比较熟悉的C++。本文将详细介绍VS2019配置Cplex的过程,读者也可选择其他版本,但是并非所有的VS版本都支持Cplex的相应版本,总的来说,更新的VS支持更新的Cplex。
配置
首先我们需要安装Cplex和VS,我的基本环境是VS2019+Cplex12100,由于两个软件都比较大,最好不要放在C盘,我的Cplex根目录是D:\CPLEX。
安装好软件后,打开VS并创建新项目,选择C++空项目即可
添加源文件,并将VS改成release x64模式。
右击项目打开属性页,选择C/C++ -----> 常规 -----> 附加包含目录,在附加包含目录中添加两个文件:
(1)D:\CPLEX\CPLEX_Studio\cplex\include
(2)D:\CPLEX\CPLEX_Studio\concert\include
选择C/C++ -----> 预处理器 -----> 预处理器定义,输入如下三个定义“NDEBUG”,”_CONSOLE”,”IL_STD”,一行一个,注意下划线和大写。然后,选“确定”,再选“应用”。
选择链接器 -----> 常规 -----> 附加库目录,添加需要的库目录:
(1)D:\CPLEX\CPLEX_Studio\cplex\lib\x64_windows_msvc14\stat_mda
(2)D:\CPLEX\CPLEX_Studio\concert\lib\x64_windows_msvc14\stat_mda
选择链接器 -----> 输入 -----> 附加依赖项,这一步添加需要用到的库文件:
(1)D:\CPLEX\CPLEX_Studio\cplex\lib\x64_windows_msvc14\stat_mda\cplex12100.lib
(2)D:\CPLEX\CPLEX_Studio\cplex\lib\x64_windows_msvc14\stat_mda\ilocplex.lib
(3)D:\CPLEX\CPLEX_Studio\concert\lib\x64_windows_msvc14\stat_mda\concert.lib
最后一步,需要将D:\CPLEX\CPLEX_Studio\cplex\bin\x64_win64目录下的cplex12100.dll放在C:\Windows\System32目录下,复制粘贴即可。
测试
运行以下代码,若出现相应运行结果则配置成功。整个配置过程是清晰简单的,唯一需要注意的地方是Cplex安装的目录不同,需要读者根据自己的目录进行更改。
#include<ilcplex/ilocplex.h>
ILOSTLBEGIN
int main()
{
IloEnv env;
IloModel model(env);
IloNumVarArray var(env);
IloRangeArray con(env);
var.add(IloNumVar(env));
var.add(IloNumVar(env));
IloObjective obj = IloMaximize(env, var[0] + var[1]);
con.add(var[0] + 2 * var[1] <= 10);
con.add(var[0] - var[1] <= 3);
model.add(obj);
model.add(con);
IloCplex cplex(model);
cplex.solve();
env.out() << cplex.getValue(var[0]) << "\t" << cplex.getValue(var[1]) << endl;
system("pause");
}