1. 软件下载与版本选择
IBM ILOG CPLEX Optimizer 是一款用于解决线性规划、混合整数规划和二次规划的高性能数学规划求解器。

IBM CPLEX Optimizer 官方介绍页面
访问 IBM CPLEX Optimizer 官网,在搜索框中输入“cplex”进入下载页面。

CPLEX Optimization Studio 下载页面
IBM 提供了功能受限的免费学术版本,需要使用教育邮箱注册。对于学习和研究而言,学术版本已足够使用。商业版本功能无限制,但需要购买授权。
2. 详细安装步骤
获取到名为 cplex_studio1263.win-x86-64.exe 的安装文件后,即可开始安装。

CPLEX Optimization Studio 安装程序
-
启动安装:双击安装程序,在启动界面选择“简体中文”。


-
接受许可协议:阅读并接受软件许可协议。


-
选择安装路径:建议将软件安装在非系统盘(如D盘),并记住此路径。

-
选择样本目录:为产品示例文件选择一个存储位置。

-
关联文件类型(重要):勾选关联 .oplproject, .mod, .dat 等文件到IDE,便于后续直接双击打开。

-
更新PATH变量(重要):勾选此项,将CPLEX引擎路径添加到系统环境变量,方便在命令行调用。

-
确认并安装:复查安装摘要,确认无误后点击“安装”。安装程序需要Java运行环境(JRE),请确保系统已安装。

-
完成安装:安装完成后,建议勾选“Readme file”和“CPLEX Optimization Studio IDE”,然后点击下一步。


-
设置工作空间:首次启动IDE会要求设置工作空间(Workspace),这是存储项目文件的位置。建议勾选“将此值作为缺省值并且不再询问”。

-
IDE界面:设置完成后,将进入CPLEX Studio IDE的主界面,关闭欢迎窗口即可开始建模。


安装完成后,可以从Windows开始菜单找到CPLEX的相关文档和IDE启动快捷方式。

3. IDE基础使用与第一个模型
3.1 创建OPL项目
在IDE中,通过 文件 -> 新建 -> OPL 项目 来创建新项目。

新建OPL项目
为项目命名并选择存储位置。

设置项目名称与位置
项目创建后,会自动生成一个模型文件(.mod),可在其中编写优化代码。

新建项目的编辑界面
3.2 简单线性规划示例
我们先从一个简单的整数规划问题开始:
min z = 2x + 3y
s.t. 2x + 3y >= 20
x + y >= 10
x, y >= 0 且为整数
在模型文件中编写对应OPL代码:
// 1.定义决策变量
dvar int+ x;
dvar int+ y;
// 2.定义目标函数
minimize 2*x + 3*y;
// 3.定义约束条件
subject to {
2*x + 3*y >= 20;
x + y >= 10;
}
运行方式一(IDE内):
右键项目浏览器中的模型文件,选择 运行方式 -> OPL 运行。如果运行配置为中文名可能导致错误,可将其重命名为英文(如config1)。

在IDE内运行模型
运行成功后,在“解”窗口可以看到最优解。

模型求解结果
运行方式二(命令行):
打开命令提示符,使用 oplrun 命令运行项目。假设项目路径为 D:\IBM\workspace\firstModelTest,则命令如下:
oplrun -p D:\IBM\workspace\firstModelTest

命令行运行模型
4. 使用集合语言建模实战
当问题规模较大、数据结构复杂时,使用OPL的集合语言能极大简化建模。这类似于使用Python的列表推导式或NumPy进行向量化操作,可以高效处理数组和循环。
4.1 0-1背包问题
背包问题的数学模型如下:

0-1背包问题数学模型
对应OPL代码如下:
// 1.定义已知量
int n = 4; // 物品数量
int C = 13; // 背包容量
int p[1..4] = [12, 11, 9, 8]; // 物品价值
int w[1..4] = [8, 6, 4, 3]; // 物品重量
// 2.定义决策变量
dvar boolean x[1..n]; // 是否选择物品
// 3.目标函数:最大化总价值
maximize sum(j in 1..n) p[j] * x[j];
// 4.约束条件:总重量不超过容量
subject to {
sum(j in 1..n) w[j] * x[j] <= C;
}
运行即可得到最优装包方案。解决此类组合优化问题是CPLEX的强项,其背后的算法原理,如分支定界法,也是算法与数据结构学习中的重要内容。

背包问题求解结果
4.2 指派问题
指派问题(分配问题)的数学模型:

指派问题数学模型
对应OPL代码如下:
// 1.定义已知量:成本矩阵
int n = 5;
int c[1..5][1..5] =
[
[3, 8, 2, 10, 3],
[8, 7, 2, 9, 7],
[6, 4, 2, 7, 5],
[8, 4, 2, 3, 5],
[9, 10, 6, 9, 10]
];
// 2.定义决策变量
dvar boolean x[1..n][1..n]; // x[i][j]=1表示将工作j分配给人i
// 3.目标函数:最小化总成本
minimize sum(i in 1..n) sum(j in 1..n) c[i][j] * x[i][j];
// 4.约束条件
subject to {
// 每项工作只能由一个人完成
forall(j in 1..n) sum(i in 1..n) x[i][j] == 1;
// 每个人只能完成一项工作
forall(i in 1..n) sum(j in 1..n) x[i][j] == 1;
}

指派问题求解结果
通过以上步骤,你已完成CPLEX 12.6.3在Windows系统下的安装,并掌握了使用其IDE进行数学规划建模与求解的基本方法。CPLEX同样支持通过Python、Java等语言接口调用,为集成到更复杂的数据分析或应用系统中提供了灵活性。