2

私はピモから始めて、いくつか質問があります。

抽象モデルと対応するデータ ファイルを作成します。後で変数のソリューションを使用するために、スクリプトで解決したいと思います。次のコードでそれをやろうとしました:

data = DataPortal()
data.load(filename="Datos\Datos_reactor2.dat")
instance = model.create_instance(data)  
opt = SolverFactory("ipopt")
results = opt.solve(instance)

そして、それは完全に解決しますが、データに問題がありました。私のモデルでは設定されていないため、データは次のように定義された単純な定数です。

param qv := 2.832;
param ci := 14.46;
...

ただし、このデータ ファイル python を使用すると、エラーが表示されます。

ValueError: Parameter 'qv' defined with '1' dimensions, but data has '1' values: [2.832]. Are you missing a value for a 1-dimensional index?

次のようなパラメーターを定義するデータ ファイルを変更すると、次のようになります。

param qv := 1  2.832;
param ci := 1  14.46;
...

別のエラーが発生しました:

RuntimeError: Failed to set value for param=qv, index=1, value=2.832. source error message="Error setting parameter value: Cannot treat the scalar Param 'qv' as an array"

最後に、問題を解決するには、定数をテーブルとして定義する必要があります (以下を参照)。ただし、以前のエラーがわかりません。

table qv := 2.832;
table ci := 14.46;
...

強調するために、問題を解決しようとすると、次のように言うだけです。

!pyomo solve Reactor2.py Datos_reactor.dat --solver=ipopt --summary

最初のケース (param qv := 2.832; ...) のように定義されたデータでは、問題はなく、同じ解決策が得られました。

誰かが私に違いを教えて、エラーを説明してもらえますか?

ありがとうございました!!

マリア

4

0 に答える 0