【发布时间】:2021-09-09 10:57:38
【问题描述】:
我有一个非常复杂的问题,我必须使用求解器来解决。
我有一些变量,其中可能的值存储在一个数组中,例如 x1 不能在 0 和 1 之间的任何值,除了 possible_values 中指定的值。
以下示例是我模型的一小部分,因此不能使用几个循环来找到解决方案。
问题是我不能在 Var 函数中使用 possible_values 数组作为域。
你有什么想法和想法吗?
model = ConcreteModel()
possible_values = [0.1,0.25,0.2,0.05,0.4,0.15,0.75] # add up to 1
model.x1 = Var(domain=possible_values)
model.x2 = Var(domain=possible_values)
model.x3 = Var(domain=possible_values)
model.x4 = Var(domain=possible_values)
model.x5 = Var(domain=possible_values)
model.x6 = Var(domain=possible_values)
obj_expr = 3*model.x2 + 1*model.x3 + 2*model.x4 + 7*model.x5 + 9*model.x6 + 10*model.x7
model.minimizer = Objective(expr=obj_expr, sense=maximize)
model.const1 = Constraint(expr=model.x1 + model.x2 <= 0.3)
model.const2 = Constraint(expr=model.x4 + model.x3 >= 0.25)
solver.solve(model);
#values xN should all be different
print(value(model.x1)) #should be one of possible_values
print(value(model.x2)) #should be one of possible_values
print(value(model.x3)) #should be one of possible_values
print(value(model.x4)) #should be one of possible_values
print(value(model.x5)) #should be one of possible_values
print(value(model.x6)) #should be one of possible_values
> [0.1, 0.25, 0.2, 0.05, 0.4, 0.15, 0.75] is not a valid domain. > Variable domains must be an instance of a Pyomo Set. Examples: > NonNegativeReals, Integers, Binary
【问题讨论】:
标签: python python-3.x solver pyomo