CPLEX 下载安装
1. 学术版 CPLEX 下载(免费,需校园邮箱)
官网地址:CPLEX Optimization Studio is free for students and academics! 注册好要等待,可能需要一天到几天,系统验证通过会发邮件。
2. 30 天免费试用版 CPLEX 下载
官方地址:IBM CPLEX Optimization Studio
配置 Java 开发环境
1. 设置环境变量
在系统环境变量中配置相关路径。
2. 添加 CPLEX JAR 文件到项目
中文版 IntelliJ IDEA 中手动添加 cplex.jar 包的详细步骤
第一步:先找到 cplex.jar 的存放路径
到安装目录找,例如 D:\Application\cplex\lib\cplex.jar(先复制,方便后面用)
第二步:手动添加 cplex.jar
- 打开你的 Java 项目(无项目则新建一个空 Java 项目);
- 点击 IDEA 顶部菜单栏的【文件】→【项目结构】;
- 在'模块'页面切换到【依赖】标签页(右侧标签栏);
- 点击依赖列表右侧的【+】号(绿色小加号),选择【添加库】→【Java】;
- 在弹出的文件选择窗口中,找到第一步定位的 cplex.jar 文件,选中后点击【确定】;
- 回到'项目结构'窗口,会看到 cplex.jar 已出现在依赖列表中,确认【作用域】为'Compile'(编译期生效,默认即可);
- 点击窗口右下角的【应用】→【确定】,完成添加。
第三步:验证 cplex.jar 是否添加成功
- 回到 IDEA 代码编辑界面,在 Java 类中输入
import ilog.cplex.IloCplex;; - 如果代码没有报'无法解析符号'的红色下划线,说明 jar 包添加成功。
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) {
{
System.setOut( (System.out, , ));
System.setErr( (System.err, , ));
} (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();
}
}
}


