为什么我的pyomo代码中的目标对象具有未知类型“generator”?

2024-09-27 04:24:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python中的pyomo库创建一个具有无数约束的优化问题,但是我在我看似简单的客观定义中仍然会遇到错误,并且不明白为什么。你知道吗

我正在创建一个抽象模型,其中的目标是最小化每小时和每种资源的成本(ab_mdl.c)乘以功率(ab_mdl.x)。目标函数如下:

def TOU_rule(ab_mdl):
    return(summation(ab_mdl.c[i]*ab_mdl.x[j,i]) for i in ab_mdl.hours for j in ab_mdl.num_of_cars)

ab_mdl.cost_obj=Objective(rule=TOU_rule)

但是,当我运行完整的代码时,会出现以下错误:

Cannot treat the value '. at 0x21427670>' as a constant because it has unknown type 'generator'

我不明白代码到底出了什么问题,特别是因为这是一个相对简单的目标,而且我遵循了使用Pyomo的类似示例的语法。有人知道我下一步该做什么吗?你知道吗


Tags: 代码in模型目标forab定义错误
1条回答
网友
1楼 · 发布于 2024-09-27 04:24:32

也许这是你的问题中的一个输入错误,但如果不是,我认为你应该做3个改进,使你的代码工作。你知道吗

  1. return(thing)语句应该是return thing编写的。这是因为return是一个单独的单词,括号没有用处。

  2. 在同一行中,summation不是正确的词,您必须使用sum

  3. 在调用以构建目标时,不要忘记设置优化意义(maximizeminimize)。你知道吗

然后,您的代码将是:

def TOU_rule(ab_mdl): 
    return sum(ab_mdl.c[i]*ab_mdl.x[j,i]) for i in ab_mdl.hours for j in ab_mdl.num_of_cars
ab_mdl.cost_obj=Objective(rule=TOU_rule, sense=minimize)

相关问题 更多 >

    热门问题