标签: linear-programming

Python cvxopt 忽略约束

我根据以下示例使用 CVXOPT 进行线性编程:http ://abel.ee.ucla.edu/cvxopt/examples/tutorial/lp.html 我很确定我表达了一个约束

X1 >= 0 
Run Code Online (Sandbox Code Playgroud)

但是得到一个负值。怎么来的?我收到“找到最佳解决方案”消息

A = matrix( [ [0.0, 0.0, 1.0, 1.0, -0.0, -0.0, -1.0, -1.0, -1.0, 0.0, 0.0], 
              [0.0, 1.0, 1.0, 0.0, -0.0, -1.0, -1.0, -0.0, 0.0, -1.0, 0.0], 
              [1.0, 0.0, 0.0, 1.0, -1.0, -0.0, -0.0, -1.0, 0.0, 0.0, -1.0]
              ]
            ) 
Run Code Online (Sandbox Code Playgroud)

约束值(右侧)

b = matrix( [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0] )
Run Code Online (Sandbox Code Playgroud)

最小化功能:

c = matrix( [-1.0, -1.0, -1.0] )
Run Code Online (Sandbox Code Playgroud)

调用:

 sol=solvers.lp(c,A,b)
Run Code Online (Sandbox Code Playgroud)

但:

print (sol['x']): 
[-4.83e-09]
[ …
Run Code Online (Sandbox Code Playgroud)

python linear-programming

1
推荐指数
1
解决办法
1940
查看次数

如何加速求解 MIP 模型的 GLPK

我正在使用 GNU glpk 求解器解决混合整数规划(MIP) 问题。该问题包含大约 1,625 列和 507 行,我认为这不是一个大规模问题。但是,glpk 在解决问题超过 9 小时后未能提供解决方案。

我想知道是否有人遇到过类似的问题或有任何加快计算速度的建议。否则,您是否有任何其他 MIP 求解器建议我可以尝试对源代码进行少量更改?

optimization mathematical-optimization linear-programming glpk

1
推荐指数
1
解决办法
3665
查看次数

线性规划 - 绝对值大于常数

你会如何转换约束 |x| >= 2,以便它可以在线性规划中工作(特别是使用单纯形求解)。

我了解如何转换 |x| <= 2 因为这将变成 x <= 2 和 -x <= 2

然而,当你有一个最小常数时,同样的逻辑就不起作用了。

constraints linear-programming absolute-value

1
推荐指数
1
解决办法
1563
查看次数

使用 LpSolve 在 R 中设置线性规划优化?

我有这个优化问题,我试图根据列 X 中的唯一值最大化列 z,但也在一个约束内,即 X 的每个唯一值与 Y 的列相加最小于(在本例中) 23.

例如,我有这个示例数据:

d=data.frame(x=c(1,1,1,2,2,2,3,3,3),y=c(9,7,5,9,7,5,9,7,5),z=c(25,20,5,20,10,5,10,5,3))
Run Code Online (Sandbox Code Playgroud)

看起来像这样:

  X  Y  Z 
1 1  9  25     
2 1  7  20   
3 1  5  5    
4 2  9  20    
5 2  7  10     
6 2  5  5    
7 3  9  10     
8 3  7  5               
9 3  5  5
Run Code Online (Sandbox Code Playgroud)

结果应如下所示:

  X  Y  Z 
1 1  9  25  
4 2  9  20     
9 3  5  5 
Run Code Online (Sandbox Code Playgroud)

我如何在 lpSolve::lp 函数中设置这个问题?

optimization r linear-programming lpsolve

1
推荐指数
1
解决办法
914
查看次数

如何表达线性规划中的“不等于”关系?

我想用库 Pulpe(或任何其他库)解决 Python 中的 LP 问题。

我想表达一个约束,说明我的所有变量必须具有不同的值,(对于给定的整数 N,它们的域是 {0, 1, 2, 3... N}。)即x_1 != x_2 != x_3 ... != x_N.

当我没有添加与我上面提到的内容相关的任何约束时,求解器会给我一个解决方案,但是当我这样做时,它告诉我该系统即使有一个解决方案也不可行。

为了添加“所有不同”约束,我执行了以下操作:

for x_i in variables:
    for x_j in variables:
        if the following constraint has not been already added and x_i != x_j:
            my_problem += x_i - x_j >= 1, "unique name for the constraint"
Run Code Online (Sandbox Code Playgroud)

之前的代码不起作用。当我想添加约束时x_i != x_j,它不起作用。因此,当我使用一组有界整数时,我可以(我认为)将“不等于”重写为 x_i - x_j > 0。Pulpe 告诉我它不处理 ">" 运算符之间intLpAffineExpression所以我写了x_i - x_j >= 1. …

python linear-programming pulp

1
推荐指数
1
解决办法
2880
查看次数

线性规划:我可以制定一个目标来同时最大化多个变量吗?

假设我有以下系统说明的一些变量和约束: 在此处输入图片说明 灰线可以拉伸和收缩它们顶部的范围给定的量。蓝线只是端点,显示了灰线如何相互作用。

我的目标:我想使用线性规划来均匀地最大化灰线的大小,如图所示。你可以想象带有弹簧的灰色线条,它们都同样向外推。一个糟糕的解决方案是将所有蓝线尽可能推向一侧。请注意,此描述中有一点余地,并且可能有多种解决方案 - 我所需要的只是让它们合理均匀,并且不要让一个值最大化压扁其他所有内容。

我尝试的目标函数只是最大化线条大小的总和:

maximize: (B - A) + (C - B) + (C - A) + (D - C) + (E - B) + (E - D) + (F - E) + (F - D) + (F - A) 
Run Code Online (Sandbox Code Playgroud)

我很清楚这不是一个好的解决方案,因为这些项相互抵消,并且一条线上的增加只会在另一条线上减少相同的数量,因此目标永远不会偏向于在变量之间均匀分布最大化。

我还尝试将每条线与其中间可能范围的距离最小化。对于 line B - A,其范围内的中间值(1,3)2。这是第一学期的目标:

minimize: |(B - A) - 2| + ...
Run Code Online (Sandbox Code Playgroud)

为了实现绝对值,我将术语替换为U并添加了额外的约束:

minimize: U + ...
with: U <= (B - A - 2)
      U <= -(B …
Run Code Online (Sandbox Code Playgroud)

algorithm mathematical-optimization linear-programming or-tools

1
推荐指数
1
解决办法
742
查看次数

从 if-else 语句构建 MILP 约束

我需要从这个 if-else 语句构建一个 MILP(混合整数线性规划)约束:其中 beta 是一个常量。

if (a > b) then c = beta else c = 0
Run Code Online (Sandbox Code Playgroud)

如何构建 MILP 约束的语句。有没有什么技术可以解决这个问题。谢谢。

linear-programming integer-programming mixed-integer-programming

1
推荐指数
1
解决办法
4778
查看次数

纸浆能以最小的限度管理约束吗?

我想优化以下代码,但我收到如下错误,涉及约束中的第四行(我认为)。任何帮助将不胜感激,谢谢:

\n\n
 model += A[i] == min(P[i], C[i])\n    TypeError: \'<\' not supported between instances of \'int\' and \'LpVariable\'\n\n    P0 = [[1,0,4],[2,0,3],[4,6,2],[5,2,1],[1,0,0]]\nx = [2,3,0]\nxMax = [14,12,13]\nC = [122, 99,  158, 37, 44]\n\n\n# Instantiate our problem class\nmodel = pulp.LpProblem("Clem", pulp.LpMaximize)\n\n# Construct our decision variable lists\nx = pulp.LpVariable.dicts(\'pInstal\', (i for i in range(3)), lowBound = 0, cat = \'Continuous\')\ntx = pulp.LpVariable(\'tauxAutoconso\', 0)\nfor i in range(5):\nP = pulp.LpVariable.dicts(\'vectProduction\',(i for i in range(5)), lowBound = 0, cat = \'Continuous\')\nA = pulp.LpVariable.dicts(\'vectAutoConso\',(i for i in range(5)), …
Run Code Online (Sandbox Code Playgroud)

python linear-programming pulp

1
推荐指数
1
解决办法
920
查看次数

如何在研究中展示 MiniZinc 的效率

前段时间我正在写一篇与 OR 相关的文章以供发表。在这篇文章中,展示了使用 MiniZinc 解决某个优化问题的 MILP 模型。我在 10 个实例中以最佳方式解析了 10 个实例。

顾问对其进行审查并提到以下 2 条评论:

  1. 您如何将 MiniZinc 与其他最新一代 MILP 求解器(如 CPLEX 或 Gurobi)在性能方面进行比较?

我一直在使用 MiniZinc,它对我很有效。我如何展示 MiniZinc 的多功能性?是否有参考书目或证明其合理性的方法?

  1. 由于 MiniZinc 不是最著名的 MILP 求解器之一,因此您应该避免在摘要中提及它的名称。

出于什么原因,您不建议在摘要中提及它?

使用 MiniZinc 的有效理由是什么?

linear-programming constraint-satisfaction minizinc mixed-integer-programming

1
推荐指数
1
解决办法
105
查看次数

How to solve linear programming model in R

I need to solve the following microeconomic problem:

  • I have six assets I can produce (asset 1 - 6) across five years (2011 - 2015).
  • Each asset can only be produced during one year.
  • Each asset must be produced in my five year period.
  • Production is not mutually exclusive; I can produce more than one good in a year without affecting the production of either.
  • Each asset has a fixed cost of production equal to 30.
  • I must have non-negative …

r matrix linear-programming

1
推荐指数
1
解决办法
296
查看次数