打印 objective 函数 Pyomo 项的求解器结果
Print Solver Results of terms from an objective function Pyomo
当我想用求解器结果打印一些具体值时遇到了一些问题。
这是我的 objective 功能:
def obj2_rule(model):
return sum(sum(model.htotal1[k] + model.htotal2[k] + model.htotal3[k] - sum(sum(model.hreq1[p,j] * (sum(model.x[p,k,j] for k in sequence(t)) - sum(model.x[p,k,j] for k in sequence(t - model.time[p,j]))) + model.hreq2[p,j] * (sum(model.x[p,k,j] for k in sequence(t)) - sum(model.x[p,k,j] for k in sequence(t - model.time[p,j]))) + model.hreq3[p,j] * (sum(model.x[p,k,j] for k in sequence(t)) - sum(model.x[p,k,j] for k in sequence(t - model.time[p,j]))) for j in model.MODELS) for p in jobs_per_station[k]) for k in model.ESTATIONS) for t in model.PERIODS)
model.obj2 = Objective(rule=obj2_rule)
在 objective 函数中,我想单独打印这个 "extra variables" 因为 objective 函数 returns [=27= 中每个 t 的总和]:
h_idle[t] = sum(model.htotal1[k] + model.htotal2[k] + model.htotal3[k] - sum(sum(model.hreq1[p,j] * (sum(model.x[p,k,j] for k in sequence(t)) - sum(model.x[p,k,j] for k in sequence(t - model.time[p,j]))) + model.hreq2[p,j] * (sum(model.x[p,k,j] for k in sequence(t)) - sum(model.x[p,k,j] for k in sequence(t - model.time[p,j]))) + model.hreq3[p,j] * (sum(model.x[p,k,j] for k in sequence(t)) - sum(model.x[p,k,j] for k in sequence(t - model.time[p,j]))) for j in model.MODELS) for p in jobs_per_station[k]) for k in model.STATIONS)
对于 model.PERIODS
中的每个 t
我想打印这些 "variables" : h_idle[1], h_idle[2]
...
请,一些想法如何去做?
提前致谢。
调用求解器后,结果会自动加载回模型中的变量中。您可以使用 value
函数打印单个值。
for t in model.PERIODS:
h_idle_t = YOUR LONG EXPRESSION
print('h_idle[' + str(t) + '] = ', value(h_idle_t))
当我想用求解器结果打印一些具体值时遇到了一些问题。
这是我的 objective 功能:
def obj2_rule(model):
return sum(sum(model.htotal1[k] + model.htotal2[k] + model.htotal3[k] - sum(sum(model.hreq1[p,j] * (sum(model.x[p,k,j] for k in sequence(t)) - sum(model.x[p,k,j] for k in sequence(t - model.time[p,j]))) + model.hreq2[p,j] * (sum(model.x[p,k,j] for k in sequence(t)) - sum(model.x[p,k,j] for k in sequence(t - model.time[p,j]))) + model.hreq3[p,j] * (sum(model.x[p,k,j] for k in sequence(t)) - sum(model.x[p,k,j] for k in sequence(t - model.time[p,j]))) for j in model.MODELS) for p in jobs_per_station[k]) for k in model.ESTATIONS) for t in model.PERIODS)
model.obj2 = Objective(rule=obj2_rule)
在 objective 函数中,我想单独打印这个 "extra variables" 因为 objective 函数 returns [=27= 中每个 t 的总和]:
h_idle[t] = sum(model.htotal1[k] + model.htotal2[k] + model.htotal3[k] - sum(sum(model.hreq1[p,j] * (sum(model.x[p,k,j] for k in sequence(t)) - sum(model.x[p,k,j] for k in sequence(t - model.time[p,j]))) + model.hreq2[p,j] * (sum(model.x[p,k,j] for k in sequence(t)) - sum(model.x[p,k,j] for k in sequence(t - model.time[p,j]))) + model.hreq3[p,j] * (sum(model.x[p,k,j] for k in sequence(t)) - sum(model.x[p,k,j] for k in sequence(t - model.time[p,j]))) for j in model.MODELS) for p in jobs_per_station[k]) for k in model.STATIONS)
对于 model.PERIODS
中的每个 t我想打印这些 "variables" : h_idle[1], h_idle[2]
...
请,一些想法如何去做?
提前致谢。
调用求解器后,结果会自动加载回模型中的变量中。您可以使用 value
函数打印单个值。
for t in model.PERIODS:
h_idle_t = YOUR LONG EXPRESSION
print('h_idle[' + str(t) + '] = ', value(h_idle_t))