CPLEX 下载安装
1. 学术版 CPLEX 下载(免费,需校园邮箱)
官网地址:IBM CPLEX Optimization Studio 注册后可能需要等待一天到几天,系统验证通过会发送邮件。
2. 30 天免费试用版 CPLEX 下载
官方下载地址:IBM CPLEX Optimization Studio
配置 Java 开发环境
1. 设置环境变量
根据操作系统配置 JAVA_HOME 及 CPLEX 相关路径。
2. 添加 CPLEX JAR 文件到项目
以 IntelliJ IDEA 为例手动添加 cplex.jar 包的步骤:
- 找到 cplex.jar 的存放路径(例如:D:\Application\cplex\lib\cplex.jar)。
- 打开 Java 项目,点击菜单栏【文件】→【项目结构】。
- 在'模块'页面切换到【依赖】标签页。
- 点击依赖列表右侧的【+】号,选择【添加库】→【Java】。
- 在弹出的文件选择窗口中,找到 cplex.jar 文件,选中后点击【确定】。
- 确认【作用域】为'Compile',点击【应用】→【确定】完成添加。
- 验证:在 Java 类中输入
import ilog.cplex.IloCplex;,若无报错则说明成功。
Java 调用 CPLEX 示例
运行以下代码:
import ilog.concert.*;
import ilog.cplex.*;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
/**
* CPLEX 22.1.2.0 线性规划求解示例
* 求解目标:最大化 3x + 4y
* 约束条件:2x+y≤10、x+2y≤12、x+y≤8、x≥0、y≥0
*/
public class CplexFirstExample {
public static void main(String[] args) {
// 修复控制台输出编码(GBK 适配 Windows)
try {
System.setOut(new PrintStream(System.out, true, "GBK"));
System.setErr(new PrintStream(System.err, true, ));
} (UnsupportedEncodingException e) {
e.printStackTrace();
}
( ()) {
System.out.println( + cplex.getVersion());
cplex.setParam(IloCplex.Param.TimeLimit, );
cplex.setParam(IloCplex.Param.MIP.Tolerances.MIPGap, );
cplex.numVar(, Double.MAX_VALUE, );
cplex.numVar(, Double.MAX_VALUE, );
IloNumVar[] variables = []{x, y};
cplex.linearNumExpr();
objective.addTerm(, x);
objective.addTerm(, y);
cplex.addMaximize(objective);
cplex.linearNumExpr();
c1.addTerm(, x);
c1.addTerm(, y);
cplex.addLe(c1, , );
cplex.linearNumExpr();
c2.addTerm(, x);
c2.addTerm(, y);
cplex.addLe(c2, , );
cplex.linearNumExpr();
c3.addTerm(, x);
c3.addTerm(, y);
cplex.addLe(c3, , );
IloRange[] constraints = []{constraint1, constraint2, constraint3};
System.currentTimeMillis();
cplex.solve();
System.currentTimeMillis() - start;
(solved) {
System.out.println( + cost + );
System.out.println( + String.format(, cplex.getObjValue()));
System.out.println( + cplex.getStatus());
System.out.println();
(IloNumVar : variables) {
System.out.println(.getName() + + String.format(, cplex.getValue()));
}
System.out.println();
(IloRange con : constraints) {
cplex.getSlack(con);
cplex.getDual(con);
System.out.println(con.getName() +
+ String.format(, slack) +
+ String.format(, dual));
}
} {
System.out.println();
System.out.println( + cplex.getStatus());
}
} (IloException e) {
System.err.println( + e.getMessage());
e.printStackTrace();
}
}
}


