整数线性规划:示例和好的工具?

2023-12-06

找到一个使 c 最小化的向量 x 。 x 受约束 m 。 x >= b,x 整数。

这是一个示例输入集:

c : {1,2,3}
m : {{1,0,0},
     {0,1,0},
     {1,0,1}}
b : {1,1,1}

带输出:

x = {1,1,0}

解决此类问题的好工具是什么,以及如何使用它们的示例?


GLPK

我正在使用提供答案GLPK的glpsol,但我希望有更好的方法来做到这一点(对于线性规划问题的这种简单特殊情况,GLPK 似乎过于强大/通用):

为了生成下面给出的 .mps 文件,您必须将矩阵按行拆分为方程组,因此问题描述变为:

minimize

cost = 1 x_1 + 2 x_2 + 3 x_3

s.t. constraints:

S1 = 1 x_1 + 0 x_2 + 0 x_3
S2 = 0 x_1 + 1 x_2 + 0 x_3
S3 = 1 x_1 + 0 x_2 + 1 x_3

S1 >= 1
S2 >= 1
S3 >= 1

0 <= x1 <= 1
0 <= x2 <= 1
0 <= x3 <= 1

GLPK文档具有有关 .mps 格式的详细信息,但您可以指定行、列、rhs 和边界。在 ROWS 部分中,“N”和“G”指定约束类型(分别为数字和大于)。在 BOUNDS 部分中,“UI”指定边界是上位整数类型,强制解为整数。

要根据问题规范运行求解器:

> glpsol --freemps example.mps -o example.out

示例.mps 文件:

NAME          VM
ROWS
 N cost
 G S1
 G S2
 G S3
COLUMNS
 x_1    cost    1.0
 x_1    S1      1.0
 x_1    S3      1.0
 x_2    cost    2.0
 x_2    S2      1.0
 x_3    cost    3.0
 x_3    S3      1.0
RHS 
 RHS1 cost   0.0
 RHS1 S1     1.0
 RHS1 S2     1.0
 RHS1 S3     1.0
BOUNDS
 UI BND1 x_1 1.0
 UI BND1 x_2 1.0
 UI BND1 x_3 1.0
ENDATA

outputs:

Problem:    VM
Rows:       4
Columns:    3 (3 integer, 3 binary)
Non-zeros:  7
Status:     INTEGER OPTIMAL
Objective:  cost = 3 (MINimum)

   No.   Row name        Activity     Lower bound   Upper bound
------ ------------    ------------- ------------- -------------
     1 cost                        3
     2 S1                          1             1
     3 S2                          1             1
     4 S3                          1             1

   No. Column name       Activity     Lower bound   Upper bound
------ ------------    ------------- ------------- -------------
     1 x_1          *              1             0             1
     2 x_2          *              1             0             1
     3 x_3          *              0             0             1

Integer feasibility conditions:

INT.PE: max.abs.err. = 0.00e+00 on row 0
        max.rel.err. = 0.00e+00 on row 0
        High quality

INT.PB: max.abs.err. = 0.00e+00 on row 0
        max.rel.err. = 0.00e+00 on row 0
        High quality

End of output

另外,我不清楚如何直接获取解决问题的 x 向量,尽管它在本节上面的输出中进行了编码:

  No. Column name       Activity     
------ ------------    ------------- 
     1 x_1          *              1 
     2 x_2          *              1 
     3 x_3          *              0  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

