目录
一、CPLEX安装
1.CPLEX安装包下载
2.CPLEX安装
二、IDEA配置CPLEX
1.将CPLEX安装目录的cplex.jar包添加到项目文件中:
2.将CPLEX的x64_win64文件夹添加到IDEA的VM options中
三、在IDEA中检验是否安装成功
由于IBM公司的ILOG CPLEX Optimization Studio是收费的,即使在官网上下载免费的学术版也需要使用你单位(或学校)的邮箱,而且你的单位必须在IBM上注册过域名,否则也无法下载,所以这里给出笔者千辛万苦下好的12.6.3版本的CPLEX Studio软件安装包,希望能帮到大家:
前往百度网盘下载:链接:https://pan.baidu.com/s/17-wPu4v7eOV7eHMNOp9C-Q 提取码:ali0
(1)下载安装包后双击exe文件,得到如下弹窗:
(2)选择简体中文,并点击确定:
(3)点击下一步:
(4)选择接受协议后,点击下一步:
建议先在你想要安装的位置新建一个文件夹,在其中再新建三个子文件夹分别存放安装目录、副本目录和工作空间,自定义安装目录(建议不要放在系统C盘,选择上面新建的文件夹),点击下一步,选择副本目录,选择下一步:
(5)选择关联相关文件(一定要选),选择下一步:
(6)选择更新PATH变量(一定要选),选择下一步:
(7)这里展示了安装的目录(要记住自己安装的这两个目录,后续相关的文件需要到这两个目录里找),选择安装:
看到上面的界面基本就安装完成了。安装进度条提醒cplex依赖jre,所以需要提前在电脑上安装java环境,如果不会安装java环境请百度。(安装完成后可能会显示让你安装Microsoft Visual C++ Redistributable,不用安装,忽略即可)。
上面勾选了“Readme file”时,点击下一步会自动在浏览器中显示readme文件内容,建议勾选,简单读一下readme文件。
上面勾选了“CPLEX Opeimization Studio IDE”时,点击下一步会自动打开编程窗口,建议勾选。
(8)点击下一步:
(9)点击完成。
点击完成后,由于之前选择了“CPLEX Opeimization Studio IDE”,所以这里会自动打开上面IDE编辑器,并且弹框询问工作空间放在哪里,所谓的工作空间就是后续我们使用ide编辑器写代码时,我们的代码文件保存的目录,这个目录很重要,后续可以在这里找到自己之前写过的代码。建议定义好这个目录(可以按照上面第(4)步建议的目录设置方式)。工作目录设置弹窗左下角有个选项“将此值作为缺省值并且不再询问”,建议勾选,如果不勾选,以后每次打开IDE编辑器时都会弹框询问。
(10)点击确定,即可打开下面的IED代码编辑器:
上面的欢迎窗口中间有四个功能:概述、教程、样本、新增内容,可以学习一下相关使用。
关闭欢迎页面,现在就可以在编辑器中建模求解了。
在IDEA页面中新建项目后,依次点击左上角File->Project Structure->Libraries,点击窗口中间菜单栏左上角的“+”号,将上面CPLEX安装目录下cplex文件夹中的lib文件夹下的cplex.jar添加到项目中,点击Apply。
(1)点击Run->Edit Configuration...
(2)在弹出窗口的VM options中输入下面的命令(CPLEX安装文件夹取决你自己安装的位置):
-Djava.library.path=CPLEX安装文件夹\cplex\bin\x64_win64
例如:直接在文件管理器中找到CPLEX安装路径下对应的x64_win64文件夹,然后复制下面红色方框中的地址
在VM options方框中输入如下命令(每个人的文件夹可能不一样,所以不要直接复制我的命令内容,而是到你自己的CPLEX安装目录中找到x64_win64文件夹路径,然后把我命令中等号后面的内容替换掉就可以了):
-Djava.library.path=D:\LeStoreDownload\IBM_ILOG_CPLEX_Location\CPLEX1263_Install\cplex\bin\x64_win64
点击Apply即可。
新建一个java类文件,并输入如下代码:
import ilog.concert.IloException;
import ilog.concert.IloNumVar;
import ilog.cplex.IloCplex;
public class MyDemos {
public static void main(String[] args){
try
{
IloCplex cplex = new IloCplex(); // creat a model
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);
double[] objvals = {1.0, 2.0, 3.0};
cplex.addMaximize(cplex.scalProd(x, objvals));
double[] coeff1 = {-1.0, 1.0, 1.0};
double[] coeff2 = {1.0, -3.0, 1.0};
cplex.addLe(cplex.scalProd(x, coeff1), 20.0);
cplex.addLe(cplex.scalProd(x, coeff2), 30.0);
if (cplex.solve())
{
cplex.output().println("Solution status = " + cplex.getStatus());
cplex.output().println("Solution value = " + cplex.getObjValue());
double[] val = cplex.getValues(x);
for (int j = 0; j < val.length; j++)
cplex.output().println("x" + (j+1) + " = " + val[j]);
}
cplex.end();
}
catch (IloException e)
{
System.err.println("Concert exception caught: " + e);
}
}
}
上面的代码要解决的线性规划问题是:
运行程序如果输出如下结果说明安装完成:
至此,你的电脑已经可以使用IDEA调用CPLEX,并编写java代码求解大型线性规划问题了。
参考文献:
https://blog.csdn.net/wuxiaolongah/article/details/120339847