我根据以下示例使用 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) 我正在使用 GNU glpk 求解器解决混合整数规划(MIP) 问题。该问题包含大约 1,625 列和 507 行,我认为这不是一个大规模问题。但是,glpk 在解决问题超过 9 小时后未能提供解决方案。
我想知道是否有人遇到过类似的问题或有任何加快计算速度的建议。否则,您是否有任何其他 MIP 求解器建议我可以尝试对源代码进行少量更改?
optimization mathematical-optimization linear-programming glpk
你会如何转换约束 |x| >= 2,以便它可以在线性规划中工作(特别是使用单纯形求解)。
我了解如何转换 |x| <= 2 因为这将变成 x <= 2 和 -x <= 2
然而,当你有一个最小常数时,同样的逻辑就不起作用了。
我有这个优化问题,我试图根据列 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 函数中设置这个问题?
我想用库 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 告诉我它不处理 ">" 运算符之间int,LpAffineExpression所以我写了x_i - x_j >= 1. …
假设我有以下系统说明的一些变量和约束:
灰线可以拉伸和收缩它们顶部的范围给定的量。蓝线只是端点,显示了灰线如何相互作用。
我的目标:我想使用线性规划来均匀地最大化灰线的大小,如图所示。你可以想象带有弹簧的灰色线条,它们都同样向外推。一个糟糕的解决方案是将所有蓝线尽可能推向一侧。请注意,此描述中有一点余地,并且可能有多种解决方案 - 我所需要的只是让它们合理均匀,并且不要让一个值最大化压扁其他所有内容。
我尝试的目标函数只是最大化线条大小的总和:
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
我需要从这个 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
我想优化以下代码,但我收到如下错误,涉及约束中的第四行(我认为)。任何帮助将不胜感激,谢谢:
\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) 前段时间我正在写一篇与 OR 相关的文章以供发表。在这篇文章中,展示了使用 MiniZinc 解决某个优化问题的 MILP 模型。我在 10 个实例中以最佳方式解析了 10 个实例。
顾问对其进行审查并提到以下 2 条评论:
我一直在使用 MiniZinc,它对我很有效。我如何展示 MiniZinc 的多功能性?是否有参考书目或证明其合理性的方法?
出于什么原因,您不建议在摘要中提及它?
使用 MiniZinc 的有效理由是什么?
linear-programming constraint-satisfaction minizinc mixed-integer-programming
I need to solve the following microeconomic problem: