我需要访问目标函数之外的决策变量。我有以下内容。
tc_var = {}
for index in index_f_a:
tc_var[index] = m.Var(value=25, name='tc_var_{}'.format(index), lb=15, ub=45, integer=False)
def k1(i, z, j, a):
a_dif = tce[(i, z, j, a)] - tc_var[(i, j)].VALUE
return a_dif if a_dif > 0 else 0
m.Minimize(m.sum([k1(i, z, j, a)*KCA for i, z, j, a in index_f_h_a_v]))
在另一个问题中,有人告诉我们在目标中使用 .value 仅使用初始值。我怎样才能以正确的方式做到这一点(访问价值决策)?
谢谢。
如果我不使用 .value,则会出现以下错误:
解决了
def k1(i, z, j, a):
d = m.Var(lb=0)
s = m.Var(lb=0)
m.Minimize(1e-3*s)
m.Equation(d == (tce[(i, z, j, a)] - tc_var[(i, j)])*KCA + s)
return d
m.Minimize(
m.sum([k1(i, z, j, a) for i, z, j, a in index_f_h_a_v]))