如何在PuLP中为列表内每个线性规划变量单独设置边界?
PuLP为变量单独设置边界的解决方法
方法一:逐个创建变量后存入字典
直接为每个变量单独定义边界,再统一存入字典,方便后续在规划问题中调用:
from pulp import LpVariable, LpProblem, LpMinimize mylist = ["x", "y", "z"] # 逐个定义变量,自定义各自的上下界及类型 x = LpVariable("x", lowBound=5, upBound=10, cat='Continuous') y = LpVariable("y", lowBound=0, upBound=20, cat='Continuous') z = LpVariable("z", lowBound=-5, cat='Continuous') # 仅设置下界,无上界限制 # 把变量存入字典,便于统一管理 vars_dict = {"x": x, "y": y, "z": z} # 后续将变量加入规划问题(示例) prob = LpProblem("MyLPProblem", LpMinimize) prob += vars_dict["x"] + vars_dict["y"] + vars_dict["z"] # 设置目标函数
方法二:用配置字典+推导式批量生成(适合变量较多的场景)
先把每个变量的边界参数整理成配置字典,再通过字典推导式快速生成变量字典,更高效:
from pulp import LpVariable, LpProblem, LpMinimize mylist = ["x", "y", "z"] # 预先定义每个变量的边界配置,键对应变量名,值是LpVariable的参数 var_configs = { "x": {"lowBound":5, "upBound":10, "cat":'Continuous'}, "y": {"lowBound":0, "upBound":20, "cat":'Continuous'}, "z": {"lowBound":-5, "cat":'Continuous'} } # 批量生成变量字典 vars_dict = {name: LpVariable(name, **var_configs[name]) for name in mylist} # 示例:加入规划问题 prob = LpProblem("MyLPProblem", LpMinimize) prob += sum(vars_dict.values()) # 目标函数
关于你之前单独创建变量未成功的可能原因
如果单独定义变量后没生效,大概率是变量未被添加到规划问题实例中——只要在目标函数或约束条件中使用该变量,PuLP会自动将其纳入问题;也可以手动通过prob += x的方式明确添加。另外要注意变量名不能重复,否则会覆盖之前的定义。
内容的提问来源于stack exchange,提问作者nix20536
相关产品推荐
相关产品推荐

