如何调用cplex studio

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何调用cplex studio相关的知识,希望对你有一定的参考价值。

首先需要安装Cplex软件,我安装的版本是cplex_studio122.win-x86-32.exe
详解Java如何调用Cplex
2
下图安装后打开的Cplex自带的IDE,看上去跟Eclipse差不多。
详解Java如何调用Cplex
在Cplex的安装目录下有许多值得我们学习的东西,还有一些examples,可供我们参考。
详解Java如何调用Cplex
我是在Eclipse中使用Java调用Cplex,所以先把一些Cplex依赖加上。
运行依赖:cplex.jar(在..\cplex\lib目录下找到)和cplex122.dll(在..\cplex\bin目录下找到)。将cplex.jar加到工程的Build Path中。
详解Java如何调用Cplex
cplex122.dll可以设置到运行时的环境中(VM arguments),或者添加到项目的Native library location。
详解Java如何调用Cplex
接下来我们求解一个具体的线性规划问题。
详解Java如何调用Cplex
例如,我们求解下面这样一个线性规划问题:
Maximize x1 + 2x2 + 3x3
subject to
-x1 + x2 + x3 ≦20
x1 - 3x2 + x3 ≦30
with these bounds
0 ≦x1 ≦40
0 ≦x2 ≦+∞
0≦ x3≦ +∞
先创建一个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);



定义决策变量: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);
定义目标函数:
IloNumExpr expr = cplex.sum(x[0], cplex.prod(2.0, x[1]),cplex.prod(3.0, x[2]));
cplex.addMaximize(expr);
其中这个地方有许多写法,大家在使用的时候可以注意一下。
定义决策的约束条件: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);
最后解决模型问题:if(cplex.solve())....
如果solve()返回true的话,我们可以获取一些信息,例如问题的解决状态、获取方案的目标值、获取数组中的所有决策变量的解值。
cplex.getStatus()返回值类型:Error、Unknown、Feasible、Bounded、Optimal、Infeasible、Unbouded、InfeasibleorUnbounded。
获取方案的目标值:double objval = cplex.getObjValue();获取数组中的所有决策变量的解值:double[] xval = cplex.getValues(x);
参考技术A p文件是m文件的加密格式,一般是为了防止算法暴露而转化的,在函数调用的时候优先于m文件 在Matlab中我们可以直接使用pcode命令进行转换 换句话说p文件就是为了不给你看算法的,要想将p文件转换成m文件是不可能的运行时检查A是不是当前目录下的文件(先找A.p,后找A.m) 错误的话就很难说了

有没有办法用交互式CPLEX生成随机数据?

有没有办法用交互式CPLEX生成随机数据(如三角矩阵,数组,其值有一些限制)?

答案

CPLEX不包含任何可以为你生成随机数据的功能。

另一答案

它不可能在交互式模式下生成随机数据。不过,如果你需要做一些测试,你可以尝试读取cplex中包含的示例数据。在我的例子中,这些数据位于安装cplex的目录中。

$ ls /opt/ibm/ILOG/CPLEX_Studio125/cplex/examples/data/
  afiro.mps  atsp.dat  cutstock.dat  diet.dat  etsp.dat  example.mps  facility.dat
  infnet.net location.lp  mexample.mps  noswot.mps  p0033.mps  prod.lp  qpex.lp  rates.dat
  sosex3.lp  steel.dat

以上是关于如何调用cplex studio的主要内容,如果未能解决你的问题,请参考以下文章

『实践』Yalmip建模+Cplex类求解

我可以从 c# 代码运行 IloOplExec() Cplex 函数吗?

Leapms + cplex解决 混合整数规划问题

为啥不考虑 cplex 中解决方案数量的限制?

Yalmip+Ipopt+Cplex使用手册

CPLEX在IntelliJ IDEA的配置