1단계 — 점수 산정
도시의 모든 후보 장소에 점수가 매겨집니다. 중요도가 먼저: 위키백과 사이트링크, 페이지뷰 수, 문화재 지정 여부를 수집 시점에 한 번 계산하며 요청 시점이 아닙니다. 그런 다음 사용자의 관심사가 면(面)별로 해당 점수에 가중치를 주므로, 박물관을 선택하면 박물관이 올라가지만 나머지가 모두 삭제되지는 않습니다.
필터링이 아닌 가중치를 주는 것은 의도적인 것입니다. 이스탄불에서 역사만 필터링하면 보스포루스 페리가 빠지고, 정직한 3일 플랜에 페리를 빼는 일은 없습니다.
2단계 — 군집화
점수가 매겨진 풀은 일정을 짜기 전에 지리적으로 그룹화됩니다. 이동 시간이 진짜 제약 조건이기 때문입니다. 강 걸편에 있는 두 정류장 사이는 한 시간이 걸릴 수 있지만, 파티히에 있는 두 정류장은 8분입니다. 먼저 군집화하는 것이 하루가 도시를 지그재그로 가로지르는 것을 막습니다.
군집 질량은 순위에 따라 감소하므로, 뛰어난 한 곳을 중심으로 짜인 하루가 주변에 있는 보통 장소 6곳을 끌어들이지는 않습니다.
- 여행 일수가 반경을 제한합니다: 1일은 15km 이내, 3일은 25km, 1주일은 45km입니다.
- 단일 정류장이 시간 창의 60% 이상을 차지하고 반경 가장자리에 있으면 하루 전체를 차지할 수 있습니다.
- 연속된 날짜는 지리적으로 멀리 떨어뜨려 같은 다리를 두 번 건 너지 않도록 합니다.
3단계 — 순서 배정
각 군집은 주입된 거리 행렬을 기반으로 도보 순서로 배엶됩니다. 이동 시간은 직선 거리 추정이 아닌 실제 경로 결과이며, 행렬은 대칭이라고 가정하지 않습니다. 베이오을루에서 오륵길과 내리막길은 다릅니다.
4단계 — 일정 배정
이제야 비로소 시계가 등장합니다. 순서는 각 장소의 기록된 영업 시간과 사용자의 하루 시간 창을 기준으로 예약되며, 템포와 그룹 유형으로 조정됩니다. 식사 휴식은 자체 경유지로 그 시간대 안에 배치되는데, 실제 시간을 소비하기 때문입니다.
- 템포
- 방문 시간에 곱하는 계수: 여유로움 ×1.67, 표준 ×1.00, 집중 ×0.67. 경유지 수에는 상한이 없습니다.
- 그룹 유형
- 하루 시간 창에 적용되는 계수: 혼자 ×1.1, 커플 ×0.9, 친구 ×1.0, 가족 ×0.75.
- 하루 시간 창
- 사용자가 설정한 시작 및 종료 시간을 그룹 계수로 조정한 값.
- 경유지 수
- 출력 결과입니다. 하루의 시간 예산이 소진될 때까지 채워지고, 그러면 멈춥니다.
두 가지 불변 조건은 전용 테스트를 거쳐 예외 없이 유지됩니다: 장소가 문을 닫은 동안에는 어떤 경유지도 예약되지 않으며, 하루의 계획된 총 시간 — 방문 시간 × 템포, 이동 시간, 휴식 시간을 더한 값 —은 해당 날의 시간 창을 결코 초과하지 않습니다.
데이터가 부족할 때
영업 시간이 기록되지 않은 장소는 하루 중간에 보수적으로 예약되고 미확인으로 표시됩니다. 장소 자체가 아닌 카테고리 기본값에서 나온 소요 시간은 근사 기호와 함께 표시됩니다. 그리고 도시에 사용자의 일정 일수만큼 갈 만한 장소가 적으면, 짧은 일정과 안내 메시지가 제공됩니다 — 채우기용 콘텐츠는 없습니다.