标签: pulp

Pulp(Python)值错误:需要多于1个值才能解压缩

我正在尝试使用Python上的PuLP 来解决这个问题http://www.me.utexas.edu/~jensen/ORMM/models/unit/linear/subunits/workforce/.

这是我的代码:

from pulp import *

# Create the 'prob' variable to contain the problem data
prob = LpProblem("The Bus Problem",LpMinimize)

# The variables are created with a lower limit of zero
x0=LpVariable("Number of drivers at time 0",0,None,LpInteger)
x4=LpVariable("Number of drivers at time 4",0)
x8=LpVariable("Number of drivers at time 8",0)
x12=LpVariable("Number of drivers at time 12",0)
x16=LpVariable("Number of drivers at time 16",0)
x20=LpVariable("Number of drivers at time 20",0)

# The objective function is added to 'prob' first …
Run Code Online (Sandbox Code Playgroud)

python python-2.7 pulp

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

使用PuLP进行整数线性优化

我必须解决纸浆的整数线性优化问题。我解决了问题,并获得了等于42的优化值。但是,当我编写更通用的代码时,例如在循环内声明变量,在循环内定义约束以及使用lpSum函数定义优化,我没有解决方案。我认为我的问题是定义下一个约束。

for a in itemset_dict.keys():
    for b in itemset_dict[a][0]:
        my_lp_program +=b  >=  a, "2Constraint"
Run Code Online (Sandbox Code Playgroud)

我收到以下警告:

C:\Program Files\Python36\lib\site-packages\pulp\pulp.py:1353: UserWarning: Overwriting previously set objective.
  warnings.warn("Overwriting previously set objective.")
Status: Optimal
Total Optimum= None
__dummy = None
products_beer = 0.0
products_cheese = 0.0
products_cola = 0.0
products_peanuts = 0.0
The thread 'MainThread' (0xb30) has exited with code 0 (0x0).
The program '[10140] python.exe' has exited with code 0 (0x0).
Run Code Online (Sandbox Code Playgroud)

谢谢。

      from pulp import *

