Pyomo中的嵌套和

问题描述 投票:0回答:1

我是Pyomo的新手,而Python是新手。我正在尝试编写一个模型,该模型包括带有嵌套和的目标函数。这是一个玩具示例,希望该问题也与其他人相关:

我有一组客户C和一组服务器S。我按分钟租用服务器,并且我有一套Pyomo成本,代表每分钟租用每台服务器的成本(有些比其他服务器贵一些)。此Set的长度等于服务器的数量。我还有一套二维Pyomo服务时间,代表服务每个客户所需的时间。这取决于服务器和客户,因此两者均对其进行索引。

总成本是服务器成本的总和,由服务器索引,乘以服务时间总和,由服务器和客户均索引。

我不知道如何在Pyomo中表示这一点,因为我要建立索引的集合是不同的。此链接:Pyomo sum inside sum with various index似乎是一个类似的问题,但没有帮助。请记住,所有这些都必须存在于Pyomo Objective函数中。

[我尝试使用Pyomo的sum_product函数并对两个(index = model.customers * model.servers)的笛卡尔乘积建立索引,但这不起作用,因为服务器无法对客户进行索引。

[我也尝试过嵌套和(sum_product(server costs, sum_product(service times, index = model.customers * model.servers), index = servers)),但这不起作用,因为内部的sum_product变成了服务器无法下标的LinearExpression对象。

如何正确表达这笔款项?非常感谢。

python pyomo
1个回答
0
投票

我很确定您的目标函数看起来像这样(假设您的模型中有一个二进制变量x,指示是否将Server分配给了客户c):

def cost_(model):
    return sum(model.Scostperminute[s]*model.servicetime[s,c]*model.x[s,c] for s in model.S for c in model.C)
model.cost = Objective(rule=cost_)
© www.soinside.com 2019 - 2024. All rights reserved.