2011-05-08 7 views
3

여러 레스토랑 (예 : 20)의 음식 배달을 가정 해 봅시다. 사용할 수있는 드라이버는 10 개입니다. 또한이 레스토랑에서 집으로 음식을 배달하기 위해 4 시간 동안 100 번 주문을한다고 가정 해 봅니다.픽업 및 배달 문제 알고리즘 도움말

운전자는 한 장소에서 식품을 집으로 가져와 집에서 고객에게 배달해야합니다.

기본 목표는 배달까지의 시간, 즉 집에서의 주문과 도착 사이의 시간을 최소화하는 것입니다. 보조 목표는 운전자 역량 (즉, 모든 주문을 전달하는 데 소요되는 시간)을 최대화하는 것입니다.

주문한 시간이 4 시간 이상이므로 균등하게 말하십시오. 즉 3 분이 1입니다. 또한 주문이 20 개의 레스토랑에 무작위로 있다고 가정 해 보겠습니다.

어떤 위치에서 목적지까지 이동하는 시간을 계산할 수 있다고 가정합니다.

나는 모든 드라이버의 위치를 ​​실시간으로 알고 있습니다. 나는 또한 그들의 상태를 알고 있습니다. 즉, 현재 그들이 (알려진 목적지까지 데려가는) 주문을 받고, 이미 주문을 받고 이미 알고있는 목적지로 경로를 옮기고 있습니까?

제약 조건은 다음과 같습니다 1) 지정된 시간 이후에 주문을 선택해야합니다 레스토랑 (즉, 식사 준비 시간) 2) (45 분 아래에 던져 그렇지 않으면 경고 순서를 제공해야합니다)와 3)에서 꼭 패드 시간 " x "분만 수거 순서에 저장하는 데 걸리는 시간을 수용 할 수 있습니다. 4) 고객에게 주문을 배달하고 지불금을 수령하는 데 소요 된 시간을 수용하기 위해"y "분으로 시간을 채워야합니다. 5) 드라이버에는 지정된 결제 수단 (예 : 현금, Visa, Amex, MasterCard) 만 있습니다. 고객 요청 (현금, 비자 등)과 운전자의 능력 (현금, 비자, amex 등)을 일치시켜야합니다.

예를 들어 목적지가 가깝고 픽업 위치가 가까운 두 개의 주문이있는 경우 다른 "무료"드라이버 (아무 것도하지 않음)가 있어도 동일한 드라이버를 사용하여보다 효율적으로 픽업 할 수 있습니다 두 명령 모두를 전달하고 두 명령 모두를 전달합니다.

각 레스토랑마다 배달 지역이 적용된다고 가정 할 수 있습니다. 즉, 대부분의 레스토랑에서 주문하는 사람들이 거의 비슷할 것입니다. 따라서이 알고리즘은 운전자를 도시 구역으로 자동 구분하고 이미 구역 내의 운전자를 선호해야합니다.

답변

1

차량 경로 문제와 같은 온라인 버전처럼 들립니다. 나는 당신에게 구글을 제안하고 그 논문을 읽는다.

0

알고리즘 자체에 대한 개발 시간 (GUI, 경고 및 모든 것을 포함하지 않음)에 따라 다릅니다. 다음 반복적으로 다음 주문을 받아와 사용할 수있는 첫 번째 드라이버에 할당하는 FIFO 스택에 주문을 넣어 : 당신은 약 1 또는 이일 이야기하는 경우

  • 는 결정 론적 알고리즘이 에 대한 이동합니다. 이것은 인간이하는 일과 거의 같습니다. 또한 실제로는 효율적이지 않습니다 (특히 3 개 이상의 레스토랑이있는 경우).
  • 큰 회사의 경우이 문제를 말하고 있기 때문에 시간이 더 있으면 즐거움이 시작됩니다. 메타 - 휴리스틱 (금식 검색, 유전자 알고리즘, 시뮬레이트 된 어닐링)을보십시오. 기존 라이브러리를 살펴보고 많은 작업을 수행하십시오. 예를 들어 Java로 작업하는 경우 Drools Planner을 살펴보십시오.

동의어 : 무차별 대입을 고려하고 계시다면. 귀찮게하지 마라. 그것은 비례하지 않을 것이다.

+0

감사합니다. 당신은 짐승이 작은 사건, 예를 들어 5 명의 운전자를 위해 강제로 일할 것이라고 생각합니까? 나는 파이썬에 좋은 것을 찾고 있었다. 나는 오메가를 발견했다. 파이썬에 대한 다른 제안이 있습니까? – pmah