# defining list of products
products = ['cola','peanuts', 'cheese', …
Run Code Online (Sandbox Code Playgroud)

python linear-programming pulp

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

Python PuLP“覆盖先前设定的目标。” 和__dummy =无

我已经在Python中构建了一个非常复杂的MIP PuLP。显然对我来说有点复杂。当我运行它时,它发出以下警告:

用户警告:覆盖先前设置的目标。warnings.warn(“覆盖先前设置的目标。”)

该问题进行了一些计算,但未达到预期的解决方案。

LpStatus[prob.status]收益Optimal

prob.objective收益None

当我prob.variables()

for v in prob.variables():
    print(v.name, "=", v.varValue)
Run Code Online (Sandbox Code Playgroud)

__dummy = None介于其他变量之间。

谁能解释__dummy = None在这种情况下的含义?我在哪里可以找到解决方案?我非常确定我只有一个目标函数。

python warnings pulp

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

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

我想用库 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
查看次数

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

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

\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
查看次数

当问题在Python的pull库中解决后状态为-1时,这意味着什么?

解决线性规划问题后,我得到的状态代码为 -1。

status = problem.solve()
# status == -1
Run Code Online (Sandbox Code Playgroud)

根据我的研究,-1 根本就不是一个可能的状态代码。向问题添加约束/变量时没有错误。我知道这个问题是可以解决的,因为我已经在其他地方解决了它(代码是垃圾,所以我正在重写它)。我尝试重新安装纸浆,但没有成功,而且我不知道如何开始解决此问题。为什么我会得到这个状态?

python pulp

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

通过 PuLP 最大化决策变量的标准差

我是 PuLP 的新手,正在尝试将标准差编程为优化问题中的目标函数。我已阅读此答案,尽管我知道它是相关的,但无法将其应用于我的具体情况。

我正在尝试解决以下优化问题:最大化一组 3 个决策变量的标准差,其相关权重向量为 [0.25、0.40 和 0.35]。我的限制是每个决策变量的范围应在 0.5 到 2.0 之间。(这是一个简化的示例;实际上,我将拥有更大的决策变量集和更大的相应权重向量)。

到目前为止,我的代码如下:

from pulp import LpMaximize, LpProblem, LpVariable

# Create the model
model = LpProblem(name="max_stdev", sense=LpMaximize)

# Define the decision variables
x = {i: LpVariable(name=f"x{i}", lowBound=0.5, upBound=2.0) for i in range(3)}

# Add the constraints to the model
model += (0.25*x[0] + 0.40*x[1] + 0.35*x[2] == 1, "weight_constraint")

# Add the objective function to the model, which should be the standard deviation of the x vector …
Run Code Online (Sandbox Code Playgroud)

python math linear-programming pulp

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

我可以在 PuLP 中制作 Min Z = max(a,b,c)

我想知道我是否可以在PuLP 中创建一个多目标函数,通过这样做我可以在PuLP 中创建一个 Min Z = max(a,b,c),但是在使用此代码时

    ilp_prob = pulp.LpProblem("Miniimize Problem", pulp.LpMinimize)
    x = []
    if m >3:
        return 1,1
    for i in range(m):
        temp = []
        for j in range(len(jobs)):
            temp += [pulp.LpVariable("x_%s_%s" %((i+1),(j+1)),0,1, cat = 'Binary')]
        x+= [temp]
    ilp_prob += max([pulp.lpSum([jobs[j]*x[i][j] for j in range(len(jobs))] for i in range(m))])
    for i in range(len(jobs)):
         ilp_prob += pulp.lpSum([x[j][i] for j in range(m)])==1 
    ilp_prob.solve()
Run Code Online (Sandbox Code Playgroud)

它只返回 x[0] 中的所有 1,以及 x[0] 中的所有 0。

python mathematical-optimization linear-programming pulp

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

具有动态约束的 Python Pulp 线性规划

我目前使用 Excel 中的 Solver 来寻找制造的最佳解决方案。这是当前的设置: 在此输入图像描述

它涉及在旋转机器上制造鞋子,也就是说,生产是分批重复进行的。例如,一批为“10x A1”(参见表中的 A1),这将产生 10x 尺寸 36、20x 尺寸 37...10x 尺寸 41。

有一些前缀设置;A1、A2;R7...如上表所示。

然后是一个requested变量(或者更确切地说是一个变量列表),它基本上说明了客户的要求,每个尺寸的数量。

目标函数是找到一组重复,使其尽可能匹配请求的数量。因此,在解算器中(抱歉,没有英文屏幕截图),您可以看到目标是N21(即每个大小的绝对差之和)。变量是N2:N9- 这是每次设置的重复次数,唯一的限制是它N2:N9是一个整数。

我如何用 python 模拟这种行为?我的开始:

from collections import namedtuple

from pulp import *


class Setup(namedtuple('IAmReallyLazy', 'name ' + ' '.join(f's{s}' for s in range(36, 47)))):
    # inits with name and sizes 's36', 's37'... 's46'
    repetitions = 0


setups = [
    Setup('A1', 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0),
    Setup('A2', …
Run Code Online (Sandbox Code Playgroud)

python linear-programming pulp

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

Fantasy Football的Python PuLP优化问题,如何添加某些条件约束?

目前这是我第一次在 python 中使用 PuLP 库。深入研究这个库的目的是用Python制作一个梦幻足球解算器。我已经成功制作了求解器,但不知道如何添加我需要的一些约束。

我有一个 400 名球员的 Excel 表格以及我如何预测他们的比赛方式,并且我想在给定特定限制的情况下找到 9 名球员的最佳组合。Excel 表包含球员姓名、球员投射、球队球员在场、对手球员面对以及位置。下面是 panda 数据框的头部的样子。

              Name  Projection Position Team  Salary Opponent
0             Jets    3.528576      DST  NYJ    2000      IND
1           Texans    7.936528      DST  HOU    2100      PIT
2         Panthers    4.219883      DST  CAR    2200      LAC
3          Raiders    0.904948      DST  LVR    2300       NE
Run Code Online (Sandbox Code Playgroud)

我成功完成的约束条件是:限制最多选择9名球员,QB位置仅1人,WR位置3-4人,TE位置1-2人,DST位置1人,RB位置2-3人。

raw_data = pd.read_csv(file_name,engine="python",index_col=False, header=0, delimiter=",", quoting = 3)

#create new columns that has binary numbers if player == a specific position
raw_data["RB"] = (raw_data["Position"] == 'RB').astype(float)
raw_data["WR"] = (raw_data["Position"] == …
Run Code Online (Sandbox Code Playgroud)

python optimization linear-programming pandas pulp

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

非线性约束的优化问题

我是优化问题的新手,正在研究一个简单的最大化问题,我可以在 Excel 中非常简单地解决这个问题。但是,我需要在 Python 中扩展它并需要一些帮助。

我有一份不同食物的菜单,我需要最大限度地提高我的能量输出。例子:

食物 卡路里 活力
蛋白质 100 60
蛋白质 羊肉 200 40
蛋白质 200 38
碳水化合物 香蕉 200 25
碳水化合物 土豆 200 30
碳水化合物 200 40
胖的 牛油果 450 50
胖的 奶酪 400 60
胖的 奶油 500 55

鉴于以下限制,我需要最大化能量(e):

  1. 每个 Macros(m) 只能消耗 1 个食物项目 (i)。所以我需要一个指示变量 (0/1) 来从 m - 蛋白质、脂肪和碳水化合物中的每一个中只选择 1 个。
  2. 卡路里总数 (c) 不应超过一个恒定值假设每个项目有 1 份(对此没有限制)

问题表述:

变量: X (m,i) ? 二元变量 = {1 ,如果宏 m 和项目 i 被选择,0 否则}

最大化 …

python linear-programming pulp mixed-integer-programming scipy-optimize

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