详解Java如何调用Cplex

 时间:2024-10-14 20:47:38

1、首先需要安装Cplex软件,我安装的版本是cplex_studio122.win-x86-32.exe

详解Java如何调用Cplex

3、在Cplex的安装目录下有许多值得我们学习的东西,还有一些examples,可供我们参考。

详解Java如何调用Cplex

5、cplex122.dll可以设置到运行时的环境中(VM arguments),或者添加到项目的Native library location。

详解Java如何调用Cplex

7、例如,我们求解下面这样一个线性规划问题:Maximize x1 + 2x2 + 3x3subject to -x1 + x2 + x3 ≦20 x1 - 3x2 + x3 ≦30with these bounds 0 ≦x1 ≦40 0 ≦x2 ≦+∞ 0≦ x3≦ +∞

8、先创建一个IloCplex对象,它是用来创建所有建模对象所需要的模型。此时会抛出一个异常:IloException,需要try\catch。代码如下:static public class Application { static public main(String[] args) { try { IloCplex cplex = new IloCplex(); // create model and solve it } catch (IloException e) { System.err.println("Concert exception caught: " + e); } }}

9、定义决策变量:double[] lb = {0.0, 0.0, 0.0};double[] ub = {40.0, Double.MAX_VALUE, Double.MAX_VALUE};IloNumVar[] x = cplex.numVarArray(3, lb, ub);

10、定义目标函数:IloNumExpr expr = cplex.sum(x[0], cplex.prod(2.0, x[1]),cplex.prod(3.0, x[2]));cplex.addMaximize(expr);其中这个地方有许多写法,大家在使用的时候可以注意一下。

11、定义决策的约束条件:cplex.addLe(cplex.sum(cplex.negative(x[0]), x[1], x[2]), 20);cplex.addLe(cplex.sum(cplex.prod(1, x[0]), cplex.prod(-3, x[1]),cplex.prod(1, x[2])), 30);

12、最后解决模型问题:if(cplex.solve()){....}如果solve()返回true的话,我们可以获取一些信息,例如问题的解决状态、获取方案的目标值、获取数组中的所有决策变量的解值。cplex.getStatus()返回值类型:Error、Unknown、Feasible、Bounded、Optimal、Infeasible、Unbouded、InfeasibleorUnbounded。获取方案的目标值:double objval = cplex.getObjValue();获取数组中的所有决策变量的解值:double[] xval = cplex.getValues(x);

13、运行程序最后控制台的输出结果如下所示:

详解Java如何调用Cplex
  • c#如何禁用button
  • xftp连接linux虚拟机
  • plsql备份数据为sql脚本格式
  • linux怎样更改系统的启动菜单
  • 热门搜索
    腊梅花什么时候开 胃药什么时候吃 欲穷千里目更上一层楼的意思 庹读什么 爱不释手的意思 相宜的意思 什么是双绞线 什么是家庭冷暴力 怀孕一个月会有什么症状 https和http有什么区别