【求解器】| Java调用CPLEX求解MIP设置初始解
创始人
2025-05-29 07:18:10
0

【求解器】| Java调用CPLEX求解MIP设置初始解

  • 用到的函数
  • 具体案例

作者:刘兴禄,清华大学,清华大学深圳国际研究生院,清华-伯克利深圳学院,博士在读

用到的函数

  • addMIPStart(IloNumVar[] vars, double[] values)
    在这里插入图片描述

具体案例

考虑下面一个非常简单的整数规划模型

max⁡∑i=110xis.t.xi⩽1,∀i=1,⋯,10,0⩽xi⩽100,∀i=1,⋯,10,xi∈Z,∀i=1,⋯,10.\begin{aligned} \max \quad &\sum_{i=1}^{10} x_i \\ s.t. \quad& x_i \leqslant 1, && \forall i = 1, \cdots, 10, \\ &0 \leqslant x_{i} \leqslant 100,&& \forall i = 1, \cdots, 10, \\ &x_{i} \in \mathbb{Z}, && \forall i = 1, \cdots, 10. \end{aligned} maxs.t.​i=1∑10​xi​xi​⩽1,0⩽xi​⩽100,xi​∈Z,​​∀i=1,⋯,10,∀i=1,⋯,10,∀i=1,⋯,10.​

下面是具体的代码中,我们设置xi=1,∀i=1,⋯,10x_i = 1, \forall i = 1, \cdots, 10xi​=1,∀i=1,⋯,10.

/*author: Liu Xinglu institute: Tsinghua Universitydate: 2023-3-16
*/package Test;import ilog.concert.*;
import ilog.cplex.*;public class Main {public static void main(String[] args) throws IloException {int num = 10;IloCplex cplex = new IloCplex();IloNumVar[] x = new IloNumVar[num];double[] initSol = new double[num]; for(int i = 0; i < num; i++) {
//			x[i] = cplex.numVar(0, 10000);x[i] = cplex.intVar(0, 10000);initSol[i] = 1.0;}IloNumExpr obj = cplex.numExpr();for(int i = 0; i < num; i++) {obj = cplex.sum(obj, x[i]);}cplex.addMaximize(obj);for(int i = 0; i < num; i++) {IloNumExpr expr = cplex.numExpr();expr = cplex.sum(expr, x[i]);cplex.addLe(expr, 1);}cplex.addMIPStart(x, initSol);cplex.exportModel("MyTestModel.lp");cplex.solve();System.out.println(cplex.getObjValue());}
}

运行结果如下

1 of 1 MIP starts provided solutions.
MIP start 'm1' defined initial solution with objective 10.0000.
Tried aggregator 1 time.
MIP Presolve eliminated 10 rows and 10 columns.
All rows and columns eliminated.
Presolve time = 0.00 sec. (0.00 ticks)Root node processing (before b&c):Real time             =    0.00 sec. (0.02 ticks)
Parallel b&c, 16 threads:Real time             =    0.00 sec. (0.00 ticks)Sync time (average)   =    0.00 sec.Wait time (average)   =    0.00 sec.------------
Total (root+branch&cut) =    0.00 sec. (0.02 ticks)
10.0

可以看到,设置成功了。日志中出现了下面的信息:

1 of 1 MIP starts provided solutions.
MIP start 'm1' defined initial solution with objective 10.0000.

这就说明设置初始解成功。

相关内容

热门资讯

[C语言]qsort()排序函... qsort函数C语言编译器函数库自带的排序函数。qsort 的函数原型是void qsort(voi...
民主生活会工作方案 民主生活会工作方案  民主生活会工作方案(精选6篇)  只有深思熟虑之后,才能写好工作方案。在计划开...
体育活动目标方案 体育活动目标方案(精选6篇)  为了确保活动能有条不紊地开展,常常需要提前准备一份具体、详细、针对性...
评选活动方案 评选活动方案  为了确保我们的努力取得实效,就需要我们事先制定方案,方案可以对一个行动明确一个大概的...
摄影活动方案 摄影活动方案(精选15篇)  为了保障事情或工作顺利、圆满进行,常常需要提前进行细致的方案准备工作,...
(Java基础)关键字 关键字 Java 有没有 goto goto 是 Java 中的保留字,在目前版本的 ...
【学习笔记】计算机视觉与深度学... 学习视频: 鲁鹏-计算机视觉与深度学习 1 图像分类任务 图像分类任务是计算机视觉的核...
推广普通话宣传周活动方案 推广普通话宣传周活动方案  推广普通话是国家统一和民族团结的需要。一个国家、一个民族是否拥有统一、规...
团日活动方案 团日活动方案(精选20篇)  为了确保工作或事情能有条不紊地开展,就常常需要事先准备方案,方案的内容...
2018国庆节活动方案   祖国是指全国人民赖以生存的家园,是我们共同的母亲,并在收集资料、观看十一庆典、“五十”庆典录像、...
高一数学竞赛活动方案 高一数学竞赛活动方案  为了确定工作或事情顺利开展,通常需要预先制定一份完整的方案,方案是有很强可操...
带你深入学习k8s--(一)K... 目录 前言: 一、Kubernetes简介与架构 1. Kubernetes简介 2....
小学国庆节活动主题方案 小学国庆节活动主题方案(通用7篇)  为了确保活动有效开展,常常需要提前进行细致的活动方案准备工作,...
JAVA并发编程之锁 1、乐观锁和悲观锁 1.1、悲观锁 认为自己在使用数据的时候一定有别的线程来修改数据,...
梅花的观察日记 梅花的观察日记梅花的观察日记1  梅花我的爱好很多,尤其是养花,在我的房间,种了满屋的花,在这花中,...
劳动竞赛活动方案 劳动竞赛活动方案15篇  为了确保工作或事情有序地进行,常常需要提前进行细致的方案准备工作,方案是综...
做家务初中日记500字   家务是每个家庭成员都应该做的事情,在家里你会做什么家务呢?下面小编为你整理了做家务初中日记500...
Scala变量和常量 目录 0 回顾:Java 变量和常量语法 1 基本语法 2 案例实操 常量...
列式存储格式: 使用Core ... 本文针对使用Core ORC API的VectorizedRowBatch 读取ORC文件详解,并给...
JS基本使用 系列文章目录 前端系列文章——传送门 JavaScript系列文章——传送门 文章目录系列文章目录...