2

Microsoft Solver Foundation에서는 결정 값에 따라 값이 달라지는 매개 변수를 추가 할 수 있는지 알고 싶습니다.MSF의 의사 결정에 따라 달라지는 매개 변수

e.e. 나는 TSP 모델에 뭔가를 원하지만, 한 지점에서 다른 지점으로 트래픽을 고려해야한다. 참고 : 교통은 영업 사원이 해당 경로를 여행하는 시간에 따라 다릅니다. 나는 도시 사이의 모든 가능한 조합의 행렬이

: 여기

모델이다.

의사 결정 변수는 판매원 경로의 Order입니다. 0은 첫 번째, 1 초, ...

나는 Order 값에서 경로가 발생할 시간을 계산하는 속성에 바인딩 된 속성 인 timeToTravel을 가지고 있으며 해당 트래픽을 포함하는 이동 시간을 반환합니다. 시간.

Solve 함수를 호출 할 때 매개 변수 값이 한 번 읽혀 캐시 된 것 같습니다. 맞습니까? 그렇다면이 문제를 해결하기위한 권장 사항이 있습니까?

원래이 질문을했습니다. on the MSF forum하지만 스택 오버플로에 더 많은 관심을 가질 것이라고 생각했습니다. 또한 MSF 이외의 다른 솔버에게 공개되어 있지만 .NET 환경에 머물고 싶습니다.

+0

이 특정 TSP 문제에 대한 이론이 수립 되었습니까? –

답변

1

해 찾기 재단 here을 사용하여 "정적"여행 판매원 문제를 해결하는 방법에 대한 좋은 기사가 있습니다. 자신 만의 구현을 아직 가지고 있지 않다면, 그 코드를 기반으로 솔루션을 구축 할 수 있습니다.

// Goal: minimize the length of the tour. 
Goal goal = model.AddGoal("TourLength", GoalKind.Minimize, 
    Model.Sum(Model.ForEach(city, i => 
     Model.ForEachWhere(city, 
      j => dist[i, j] * assign[i, j], j => i != j)))); 

만약 내가 제대로 이해하고, 문제 두 도시 사이를 여행하는 시간의 시간 - 중 - 일에 따라 달라집니다 :

이 언급 된 기사 목표 수립은?

최적화 과정에서 dist[,]double 어레이를 동적으로 업데이트 할 수 있다고 생각하지 않습니다. 그러나 Model 클래스의 빌딩 블록을 사용하면 dist[,] 배열을 이미 이동 한 총 거리/시간에 따라 달라지는 함수 세트로 다시 구성 할 수 있어야합니다.

완전성을 위해, here은 OML을 사용하는 TSP 공식에 관한 또 다른 흥미로운 기사입니다.

관련 문제