【CPLEX教程02】配置Cplex的Java环境以及API说明

简介: 【CPLEX教程02】配置Cplex的Java环境以及API说明

00 前言


因为小编一般用的C++和Java比较多,而且现在开发大型算法用这类面向对象的编程语言也方便得多。基于上面的种种考虑,加上时间和精力有限,所以就暂时只做C++和Java的详细教程辣。关于matlab和python的也许后续会补上的吧。


然后在开始之前,照例先把环境给配置好。那么就先配置java的环境吧。


01 添加环境变量


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


微信图片_20220421162755.jpg


确保已经安装上这个版本,我们才能开始下一步的工作。

02 将CPLEX库导入ECIPLSE


java小编一般用的ide是eclipse,就配置一下关于eclipse的。其他的开发环境请大家自行设置哈。


新建一个工程,添加一个package,添加一个带main函数的类。代码先别写。


微信图片_20220421162759.jpg


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


微信图片_20220421162801.jpg


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


微信图片_20220421162819.jpg微信图片_20220421162804.jpg


到这一步还不行,还需要把CPLEX的动态运行库给添加进去,好让java程序运行的时候能够找到。

具体做法是:在项目右键,选择build path -> Configure Build Path……,找到Libraries,点开JRE System Library,在Native library location那里点edit,把cplex下的\bin\x64_win64文件夹给添加进去。

这里面有程序运行所需要动态库。



03 求解一个简单的模型


一个简单的线性规划问题:


微信图片_20220421162822.png

把下面代码复制进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);
    }


点击运行,出现下面的结果就成功啦:


微信图片_20220421162824.jpg


最后,如果提示找不到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 方法。




相关文章
|
6天前
|
API
车牌号归属地查询免费API接口教程
本接口用于根据车牌号查询社会车辆的归属地,不支持军车、使馆等特殊车牌。请求地址为 `https://cn.apihz.cn/api/other/chepai.php`,支持 POST 和 GET 请求。请求参数包括 `id`、`key` 和 `words`,返回数据包含车牌归属地信息。示例请求:`https://cn.apihz.cn/api/other/chepai.php?id=88888888&key=88888888&words=川B1234`。
41 21
|
4天前
|
API
获取网页重定向地址免费API接口教程
该API用于获取网页重定向跳转后的最终地址。请求地址为`https://cn.apihz.cn/api/wangzhan/tiaozhuan.php`,支持POST或GET方式。请求参数包括`id`、`key`和`url`,返回数据包含状态码`code`和最终URL`url`。示例返回:`{&quot;code&quot;:200,&quot;url&quot;:&quot;https://www.baidu.com/&quot;}`。
47 29
|
9天前
|
API
将秒数转换为时间免费API接口教程
该API用于将指定秒数转换为年、日、时、分、秒。支持指定转换类型。请求地址为 `https://cn.apihz.cn/api/time/stime.php`,需提供ID、密钥、类型和秒数参数。返回结果包含转换后的年、日、时、分、秒等信息。示例请求:`https://cn.apihz.cn/api/time/stime.php?id=88888888&key=88888888&type=1&s=123456`。更多详情见 [文档](https://www.apihz.cn/api/timestime.html)。
将秒数转换为时间免费API接口教程
|
5天前
|
网络协议 API
检测指定TCP端口开放状态免费API接口教程
该API用于检测目标主机指定TCP端口是否开放,适用于检测连通状态等场景。支持指定大陆、美国、香港等检测节点。请求地址为 `https://cn.apihz.cn/api/wangzhan/port.php`,支持POST和GET请求方式。请求参数包括 `id`、`key`、`type`、`host` 和 `port`。返回参数包含检测结果和状态码。示例请求:`https://cn.apihz.cn/api/wangzhan/port.php?id=88888888&key=88888888&type=1&host=49.234.56.78&port=80`。
|
4天前
|
API 数据安全/隐私保护
抖音视频,图集无水印直链解析免费API接口教程
该接口用于解析抖音视频和图集的无水印直链地址。请求地址为 `https://cn.apihz.cn/api/fun/douyin.php`,支持POST或GET请求。请求参数包括用户ID、用户KEY和视频或图集地址。返回参数包括状态码、信息提示、作者昵称、标题、视频地址、封面、图集和类型。示例请求和返回数据详见文档。
|
9天前
|
API
图片压缩+格式转换免费API接口教程
这是一个免费的图片压缩和格式转换API接口,支持GET和POST请求。请求地址为 `https://cn.apihz.cn/api/img/yasuo.php`,需提供 `id`、`key`、`img` 等参数。返回数据包含处理后的图片URL和其他相关信息。更多详情请参考:https://www.apihz.cn/api/imgyasuo.html
|
8天前
|
API
天气预报-腾讯天气-7天-IP查询版免费API接口教程
根据IP地址自动查询该IP归属地7天天气预报的腾讯天气API。请求地址为`https://cn.apihz.cn/api/tianqi/tengxunip.php`,支持GET和POST请求。需提供ID、Key和IP地址作为参数。返回数据包含天气预报信息。
|
7天前
|
前端开发 JavaScript API
取网页纯文本内容免费API接口教程
该API用于获取指定网页的纯文本内容,去除HTML标签、CSS和JS等元素。支持POST和GET请求,需提供ID、Key、URL等参数。请求示例:https://cn.apihz.cn/api/wangzhan/getyuan.php?id=88888888&key=88888888&url=www.apihz.cn&dy=1。返回纯文本数据。
|
14天前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
14天前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)