整数线性规划:示例和好的工具? 的相关文章

  • 线性规划 - 等于表达式符号的变量

    我正在尝试编写一个线性程序 需要一个等于 x c 符号的变量 z 其中 x 是另一个变量 c 是常数 我考虑过z x c x c 不幸的是 如果 x c 则会除以 0 我不能使用 z x c 因为我不想通过 x 和 c 之间的差异大小来对其
  • 用遗传算法建立排名,

    BIG 版本后的问题 我需要使用遗传算法建立排名 我有这样的数据 P a gt b 0 9 P b gt c 0 7 P c gt d 0 8 P b gt d 0 3 现在 让我们解释一下a b c d作为足球队的名称 以及P x gt
  • 依赖算法 - 找到要安装的最小软件包集

    我正在研究一种算法 其目标是找到安装包 X 的最小包集 我将通过一个例子更好地解释 X depends on A and E or C A depends on E and H or Y E depends on B and Z or Y
  • gurobipy 中的反向指标约束

    我是 gurobipy 的初学者 我想添加一个反向指标约束 指标约束只不过取决于约束是否成立的二元变量 在 gurobipy 中 这写为 model addConstr x 1 gt gt y z lt 5 其中 x 是二进制变量 y 和
  • scipy 优化最小化——并行化选项

    当使用 L BFGS B 方法运行 scipy Optimizeminimum 时 我发现在某些计算机上 它使用全部 8 个 cpu 核心 参见照片 1 在其他计算机上它使用 8 个核心中的 4 个 参见照片 2 而在其他计算机上 它使用
  • 在邻近区域组建实力相似的团队

    Idea 令人遗憾的是 如此多的伟大国家 例如印度 和球员 例如莫萨拉赫 可能永远不会参加国际足联 足球 足球 世界杯 同样的论点也适用于由少数统治者主导的其他体育赛事 队 例如国际板球和篮球锦标赛 尝试创建一个更加平衡的赛事 同时仍然保留
  • pyomo 生成具有大量约束的模型的性能

    我对 Pyomo 生成具有大量约束和变量 大约 10e6 的 OR 模型的性能感兴趣 我目前正在使用 GAMS 来启动优化 但我想使用不同的 python 功能 因此使用 Pyomo 来生成模型 我做了一些测试 显然当我编写模型时 每次实例
  • AMPL:对 cplex 使用“timelimit”选项后的结果是否满足所有约束?

    我有一个虚拟问题 我需要知道它的答案 我正在开发一个需要 AMPL 和 CPLEX 作为求解器的项目 现在这个问题一般需要140秒以上才能解决 当我搜索时 我进入了一个名为timelimit 我有价值地使用了这个选项option cplex
  • 根据密度函数将平面划分为质量相等的区域

    给定平面中的 密度 标量场 如何将平面划分为良好的 低惯性矩 区域 以便每个区域包含相似数量的 质量 这不是对我的实际问题的最佳描述 但这是我能想到的最简洁的措辞 我有一张用于游戏的虚构世界的大地图 我很清楚一个人从这张地图上的任何给定点一
  • 组织毡尖笔:使用 JS 通过相邻项目的相似性优化 2D 网格中项目的排列 [更新]

    UPD 该问题已更新具体细节和代码 请参见下文 警告 这个问题是关于优化矩阵中项目的排列 这不是比较颜色 最初 我决定提供有关我的问题的背景会有帮助 我现在对这个决定感到后悔 因为结果恰恰相反 关于颜色的无关紧要的讨论太多 而几乎没有关于实
  • Scipy:稀疏矩阵的线性规划

    我想用 python 求解线性规划 变量的数量 从现在起我将其称为 N 非常大 50000 并且为了以这种方式表述问题scipy optimize linprog需要它 我必须构造两个 N x N 矩阵 A and B以下 LP 可以写为
  • 使用 R 对分组变量进行非线性优化

    我试图找到以下目标函数的最大值 objective lt function bid revenue click cost revenue 2 lt sum revenue cost bid click bid cost click cost
  • 为分配/指派问题建立线性规划

    我在线性程序方面遇到了一些麻烦 我已经解决并使用 Excel 但现在我想在 R Python 中执行它 因为我已经达到了 Excel 和求解器的限制 因此 我就这个特定主题寻求帮助 我通过改变 lp assign 函数尝试使用 lPsovl
  • 帕累托最优前沿

    我试图获得两个适应度函数的帕累托最优前沿 我通过使用虚拟矩阵对非支配解进行排序 该虚拟矩阵在矩阵中为任何非支配解分配 1 当我绘制帕累托前沿时 它不断包含我知道不属于帕累托最优的点 但是 我似乎找不到这个问题的原因 任何帮助将非常感激 fo
  • scipy.optimize.minimize(COBYLA 和 SLSQP)忽略 for 循环内发起的约束

    我正在使用 scipy optimize minimize 来求解复杂的油藏优化模型 SQSLP 和 COBYLA 因为问题受到边界和约束方程的约束 每天有一个决策变量 蓄水量 水库的释放量是根据目标函数内蓄水量变化的函数来计算的 然后应用
  • 3 维装箱算法

    我面临着 3 维装箱问题 目前正在进行一些初步研究 了解哪些算法 启发式方法目前能产生最佳结果 由于问题是 NP 难问题 我不希望在每种情况下都能找到最佳解决方案 但我想知道 1 最好的精确求解器是什么 分支定界 我期望使用合理的计算资源可
  • 使到 n 个点的集合的欧氏距离之和最小的点

    我有一组点W x1 y1 x2 y2 xn yn 在 2D 平面上 你能找到一种算法 将这些点作为输入并返回一个点 x y 在 2D 平面上 距以下点的距离之和最小W 换句话说 如果 di Euclidean distance x y xi
  • R:单纯形错误:在下标赋值中不允许使用 NA

    对于以下具有目标函数和约束的最小化 boot simplex返回错误 Error in tab pr lt tab pr tab pr pc pv o tab pr NAs are not allowed in subscripted as
  • PowerBI:如何保存R脚本的结果?

    是否可以在 Power BI Desktop 中实现以下场景 将数据从 Excel 文件加载到多个表 使用 R 脚本从多个数据源进行计算 将计算结果存储到 Power BI pbix 中的新表 这个想法是使用 Power BI Deskto
  • 已知最有效的尾递归素数验证函数是什么?

    到目前为止 我正在尝试元编程 compiled on Ubuntu 13 04 with clang O3 ftemplate depth 8192 fconstexpr depth 4096 std c 11 stdlib libc lc

随机推荐