安装指定版本的CPLEX

安装指定版本的CPLEX,第1张

IBM太难用了,找了一个小时,才找到指定版本的CPLEX

1. 首先注册一个账号, IBM 中国官方网站丨全球一流的人工智能解决方案和云平台公司 - 中国 | IBM  信梁如果用学校邮箱(我用的是.edu结尾的邮箱)应该可以直接用免费版。(一般邮箱未知)

2. 进入CPLEX安滑配运装界面  ILOG CPLEX Optimization Studio | IBM  选择 'Get the no-cost academic edition', 往下拉看到这个地方 点击software

3. 选左上角第一个卖侍就好, 然后点download

4. 左面选search for software

5. 输入全程就好 如 IBM ILOG CPLEX Optimization Studio Multiplatform Multilingual 12.9 eAssembly ,或者输入关键词 会自动蹦出来,然后选自己想要的版本

终于可以解优化问题了~

首先需要安装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

例如,我们求解下面这样一个线性规划问题:

Maximizex1 + 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)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/tougao/12493742.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存