Python Pyomo中的嵌套和

Python Pyomo中的嵌套和,python,pyomo,Python,Pyomo,我对Pyomo是全新的,对Python也是相当陌生的。我试图写一个模型,其中包含一个目标函数和一个嵌套的和。下面是一个玩具示例,希望能让这个问题与其他问题相关: 我有一组客户C和一组服务器S。我按分钟租用服务器,我有一组Pyomo成本,代表每分钟租用每台服务器的成本(有些比其他更贵)。此集合的长度等于服务器数。我还有一个二维的Pyomo服务时间集,表示为每个客户服务所需的时间。这取决于服务器和客户,因此两者都对其进行索引 总成本是按服务器索引的服务器成本之和乘以按服务器和客户索引的服务时间之和

我对Pyomo是全新的,对Python也是相当陌生的。我试图写一个模型,其中包含一个目标函数和一个嵌套的和。下面是一个玩具示例,希望能让这个问题与其他问题相关:

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

总成本是按服务器索引的服务器成本之和乘以按服务器和客户索引的服务时间之和

我不知道如何在Pyomo中表示这一点,因为我索引的集合是不同的。这个链接:似乎是一个类似的问题,但没有帮助。请记住,这些都必须存在于Pyomo
目标函数中

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

我还尝试嵌套sum(
sum\u产品(服务器成本,sum\u产品(服务时间,index=model.customers*model.servers),index=servers)
),但这也不起作用,因为内部的
sum\u产品
变成了服务器无法订阅的LinearExpression对象


我怎样才能正确地表达这个总数?非常感谢。

我很确定您的目标函数会是这样的(假设您的模型中有一个二进制变量
x
,指示服务器s是否分配给客户c):


这听起来像是个家庭作业问题。我建议您在尝试在Pyomo中实现之前,先手工写出完整的优化问题。你的约束和变量是什么?目标函数应该是什么?这不是一个家庭作业问题,我正在处理的问题比我在问题中提出的问题更复杂。我只是简单地将问题归结为相关的要素,以便更容易回答,并对其他so读者有用。问题是如何用Pyomo表示嵌套和,以便我可以将其用作目标。我已经对目标有信心了。谢谢!我需要的结构是
sum
中的
for
,正如您上面描述的,它完成了嵌套。
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_)