【CPLEX教程02】配置Cplex的Java环境以及API说明
00 前言
因为小编一般用的C++和Java比较多,而且现在开发大型算法用这类面向对象的编程语言也方便得多。基于上面的种种考虑,加上时间和精力有限,所以就暂时只做C++和Java的详细教程辣。关于matlab和python的也许后续会补上的吧。
然后在开始之前,照例先把环境给配置好。那么就先配置java的环境吧。
CPLEX系列教程可以关注我们的公众号哦!获取更多精彩消息!

01 安装好CPLEX
前面已经说了怎么下载和安装cplex了,如图:

确保已经安装上这个版本,我们才能开始下一步的工作。
02 将CPLEX库导入ECIPLSE
java小编一般用的ide是eclipse,就配置一下关于eclipse的。其他的开发环境请大家自行设置哈。
新建一个工程,添加一个package,添加一个带main函数的类。代码先别写。

在项目右键,选择build path -> Configure Build Path……

找到Libraries->Add External JARs……,然后定位到\lib这个文件夹,把cplex.jar给添加进去。

到这一步还不行,还需要把CPLEX的动态运行库给添加进去,好让java程序运行的时候能够找到,具体做法是:在项目右键,选择build path -> Configure Build Path……,找到Libraries,点开JRE System Library,在Native library location那里点edit,把cplex下的\bin\x64_win64文件夹给添加进去,这里面有程序运行所需要动态库。

03 求解一个简单的模型
一个简单的线性规划问题:

把下面代码复制进main函数里面:
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);
}
点击运行,出现下面的结果就成功啦:

最后,如果提示找不到build path ,share libraries什么的,请确保第二步配置正确!至此,我们已经能愉快使用cplex啦。
04 API说明[1]
cplex的java程序整体框架一般如下:
try {
} catch (IloException e) {
System.err.println("Concert exception caught: " + e);
}
- 使用 IloCplex 类新建一个 cplex 类。
- 使用 IloNumVar 定义求解变量。
- 使用 addMaximize 或addMinimize 定义求解目标。
- 使用 addLe 添加约束条件.
- 使用 solve() 方法求解。
- 使用 IloNumExpr 定义中间变量。
cplex 的 java api 不支持加减乘除符号,加必须用 sum 方法, 减必须用 diff 方法, 乘除必须用 prod 方法。
05 reference
[1] https://blog.csdn.net/robert_chen1988/article/details/78678289
【CPLEX教程02】配置Cplex的Java环境以及API说明的更多相关文章
- Java全栈程序员之02:Ubuntu下Java环境安装、配置、测试
在上文讲完之后,我们手里的ubuntu只能算是一个上网机,什么也干不了,本篇我们将折腾它为开发机. 这里,我们这里假定你对linux体系是初级选手,所以本篇会讲的啰嗦一点,高手就出门左转吧. 1.安装 ...
- 卸载CentOS 5.4自带的OpenJDK,配置新的Java环境
本文CentOS版本为5.4 final,使用图形界面与命令结合的操作方式,由于CentOS 5.4在默认情况下,会安装OpenOffice之类的软件,而这些软件需要Java支持,因此系统会默认安装一 ...
- Linux系统下配置网络、JAVA环境,配置tomcat,mysql
一.配置网络 1.进入自己的系统,并跳转到network-scripts 2.编辑 3.查看系统的信息 4.将其添加到刚刚的if-cfg-eth0中 5.重启网络 6.这个时候ping百度还是ping ...
- Win10 配置Tomcat与Java环境变量
一:下载JKD与Tomcat包 JDK 密码:d9ym Tomcat 密码:z9pa 二:安装JAVA-JDK与配置环境变量 ①:记住安装的地址 ②:配置JAVA-JDK的环境变量, ...
- 【CPLEX教程01】Cplex介绍,下载和安装Cplex
前言 最近学习列生成算法,需要用到优化求解器.所以打算学习一下cplex这个商业求解器. 当然也有其他更多的选择,这里暂时以比较容易上手和性能比较好的cplex开始吧.其实,小编也早就想学习使用这个c ...
- Linux环境下配置JDK,java环境
1.查看Linux自带的JDK是否已安装 # java -version 2. 查看JDK信息 # rpm -qa | grep java 显示: java-x.x.x-gcj-compat-x.x. ...
- centos配置数据源和java环境配置
---恢复内容开始--- 一:前言 今天送走了一位同事,看着别人走勾起了我蠢蠢欲动的心啊,但是我知道,我不能那么的任性,我是men,这几天难得的清闲,所以我就弄一弄linux,昨天把网给配通了,今天配 ...
- 【环境配置】Linux环境下下载、配置java环境、安装eclipse、建立eclipse快捷方式详解
一.首先是下载Java JDK 到目前为止的最新版本为(jdk1.8.0_60),有两种方式进行下载: 1.使用shell来进行下载,可使用如下命令直接进行下载: wget --no-check-ce ...
- window10下java环境变量的配置 javac不是内部或外部命令的问题
http://blog.csdn.net/suncold123/article/details/48392135 参考与上面这个博主. 今天在win10下重新配置了一下java环境变量.跟着网上的流程 ...
随机推荐
- SpringCloud整合sleuth,使用zipkin时不显示服务
转载于:https://www.cnblogs.com/Dandwj/p/11179141.html 原文地址:https://blog.csdn.net/weixin_30416497/articl ...
- Spring Boot整合Mybatis完成级联一对多CRUD操作
在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...
- Spring MVC之@ControllerAdvice详解
本文链接:https://blog.csdn.net/zxfryp909012366/article/details/82955259 对于@ControllerAdvice,我们比较熟知的用法是 ...
- java之spring mvc之页面跳转
1. 如果返回值为ModelAndView,在处理方法中,返回null时,默认跳转的视图名称为请求名.跳转结果会根据视图解析器来跳转. @RequestMapping("/hello.do& ...
- 2019 智联招聘java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.智联等公司offer,岗位是Java后端开发,因为发展原因最终选择去了智联,入职一年时间了,之前面试了很多家公 ...
- 2. ES6基础-let和const命令
目录 1. let命令 1.1 用法 1. 2 不存在变量提升 1.3 区域绑定 1.4 不允许重复声明 2. const命令 2.1 用法 2.2 与let类似的特性 2.3 const本质 2.4 ...
- Mac 指令
Mac 展示隐藏目录 // 设置隐藏文件不可见 defaults write com.apple.finder AppleShowAllFiles FALSE // 设置隐藏文件可见 defaults ...
- jstorm了解—应用场景
JStorm处理数据的方式是基于消息的流水线处理, 因此特别适合无状态计算,也就是计算单元的依赖的数据全部在接受的消息中可以找到, 并且最好一个数据流不依赖另外一个数据流. 因此,常常用于: 日志分析 ...
- Word2Vec算法简介
一.简介 word2vec是Google在2003年开源的一款将词表征为实数值向量的高效算法,采用的模型有CBOW[Continuous Bag-Of-Words 连续的词袋模型]和Skip-Gram ...
- 为安卓项目添加FileProvider
简单记录 android7.0开始出现FileProvider.从一个小白角度看需要注意这几点: Manifest.xml中添加provider节点 添加xml文件 模块的build.gradle中添 ...