Pulp:设置不是基于lpSum而是在一定范围内的约束吗?

问题描述 投票:0回答:1

我试图理解python中的纸浆库,特别是在定义不涉及lpSum且仅是其中一个变量的界限的约束时。

orders_dict_test = {"Orders": [11, 22, 33, 44, 55, 66, 77],
                    "Num_Days": [1, 2, 2, 3, 3, 5, 6]}

[如何使用“ Num_Days”创建纸浆约束,而我们只希望包含“ Num_Days”为> = 1和<= 4的“订单”?

我只是很难理解不涉及lpSum的约束,因为我所看到的许多示例都集中于此。

任何资源或帮助都会很棒。

谢谢。

python optimization pulp minimization
1个回答
0
投票

我不完全理解这个问题,或者您想达到什么目的。总的来说,尽管在创建约束时倾向于使用变量“集合”可以做两件事(集合只是变量的集合,您可以按照自己喜欢的任何方式进行定义)。

您可以对那组变量求和,也可以对该组中的每个变量应用约束。

因此,在您的示例中,创建满足orders_dict_test['Num_Days'] >= 1 and <= 4的变量子集将非常简单,然后您可以对该子集求和或对该子集中的每个变量应用约束。

下面的代码将创建满足该约束的('orders','ndays')元组列表。提取实际变量将取决于您如何定义它们。我建议您可能需要一些描述的唯一键。

orders_dict_test = {"Orders": [11, 22, 33, 44, 55, 66, 77],
                    "Num_Days": [1, 2, 2, 3, 3, 5, 6]}

print([(o, nd) for o, nd in zip(orders_dict_test['Orders'], orders_dict_test['Num_Days']) if nd >= 1 and nd<= 4])
© www.soinside.com 2019 - 2024. All rights reserved.