标签: linear-programming

最小化 Gurobi 优化中的最大值

我正在开发一个模型来使用 gurobi 和 python 解决 MIP 问题。该问题涉及一组预定义路线的行驶时间。我试图实现的目标函数之一是最小化所选路线的最大旅行时间。其数学表示为: min f = max(Dij * Zij)
其中 D 是每条路线 ij 的行程时间,Z 是指示路线 ij 是否是解决方案的一部分的赋值变量,因此如果不选择该路线那么表达式的计算结果为 0。在 Gurobi 中为 python 建模的最佳方法是什么?

python linear-programming gurobi

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

调度优化以最小化时隙数量(有约束)

我正在研究调度优化问题,其中我们有一组需要在特定时间范围内完成的任务。

每个任务都有一个时间表,指定可以执行该任务的时间段列表。每个任务的时间表可能因工作日而异。

这是小样本(减少了任务和时间段的数量):

task_availability_map = {
    "T1" : [0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    "T2" : [0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    "T3" : [0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    "T4" : [0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, …
Run Code Online (Sandbox Code Playgroud)

python algorithm linear-programming job-scheduling or-tools

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

用Python解决有理数线性规划问题

我有一个带有整数约束的 LP,我想使用 Python 以精确算术求解它。其实我只需要一个可行点。

编辑:“精确算术”这里指的是无界枚举数和分母的有理数。

之前的尝试:

速度只是一个中等问题。我的较大实例有大约 500 个带有框约束的变量和 40 个等式,但涉及的数量可能很大。

python algorithm rational-number linear-programming

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

使用 Pulp 加速整数线性优化

我正在尝试解决一个具有超过 45.000 个二进制变量和约 350.000 个约束的大规模线性整数优化问题 (MILP)。

我正在使用Pulp来解决问题,但我无法在合理的时间内找到解决方案。

有什么方法可以大大加快优化过程吗?例如:

  • Pulp 可以以某种方式并行化吗?
  • 还有其他可以使用的软件包/求解器吗?
  • 还有其他建议吗?

python optimization linear-programming pulp

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

如何在or-tools中定义复杂的目标函数?

我想知道如何使用 or-tools 定义复杂的目标函数(如果可能的话)。

下面的基本示例展示了如何使用 python 中的 Or-tools 解决基本线性问题:

solver = pywraplp.Solver('lp_pricing_problem', pywraplp.Solver.GLOP_LINEAR_PROGRAMMING)

# Define variables with a range from 0 to 1000.
x = solver.NumVar(0, 1000, 'Variable_x')
y = solver.NumVar(0, 1000, 'Variable_y')

# Define some constraints.
solver.Add(x >= 17)
solver.Add(x <= 147)
solver.Add(y >= 61)
solver.Add(y <= 93)

# Minimize 0.5*x + 2*y
objective = solver.Objective()
objective.SetCoefficient(x, 0.5)
objective.SetCoefficient(y, 2)
objective.SetMinimization()

status = solver.Solve()

# Print the solution
if status == solver.OPTIMAL:
    print("x: {}, y: {}".format(x.solution_value(), y.solution_value())) # x: 17.0, …
Run Code Online (Sandbox Code Playgroud)

python linear-programming least-squares or-tools objective-function

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

Java库? - 单工/线性编程/优化

我正在寻找一个优化库.我的两个要求是它不使用JNI,并且它没有许可证限制,因此无法在商业上在多台计算机上使用它.我发现的唯一符合这些要求的是Choco,但是它有点无人驾驶.

java mathematical-optimization linear-programming

4
推荐指数
1
解决办法
2万
查看次数

如何解决不平等制度?

我已将问题(表格布局算法)减少到以下问题:

想象一下,我有N个变量X 1,X 2,...,X ñ.我也有一些(未确定的)不等式,例如:

X 1 > = 2
x 2 + X 3 > = 13

每个不等式是一个或多个变量的总和,并且始终使用> =运算符将其与常量进行比较.我不能事先说出每次会有多少不等式,但所有变量都必须是非负的,所以每个变量已经是一个.

如何以这种方式解决这个系统,变量的值尽可能小?

补充:阅读维基百科文章并意识到我忘了提到变量必须是整数.猜猜这让NP很难,是吧?

algorithm inequality system linear-programming solver

4
推荐指数
2
解决办法
5588
查看次数

lpsolveAPI在RStudio中

我在RStudio中使用lpsolveAPI.当我键入具有很少决策变量的模型的名称时,我可以读取模型中当前约束的打印输出.例如

> lprec  
Model name: 
          COLONE    COLTWO  COLTHREE   COLFOUR          
Minimize         1         3      6.24       0.1          
THISROW          0     78.26         0       2.9  >=  92.3
THATROW       0.24         0     11.31         0  <=  14.8
LASTROW      12.68         0      0.08       0.9  >=     4
Type          Real      Real      Real      Real          
Upper          Inf       Inf       Inf     48.98          
Lower         28.6         0         0        18  
Run Code Online (Sandbox Code Playgroud)

但是当我创建一个包含9个以上决策变量的模型时,它不再提供完整的摘要,而是我看到:

> lprec
Model name:
    a linear program with 13 decision variables and 258 constraints
Run Code Online (Sandbox Code Playgroud)

当有大量决策变量时,有谁知道我怎么能看到模型的相同详细摘要?

奖金问题:RStudio是使用R的最佳控制台吗?

这是一个例子:

>lprec <- make.lp(0,5) 
Run Code Online (Sandbox Code Playgroud)

这使得一个名为lprec的新模型具有0个约束和5个变量.即使你现在叫这个名字你也会得到:

>lprec
Model name: 
        C1    C2    C3    C4    C5 …
Run Code Online (Sandbox Code Playgroud)

r linear-programming

4
推荐指数
2
解决办法
2854
查看次数

如何简化重复的Python PuLP语法?

如何将以下Python PuLP语句简化为Pythonic,可管理和正确的内容:

import pulp as lp

#delare variables
#Note that I have to model a 100 year period!
year_1 = lp.LpVariable("2011", 0, None, lp.LpInteger)    
year_2 = lp.LpVariable("2012", 0, None, lp.LpInteger)
year_. = lp.LpVariable("201.", 0, None, lp.LpInteger)
year_n = lp.LpVariable("201n", 0, None, lp.LpInteger)

#declare constraints
prob += year_1 - year_0 >= 0
prob += year_2 - year_1 >= 0
prob += year_. - year_. >= 0
prob += year_n - year_n_1 >= 0
Run Code Online (Sandbox Code Playgroud)

python linear-programming pulp

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

匈牙利算法:每个工人有多个工作

匈牙利算法是否有扩展功能,可以满足每个工人的多个工作分配要求?该算法以其最简单的形式将单个作业分配给单个工人。

我的应用程序是一个利润最大化的问题,有3个工人和180个工作岗位。我还将添加约束(每个工人最少分配50个工作)。

我已经使用Python中的mungres库成功实现了匈牙利算法,效果很好。我只是在努力寻找与每个工人的多个任务相关的文献。

https://pypi.python.org/pypi/munkres

https://zh.wikipedia.org/wiki/匈牙利语算法

https://zh.wikipedia.org/wiki/Generalized_assignment_problem

我尝试了注释中列出的标准numpy方法,但无法将其扩展到每个工作人员多个分配。如果我的矩阵是矩形(即3个工人和4个工作),则仅将前3个工作分配给工人。我还尝试添加虚拟变量以创建方矩阵,但是随后将作业分配给了这些虚拟工,而不是实际工

python algorithm linear-programming hungarian-algorithm

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