나는 초기 해결책부터 시작할 수 있다는 것을 알고있다. 즉, 모델 m에 대한부분 솔루션에서 시작할 때 gurobi가 최소한의 변화 (최소 섭동)를합니까?
m.optimize()
를 사용하여 LP를 해결 한 후, 나는 몇 가지 제약 조건을 변경할 수 있습니다 및 중 하나를 처음부터 LP에 대한 새로운 해결책을 찾을하거나 전화
m.reset()
m.optimize()
를 사용
m.optimize()
을 사용하여 초기 솔루션에서 새로운 솔루션을 찾습니다.
제 질문은 초기 솔루션에서 시작했을 때 새로운 솔루션을 얻는 데 필요한 최소한의 변경이 있습니까?
나는 이것이 최소한의 교란 문제라고 생각합니다. 만약 gurobi가 기본적으로 이것을하지 않는다면, 최소한의 변화를하기 위해 gurobi에 알려줄 방법이 있습니까?
후속 코멘트 : 나는 웜 스타트가 빠를 수 있지만 변수의 변화는 미미하다는 것을 알고 있습니다. 예를 들어, 목적 함수
maximize(i1+i2+i3+i4)
이고 제한의 초기 집합은
i1,i2 can be set as 1 and i3,i4 as 0.
이제 제한 변경되도록하고 새로운 용액 (여전히 2 변수가 1로 설정 가능) 어느 쪽이든 일 수도있다
i1, i3 as 1 (or) i3, i4 as 1.
gurobi optimizer는 결국 최소한의 변화 i1, i3을 1로하여 솔루션을 선택하게 될까?
다른 해결책이었다 또한 경우
i1,i2 as 1
선택 gurobi 것이다 솔루션은 기존과 완전히 동일하다?
감사합니다. 나는 따뜻한 시작이 더 빠를 수 있지만 변수의 변화가 미미하다는 것을 이해합니다. 예를 들어, 목적 함수는'maximize (i1 + i2 + i3 + i4)'이며 초기 제약 조건 집합은'i1, i2' 만 1로 설정하고'i3, i4'는 0으로 설정할 수 있습니다. 이제 제약 조건이 변경되고 새로운 솔루션 (여전히 2 개의 변수 만 1로 설정할 수 있음)은 1로 i3, i4가 될 수 있습니다. gurobi optimizer는 최소한의 변경으로 솔루션을 선택하게 만듭니다. i1, i3'을 1로 설정한다. 또한 다른 솔루션이'i1, i2'를 1로하면 그 솔루션은 기존의 솔루션과 정확히 같을 것입니다. – brokendreams
이것은 모델 작성 방법에 따라 다릅니다.행렬의 계수를 단순히 변경하는 경우 자동으로 웜 스타트를 얻습니다. 새 제한 조건을 추가하는 경우 웜 시작을 얻거나 얻지 못할 수도 있습니다. 그렇지 않으면 변수에 항상 'Start' 속성을 명시 적으로 설정할 수 있습니다. –
하지만 따뜻하게 시작하면 섭동이 최소화됩니까? 따뜻한 시작이 확실하게 일어나고 있다고 가정하더라도 해결 방법을 가능한 한 초기 솔루션에 가깝게하고 싶다는 솔버에게 알리는 방법이 있습니까? 아니면 일반적으로 따뜻한 시작은 가능한 한 기존 솔루션에 가깝게 새로운 솔루션을 생산합니까? – brokendreams