Pyomo 我有一个函数问题,该函数根据向量上的值向解算器发送正确的方程
该功能正常工作。该函数将回归“knn_Potentia”中的值与同一问题的pass解决方案的“m.u_variable[x]”(Pyomo variable)值进行比较。如果“knn_Potentia”的值高于或与“CP”相同,则发送一个方程,但如果值较低,则发送另一个方程。问题在于,在当前解决方案中,“m.u_变量[x]”的值可能高于“CP”,但函数会将另一个方程发送给解算器,因为该点的“knn_效价”中的值较低。由于这个原因和错误,问题变得不可行。我不知道是否有人知道更好的方法来避免这个错误 这就是功能:Pyomo 我有一个函数问题,该函数根据向量上的值向解算器发送正确的方程,pyomo,Pyomo,该功能正常工作。该函数将回归“knn_Potentia”中的值与同一问题的pass解决方案的“m.u_variable[x]”(Pyomo variable)值进行比较。如果“knn_Potentia”的值高于或与“CP”相同,则发送一个方程,但如果值较低,则发送另一个方程。问题在于,在当前解决方案中,“m.u_变量[x]”的值可能高于“CP”,但函数会将另一个方程发送给解算器,因为该点的“knn_效价”中的值较低。由于这个原因和错误,问题变得不可行。我不知道是否有人知道更好的方法来避免这个错误
def modelo_pot(m,x):
if (knn_potencia.predict([[float(x)]])[0]-CP) >= 0:
return m.daw[x] == (CP-m.u_variable[x])*m.tp_variable[x]
elif x==0:
return m.daw[x] == (CP-m.u_variable[x])*m.tp_variable[x]
else:
exp = e**(-(CP-m.u_variable[x])*(m.t[x]-m.t[m.x_variable.get_lower_element_boundary(x)])/awc0)
return m.awc[x] == awc0-(awc0-m.awc[m.x_variable.get_lower_element_boundary(x)])*exp
谢谢。您不能基于模型组件有条件地向解算器发送不同的方程式。当代码执行时,这些都是未知的……代码只是为了构建模型,解算器将仔细研究。这样想吧。。。在已知或探索任何值之前,需要执行所有代码,以干净地向解算器构建模型。