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를 종료하고 다시 입력해야합니다.
의견이 있으십니까?
파이썬과 아나콘다 버전 :
파이썬 3.5.2 | 아나콘다 4.2.0 (64 비트) | (기본 7 월 5 2016 11시 41분 13초) MSC v.1900 64 비트 (AMD64)]을
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
오류 발생시 전체 스택 추적을 게시 할 수 있습니까? 또한, 스파이더에서 실행중인 드라이버를 게시 할 수 있습니까? 플러그인 시스템에서 오류가 발생하지만 간단한 모델/드라이버를 사용하여 오류를 복제 할 수 없습니다. – jsiirola
질문을 편집했습니다. 답장을 보내 주셔서 감사합니다. 네가 필요한 것이 있으면 알려줘. –
지금까지 간단한 예를 들어이 동작을 재현하지 못했습니다. (스파이더로 파이썬 3.5.2를 실행하고 있지만 아나콘다에서는 사용할 수 없으며 Pyomo 4.2.10784, 4.4.1 및 트렁크를 사용해 보았습니다). 'AgOpt.py' 스크립트를 공유 할 수 있습니까? 그것은 약간의 힌트를 제공 할 수 있습니다. – jsiirola