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);
}
  1. 使用 IloCplex 类新建一个 cplex 类。
  2. 使用 IloNumVar 定义求解变量。
  3. 使用 addMaximize 或addMinimize 定义求解目标。
  4. 使用 addLe 添加约束条件.
  5. 使用 solve() 方法求解。
  6. 使用 IloNumExpr 定义中间变量。

cplex 的 java api 不支持加减乘除符号,加必须用 sum 方法, 减必须用 diff 方法, 乘除必须用 prod 方法。

05 reference

[1] https://blog.csdn.net/robert_chen1988/article/details/78678289

【CPLEX教程02】配置Cplex的Java环境以及API说明的更多相关文章

  1. Java全栈程序员之02:Ubuntu下Java环境安装、配置、测试

    在上文讲完之后,我们手里的ubuntu只能算是一个上网机,什么也干不了,本篇我们将折腾它为开发机. 这里,我们这里假定你对linux体系是初级选手,所以本篇会讲的啰嗦一点,高手就出门左转吧. 1.安装 ...

  2. 卸载CentOS 5.4自带的OpenJDK,配置新的Java环境

    本文CentOS版本为5.4 final,使用图形界面与命令结合的操作方式,由于CentOS 5.4在默认情况下,会安装OpenOffice之类的软件,而这些软件需要Java支持,因此系统会默认安装一 ...

  3. Linux系统下配置网络、JAVA环境,配置tomcat,mysql

    一.配置网络 1.进入自己的系统,并跳转到network-scripts 2.编辑 3.查看系统的信息 4.将其添加到刚刚的if-cfg-eth0中 5.重启网络 6.这个时候ping百度还是ping ...

  4. Win10 配置Tomcat与Java环境变量

    一:下载JKD与Tomcat包 JDK        密码:d9ym Tomcat   密码:z9pa 二:安装JAVA-JDK与配置环境变量 ①:记住安装的地址 ②:配置JAVA-JDK的环境变量, ...

  5. 【CPLEX教程01】Cplex介绍,下载和安装Cplex

    前言 最近学习列生成算法,需要用到优化求解器.所以打算学习一下cplex这个商业求解器. 当然也有其他更多的选择,这里暂时以比较容易上手和性能比较好的cplex开始吧.其实,小编也早就想学习使用这个c ...

  6. Linux环境下配置JDK,java环境

    1.查看Linux自带的JDK是否已安装 # java -version 2. 查看JDK信息 # rpm -qa | grep java 显示: java-x.x.x-gcj-compat-x.x. ...

  7. centos配置数据源和java环境配置

    ---恢复内容开始--- 一:前言 今天送走了一位同事,看着别人走勾起了我蠢蠢欲动的心啊,但是我知道,我不能那么的任性,我是men,这几天难得的清闲,所以我就弄一弄linux,昨天把网给配通了,今天配 ...

  8. 【环境配置】Linux环境下下载、配置java环境、安装eclipse、建立eclipse快捷方式详解

    一.首先是下载Java JDK 到目前为止的最新版本为(jdk1.8.0_60),有两种方式进行下载: 1.使用shell来进行下载,可使用如下命令直接进行下载: wget --no-check-ce ...

  9. window10下java环境变量的配置 javac不是内部或外部命令的问题

    http://blog.csdn.net/suncold123/article/details/48392135 参考与上面这个博主. 今天在win10下重新配置了一下java环境变量.跟着网上的流程 ...

随机推荐

  1. 笔记:npm常见错误

    常见错误 破坏的npm安装 随机错误 找不到兼容版本 权限错误 Error: ENOENT, stat 'C:\Users\<user>\AppData\Roaming\npm' 在Win ...

  2. Harbor配置自签名证书,docker login+web https访问,helm chart推送应用

    注:高版本(14以上)docker执行login命令,默认使用https,且harbor必须使用域名,只是用ip访问是不行的. 假设使用的网址是:www.harbor.mobi,本机ip是192.16 ...

  3. C# Datatable、DataReader等转化json

    //对象转换为Json字符串 public static string ToJson(object jsonObject) { object objectValue = string.Empty; s ...

  4. 守护线程在logback中的使用 - 论基础知识的重要性

    守护线程在logback中的使用 先说问题,在java应用中,logback的异步Appender是怎么在主线程结束后,停下来的? 复盘 我在一个logback的测试用例中,写了这样的代码和logba ...

  5. 2019 盛趣游戏java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.盛趣游戏等公司offer,岗位是Java后端开发,因为发展原因最终选择去了盛趣游戏,入职一年时间了,也成为了面 ...

  6. synchronized关键字的使用

    synchronized关键字是java并发编程中常使用的同步锁,用于锁住方法或者代码块,锁代码块时可以是synchronized(this){}.synchronized(Object){}.syn ...

  7. 直播知识-推流&拉流

    推流,指的是把采集阶段封包好的内容传输到服务器的过程.其实就是将现场的视频信号传到网络的过程.“推流”对网络要求比较高,如果网络不稳定,直播效果就会很差,观众观看直播时就会发生卡顿等现象,观看体验很是 ...

  8. oracle 11g导出少了空表,原因分析

    oracle 11g导出少了空表 使用exp命令的时候,会出现少表的情况,是因为在11g版本中如果一个表里面是空的,为了节省空间,默认是不会给这个表分配空间的,在导出的时候也就不会将空表导出的,自然导 ...

  9. gcc的__builtin_函数(注意前面是两个下划线)

    说明: GCC provides a large number of built-in functions other than the ones mentioned above. Some of t ...

  10. 史上最完整promise源码手写实现

    史上最完整的promise源码实现,哈哈,之所以用这个标题,是因为开始用的标题<手写promise源码>不被收录 promise自我介绍 promise : "君子一诺千金,承诺 ...