0

내 질문에 매우 간단합니다. 이미 생성 한 변수를 삭제할 수 있습니까?PuLP-OR : 이미 생성 된 변수를 삭제할 수 있습니까?

아니면 내 유일한 희망은 변수를 만들지 않는 것입니다.

del prob.variable 

를 삭제합니다 : 사용 후 변수를 인쇄 할 수있는 경우

는 것 같아요. 하지만 정확하게 찾을 수는 없습니다. 파이썬은 다음과 같이 말합니다 :

prob.variables 

은 subscriptable가 아닙니다. 펄프 LP 문제 prob과 관련된

+0

문서에서 아무 것도 보지 못했지만 전문적 지식이 없습니다. 어떤 상황에서이 기능이 필요합니까? 그것을 사용하는 제약이없는 경우; 잘 그것은 중요하지 않습니다 (단지 그들을 지키십시오). 그럴 경우 제약 조건을 제거하는 것이 더 쉬울 수도 있습니다. – sascha

+0

문제는 실제로 유용하지 않은 변수를 모두 포함하는 제약 조건이 있다는 것입니다. 그것은 합계 제약이다. 나는이 매우 중요한 제약 조건 바로 전에 삭제하기를 원했다. – drizo

+0

그래서이 제약은 타당성/목적을 변경하지 않습니까? 솔버는 그다지 신경 쓰지 않을 것입니다. 그리고 왜 이러한 vars 또는이 제약 조건을 추가하기 전에 도움이되지 않는 * 이것을 추론 할 수 없습니까? – sascha

답변

0

변수가리스트 인 prob._variables에서 찾을 수 있습니다, 그래서 당신은 당신이 그러나

prob._variables.remove(var) 
사용하여 변수 var을 삭제할 수 있다고 생각 것, 이것은 단순히 첫째 삭제 어떤 이유로 변수가 ==의 수준에서 구분되지 않기 때문에 prob._variables 변수. 이것에 의하여 나는 var1var2prob에 관련된 두 개의 변수,

if var1 == var2: 
    print('Equal') 

인 경우 항상 '평등'을 반환하는 것을 의미한다. (시도하지 마십시오 var1 == var2, 이것은 방정식으로 해석됩니다) . 이것은 당신이하려고하면 출력이 항상 0

여기에 내가, happpening 무슨 설명해야합니다 않습니다보다 더 파이썬을 이해하지만, 누군가가 작업 주위의 것

prob._variables.index(var) 

사용 var의 인덱스를 찾을 수 있다는 것을 의미 :

for i, v in enumerate(prob._variables): 
    if v is var: 
     del prob._variables[i] 

이 그것을 관련된 모든 제약 조건에서 변수를 삭제하지 않으며, 변수가 여전히 것처럼 펄프는 LP 문제를 해결할 것처럼 보인다. 그래서 나는이 모든 것이 속성 prob._variables을 변경한다고 생각합니다. 나는 이것이 당신의 상황에서 도움이되지 않는다고 생각하지만, 변수를 지우고 오래된 변수와 같은 이름의 새로운 변수를 추가하고자 할 때 필요하다.