我对Pyomo非常陌生,正在处理一个用例,其中我的目标函数系数是动态的&需要一个最小-最大函数。
目标函数=最大值(sum(p*UC(-sum(p-min(p((*UC其中P是需要优化的变量,UC是基于某些计算得出的值的函数。
我几乎不怀疑
- 如何在目标函数中使用min或max函数,我尝试过np.min或调用函数,但由于函数具有if-else条件,它会出错
我试过很多东西,但似乎都不起作用。如果有人能帮我处理伪代码,那就太好了。
提前感谢。
Min可以通过定义一个新的变量min_P
来实现,该变量需要小于任何P
,用约束表示:
所有i 的min_P <= P[i]
这将确保min_P
不大于最小的P
。然后你可以在你的目标函数中使用min_P
。我想你知道如何定义这样的约束。这可能会导致一个未绑定变量的问题,具体取决于您的优化方式,但这应该会让您走上正轨。
如果为表达式sum (P * UC) - sum ( P - min(P))
定义另一个值,则最大情况类似。
目前尚不清楚UC
是一个参数还是一个变量本身(在另一个约束中计算(。在后一种情况下,整个问题将是高度非线性的,应该重新考虑。
我不理解你的抽象模型与具体模型的问题。如果您有可用的数据,请使用ConcreteModel。除此之外,请参阅此处。