2016-10-28 13 views
0

私はPyomoを使用していますが、私は以前の最適化の結果を次に使用する一連の最適化をしたいと思います。インターフェイスIPyomoTaskは既に定義されています

AgOpt.py

import pyomo 
import pyomo.opt 
from pyomo.environ import * 
import numpy as np 

AvailLand = 330 
AvailWat = 945 

AlfWat = 4 
AlmWat = 1.5 
CornWat = 2.5 

AlfMaxY = 7 
AlmMaxY = 6.5 
CornMaxY = 7 

AlfPrice = 132 
AlmPrice = 610 
CornPrice = 300 

AlfCostAcre = 681 
AlmCostAcre = 3478 
CornCostAcre = 610 

N=[1,2,3] 

model = ConcreteModel() 
model.x = Var(N, within=NonNegativeReals) 
model.Obj = Objective(expr=model.x[1]*(AlfMaxY*AlfPrice-AlfCostAcre)+\ 
         model.x[2]*(AlmMaxY*AlmPrice-AlmCostAcre)+\ 
         model.x[3]*(CornMaxY*CornPrice-CornCostAcre), sense=maximize) 
model.con1=Constraint(expr=model.x[1]<=100.1) 
model.con2=Constraint(expr=model.x[2]<=30.03) 
model.con3=Constraint(expr=model.x[3]<=200.2) 
model.con4=Constraint(expr=model.x[1]+model.x[2]+model.x[3]<=330) 

model.dual=Suffix(direction=Suffix.IMPORT_EXPORT) 


opt = SolverFactory("glpk") 
results = opt.solve(model) 
model.solutions.load_from(results) 

results.write() 
model.Obj.display() 
model.x.display() 
model.dual.display() 

問題は、私は(スパイダーを使用して)コードを解決するときにされると、このエラーが発生し二回目:

を「インターフェイスIPyomoTaskが既に定義されています」

そして私はSpyderを終了してもう一度入力する必要があります。

提案がありますか?

Pythonとアナコンダバージョン:

パイソン3.5.2 |アナコンダ4.2.0(64ビット)| (デフォルトでは、2016年7月5日、11時41分13秒)[MSC v.1900 64ビット(AMD64)]

私は元々使っていたので...私のpython 3.5を(実行するための環境を使用していた解決しよう
Traceback (most recent call last): 

    File "<ipython-input-2-f27cc52b2eaf>", line 1, in <module> 
    runfile('//fresno/users/escriva/Documents/Python Scripts/AgOpt.py', wdir='//fresno/users/escriva/Documents/Python Scripts') 

    File "C:\Users\escriva\AppData\Local\Continuum\Anaconda2\envs\py35\lib\site-packages\spyder\utils\site\sitecustomize.py", line 866, in runfile 
    execfile(filename, namespace) 

    File "C:\Users\escriva\AppData\Local\Continuum\Anaconda2\envs\py35\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile 
    exec(compile(f.read(), filename, 'exec'), namespace) 

    File "//fresno/users/escriva/Documents/Python Scripts/AgOpt.py", line 9, in <module> 
    import pyomo.opt 

    File "c:\users\escriva\appdata\local\continuum\anaconda2\envs\py35\lib\site-packages\pyomo-4.2.10784-py3.5.egg\pyomo\opt\__init__.py", line 10, in <module> 
    from pyomo.util.plugin import PluginGlobals 

    File "c:\users\escriva\appdata\local\continuum\anaconda2\envs\py35\lib\site-packages\pyomo-4.2.10784-py3.5.egg\pyomo\util\__init__.py", line 10, in <module> 
    from pyomo.util._task import pyomo_api, PyomoAPIData, PyomoAPIFactory 

    File "c:\users\escriva\appdata\local\continuum\anaconda2\envs\py35\lib\site-packages\pyomo-4.2.10784-py3.5.egg\pyomo\util\_task.py", line 102, in <module> 
    class IPyomoTask(plugin.Interface): 

    File "C:\Users\escriva\AppData\Local\Continuum\Anaconda2\envs\py35\lib\site-packages\PyUtilib-5.2.3601-py3.5.egg\pyutilib\component\core\core.py", line 600, in __new__ 
    raise PluginError("Interface %s has already been defined" % name) 

PluginError: Interface IPyomoTask has already been defined 
+0

取得しているエラーの完全なスタックトレースを投稿できますか?また、スパイダーで実行しているドライバを投稿することはできますか?エラーはPluginシステムからのものですが、単純なモデル/ドライバを使用して複製することはできません。 – jsiirola

+0

質問を編集しました。ありがとうございます。あなたが何か他のものが必要な場合は教えてください。 –

+0

これまでのところ、この動作を簡単な例で再現することはできませんでした(私はスパイダーでPython 3.5.2を実行していますが、Anacondaではなく、Pyomo 4.2.10784、4.4.1、およびトランクを試しました)。あなたの 'AgOpt.py'スクリプトを共有できますか?それはいくつかのヒントを提供するかもしれません。 – jsiirola

答えて

2

Python 2.7)。だから、私はすべてをアンインストールし、python 3.5だけを使ってanacondaを再インストールしました。

関連する問題