问题标签 [integer-programming]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
integer - 在 ILP 中找到最大值花费了太多时间,为什么?
简而言之,我们现在正在尝试将 IQP 更改为 ILP。旧的实现大约需要 2 天才能完成,现在使用线性工具——它应该会加快速度。基本上问题是最大化(大约 50 个二进制变量):
$$\sum_{g=1}^{5}sum_{p=1}^{10} ( S[p]x[g][p]-疲倦[g][p]-睡眠[g][p ])$$
更新
我认为 David 走在正确的轨道上,但是当我尝试使用奖励变量最大化表达式时,它们每次都为零,为什么?在一些代码下面,分数可能像S[1..10]=[1,2,3,4,5,6,7,8,9,10];
.
c++ - 使用 cplex 求解时如何设置间隙
我正在用 C++ 编写代码并调用 CPLEX 来解决它。它可以快速找到一个非常好的解决方案,但需要很长时间才能尝试改进它。所以我想将间隙设置为更大的值来终止代码,这就是我使用的:
但是编译器给了我一个错误,说EpGap
是一个未声明的标识符。相对间隙的默认名称是什么?
java - 在 ILOG CPLEX Optimizer java API 中开始使用 MIP
我找不到在 CPLEX java API 中有效使用 MIP 启动的方法。
我有一个线性问题,我需要通过仅更改一个约束或更改目标来解决多次,因此我认为从解决方案开始(使用 MIP 启动)可能是加快计算速度的好方法。
因此,为了做到这一点,在我第一次解决问题后,我将所有变量保存在一个 IloNumVar 数组中,并使用 cplex.addMIPStart 将其加倍传递给我的其他 cplex 对象。
问题是它并没有加快任何速度,而是让它变慢并给我这个消息:
警告:从 1 个 MIP 开始没有找到解决方案。
所以也许我不应该给 MIP 启动所有变量,但我怎么知道要给它什么变量?
我也试图改变 MIP 启动努力,但它似乎没有任何区别......
为什么它不能使计算更快?有没有更好的方法来解决只有一些差异的许多问题?
matlab - 0-1 绝对值优化(等价,有两个不等式)
优化工具箱中的bintprog
命令解决了具有不等式约束和可选等式约束的 0-1 编程问题:Ax <= b 其中 A 是矩阵和 ba 列向量。
我有一个 |Ax| 形式的问题 <= b,或等效地,-b <= Ax <= b。有没有办法用Matlab解决这类问题?
mathematical-optimization - 整数规划不等式约束
我正在尝试在 MIP 中对以下约束进行建模:
这个想法是引入一个变量 z 是 1,如果 x_1 +x_2 + ... +x_n = d 并添加约束
但我不知道如何为约束建模
在整数程序中。
mathematical-optimization - cplex boolVarArray 给出双精度值
我一直在尝试使用 CPLEX Java 实现 ILP,并且长期以来一直被困在一个问题上。以下是 ILP 的几个变量:
numRect 的值为 1。在程序结束时,我输出这些值:
这是我得到的输出:
我不明白为什么我得到双值而不是布尔值。任何帮助,将不胜感激。谢谢。
optimization - 如何安排不同类型的木板形成桥梁
假设我们想从$A$ 走到$B$,但是它们之间有几条河流。为了从$A$ 走到$B$,我们需要为每条河流建造一座桥。
我们有几种类型的木板。不同类型的木板成本和长度不同,但相同类型的木板成本和长度相同。我们可以用木板搭桥。但是,可用木板的数量是有限的。我们的目标是为每条河流建造一座桥梁,同时最大限度地降低木板的总成本。
为了更好地描述问题,我们画了一个图来描述我们的问题。
有 3 条河流需要的桥梁长度分别为 $d_1$、$d_2$ 和 $d_3$。
我们有 4 美元的木板。令 $l_i$ 和 $c_i$ 表示第 $i$ 种木板的长度和成本。令$\delta_i$ 表示第$i$ 种木板的可用数量。令 $n_{ij}$ 表示用于建造桥梁 $j$ 的木板数量。
那么问题可以表述如下:
最小化 $\sum_{j=1}^3 \sum_{i=1}^4 n_{ij}c_i$
英石
$\sum_{i=1}^4 n_{ij}l_i \geq d_j$
$\sum_{j=1}^3 n_{ij} \leq \delta_i$
$n_{ij}\geq 0$ & $n_{ij} \in Z$
我认为这个问题应该是 NP-Hard,因为它是一个整数规划问题。这是真的?有谁知道如何解决这个问题?即使是不是最优的解决方案。
linear-programming - 这是 LP 格式 CPLEX 整数程序中指标约束的有效使用吗?
我试图了解 CPLEX 中指标约束的使用。我已指定要在 CPLEX Interactive Optimizer 中解决的简单整数规划问题。由于各种原因,我无法使用任何 CPLEX API 来完成此任务。
真正的问题是一个简单的最大覆盖集问题,但有大量变量。有许多类型的 THING,它们可以在一个或多个 BOXES 中找到。我想在我的解决方案中最大化 THING 类型的数量,同时将 BOXES 的数量保持在一个约束之下。所有变量都是二进制文件。
真正的问题显然要大得多。我在这里制作了一个简单的版本,限制为 3 BOXES。
我的第一个问题是:这种仅使用指标约束的问题表述是否有效?在我的真实示例中,它可以愉快地与 CPLEX 一起运行,我还没有发现它会产生意想不到的解决方案。回答这个问题是以下问题的先决条件。
我的第二个问题是:我想引入一个约束,我只想要对 THING1 进行两次采样的解决方案。我替换了指标约束
和
在我真正的问题中,这个约束的 RHS 似乎被忽略了。CPLEX 毫无怨言地读取和优化,返回的解决方案将 THING1 的值设为 1,但(例如)将具有 BOX1 = 1、BOX4 = 0、BOX5 = 0。
这让我担心要么我完全错过了在 LP 格式程序中使用指标约束的要点,要么是处理指标约束的优先级导致了这个问题。
我想到的另一件事是 CPLEX 的预求解例程可能会在某处删除约束,但我认为在深入研究预求解输出之前我会检查明显的情况。