2017-06-19 2 views
0

Y at-il un analogue continue (intégrale) à la fonction de somme de Pyomo qui pourrait faire plusieurs sommations à la foisPyomo Intégrales multiples

sum(model.x[i,j] for i in model.index_is, for j in model.index_js) 

Heat_Conduction.py dans les exemples de DAE a une référence à l'intégration imbriquée, mais il est commenté out et il jette un ValueError: intégrale doit être indexé par un S continu chaque fois que je commente le dans

# def _obj(m): 
#  return Integral(Integral(expr=m.intExp,wrt=m.x,bounds=(0,10)), wrt=m.y,bounds=(0,5)) 
# m.obj = Objective(rule=_obj) 

J'ai cherché partout, mais je ne pouvais pas trouver un exemple de travail et je ne pouvais pas comprendre. les docs.

Merci à l'avance

Répondre

0

La composante intégrale est pas complètement développé et je ne recommanderais pas l'utiliser. Une meilleure façon de formuler une intégrale continue en utilisant les composants Pyomo.DAE serait de différencier votre équation intégrale et de la convertir en équation différentielle. Voir la discussion ici: How to define an Integral as an objective function in pyomo?

+0

Je ne sais pas comment je pourrais accomplir cela avec mon modèle actuel. Integral est-il vraiment inutilisable? – japseow

+0

Basé sur votre question sur le forum pyomo où vous voulez que "les indices des intégrales internes dépendent des externes", non il n'y a pas moyen de le faire avec le composant Integral. Le composant Integral a été prototypé pour des intégrales simples où les limites sont la totalité de la gamme de ContinousSet sur laquelle elles ont été déclarées. De plus, la règle trapézoïdale est la seule technique d'intégration numérique actuellement disponible qui peut ne pas être assez précise pour tous les problèmes. La révision du composant Integral est sur ma liste TODO mais je ne suis pas sûr quand il sera disponible. –