1

Python 3.6 で pyomo Pyomo 5.1.1 (Linux 3.16.0-4-amd64 上の CPython 3.6.0) を使用しています。合計を使用してモデルで Expression を構築しようとすると、エラー メッセージが表示されます。最小限の例を次に示します。

from pyomo.environ import *
from pyomo.opt import SolverFactory
model=ConcreteModel()
model.H=RangeSet(0,23)
model.x=Var(model.H)
E=summation(model.x)

次のエラーが表示されます。

"

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/b67777/anaconda3/lib/python3.6/site-packages/pyomo/core/base/util.py", line 86, in summation
    ans += item
  File "/home/b67777/anaconda3/lib/python3.6/site-packages/pyomo/core/base/numvalue.py", line 537, in __iadd__
    return generate_expression(_iadd,self,other)
  File "/home/b67777/anaconda3/lib/python3.6/site-packages/pyomo/core/base/expr_coopr3.py", line 977, in generate_expression
    _self = _generate_expression__clone_if_needed(_self, 1)
  File "/home/b67777/anaconda3/lib/python3.6/site-packages/pyomo/core/base/expr_coopr3.py", line 918, in _generate_expression__clone_if_needed
    % ( getrefcount(obj) - UNREFERENCED_EXPR_COUNT, ))
RuntimeError: Expression entered generate_expression() with too few references (0<0); this is indicative of a SERIOUS ERROR in the expression reuse detection scheme.

"

model.H で「合計」を h のループに置き換えた場合、同じエラーが発生します。

バグはここでも指摘されています: https://github.com/Pyomo/pyomo/issues/103

古いバージョンの Python に戻す以外に、これを修正する簡単な方法はありますか?

ご助力ありがとうございます、

ポーリン

4

1 に答える 1