0

나는 PuLP와 CBC로 MILP 문제를 풀려고한다.COIN-OR : CBC가 해결 한 최적화 과정에서 양의 정수 변수에 어떤 값이 걸리나요?

나머지 문제를 제외하고 저는 양의 정수 변수 집합에 문제가 있습니다. 나는 이완 (relaxation)과 관련된 제약 조건을 가지고 있는데, 이는 양의 정수 변수의 일부 변수가 제약 조건으로 인해 특정 값으로 고정되지 않는다는 것을 의미합니다.

양의 정수 contraint 집합에서 구두점을 수정하면 일부는 구속으로 인해 값을 얻지 만이 같은 제약 조건을 완화하면 (큰 M 완화) 나머지 변수는 특정 값을 가져올 필요가 없습니다 값.

값을 제공하는 것은 CBC의 책임입니다. 그들 중 대부분은 0으로 가고 일부는 1440 인 변수의 상한값을 얻습니다. 왜 그럴까요? CBC는 이러한 변수에 이러한 가치를 줄 수 있습니까? sovler가 따르는 규칙이 있습니까?

정보를 추가하거나 바꾸어 쓸 수있는 내용을 모르는 내용이 있으면 언제든지 알려주세요. 고맙습니다.

답변

1

CBC 솔버는 보통 '표준'B & B 검색을 수행하여 트리를 검색 할 때 LP 릴레이션의 시퀀스를 해결한다고 생각합니다. 단순 분석법 중 하나를 사용하여 LP를 분석하는 경우 일반적으로 해당 LP의 검색 프로세스가 가능한 공간 표면을 따라 걷고 있으므로 다른 제약 조건이 낮은 변수의 경우 상한값 또는 하한값을 취하는 것이 일반적입니다 .

+0

답변 해 주셔서 감사합니다. 변수를 특정 값 (예 : 0)으로 고정하는 것이 좋은 방법이라고 생각하십니까? 아무 것도없는 컴퓨팅 파워를 낭비하고 있습니까? 아니면 출력 프로그램에서 값이 두 경계 중 하나 인 경우 무시해야한다는 것을 알 수 있습니까? – dimrizo

+1

일반적으로 예상하거나 찾고있는 솔루션에 대해 솔버에게 줄 수있는 모든 정보가 도움이 될 것입니다. 변수를 알려진 값으로 자주 설정했습니다. 이는 알려진 솔루션으로 모델을 디버깅하는 데 특히 유용합니다. – TimChippingtonDerrick