1
나는 pyomo
내 모델에서 지수의 여러 수준을 가지고 있고,이 같은 인덱스 변수 수 있어야합니다 :pyomo에서 집합과 범위 집합을 사용하여 다중 수준 인덱싱을 사용하는 방법은 무엇입니까?
model.b['a',1]
을하지만 어떤 이유로 가능하지 않는 것 같습니다. 나는이 같은 다단계 인덱싱을 사용할 수 있습니다
model = ConcreteModel()
model.W = RangeSet(0,1)
model.I = RangeSet(0,4)
model.J = RangeSet(0,4)
model.K = RangeSet(0,3)
model.B = Var(model.W, model.I, model.J, model.K)
model.B[1,2,3,0] # access the variable using the indices - THIS WORKS!!
을하지만 그러나, 작동하지 않습니다
TypeError: Cannot index a component with an indexed set
이유는 첫 번째 작업을 수행합니다
model = ConcreteModel()
model.W = Set(['a','b'])
model.I = RangeSet(0,4)
model.b = Var(model.W, model.I) # I can't even create this - throws exception
를 ... 그것은 예외를 throw 두 번째 작품이 아닌 작품?
괜찮의 목록을 제공하는 경우에도 동일한 사실이 될 것이다 값
의 목록하기 전에 "초기화"키워드를 추가하여이 문제를 해결할 수 있습니다 감사. 그러나, 왜'model.W = RangeSet (0,1) model.I = RangeSet (0,4)'가 작동합니까? 나는 이들을 위해 "initialize"키워드가 필요 없으며, 그것들은 컴포넌트 생성자이다. – Candic3
RangeSet은 일련의 숫자를 생성하는 특정 경우에만 사용할 수있는 매우 특수화 된 구성 요소입니다. 키워드 인수를 허용하지 않으며 세 가지 방법으로 만 생성 할 수 있습니다. 'model.W = RangeSet (stop) # [1, 2, ..., stop] 세트를 반환합니다. model.W = RangeSet (시작, (start, stop, step) #은 [start, start + step, ... end]를 반환합니다. + i * 단계와 끝 <= 정지 ' –
좋습니다, 감사합니다. 이것은 흥미로운 또 다른 관련 질문입니다. http://stackoverflow.com/questions/39908555/how-to-define-an-integral-as-an-objective-function-in-pyomo/39908672#39908672 – Candic3