【问题标题】:Print Solver Results of terms from an objective function Pyomo从目标函数 Pyomo 打印项的求解结果
【发布时间】:2019-01-13 11:11:46
【问题描述】:

当我想用 Solver Results 打印一些具体值时,我遇到了一些问题。

这是我的目标函数:

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)

在该目标函数中,我想单独打印这个“额外变量”,因为目标函数返回 model.PERIODS 中每个 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

我想打印这些“变量”:h_idle[1], h_idle[2]....
请,一些想法如何做到这一点? 提前致谢。

【问题讨论】:

    标签: python python-3.x solver pyomo


    【解决方案1】:

    调用求解器后,结果会自动加载回模型中的变量中。您可以使用value 函数打印单个值。

    for t in model.PERIODS:
        h_idle_t = YOUR LONG EXPRESSION
        print('h_idle[' + str(t) + '] = ', value(h_idle_t))
    

    【讨论】:

    • 非常感谢贝瑟尼。
    猜你喜欢
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    相关资源
    最近更新 更多