-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpseudo.txt
More file actions
117 lines (94 loc) · 4.38 KB
/
pseudo.txt
File metadata and controls
117 lines (94 loc) · 4.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<배차 알고리즘>
--------------------공통과정--------------------
1. 예약 정보 가져오기
2. 서비스 유형 판단 후 추가시간 X 판단
// 3. 이용 가능한 차량 목록 L1 가져오기
4. 유형별로 조건 확인하면서 배차
-----------------------------------------------
case1. 편도(자택 -> 병원)
a1 = 자택 -> 병원 예상 소요시간 //20분
= tmap(자택 -> 병원) + 20 + X
tmap(pickup주소, hos주소, 출발시간 구해야함(departure), 도착하고싶은 시간(hos_arr_time보다 20분 일찍)) + X
-> GetEstimatedTime
b1 = 픽업 장소에 도착해야 되는 시간(must) //08:00:00
= 희망 병원 도착 시간 - 예상 소요 시간
-> GetPickupTime
차량 목록 L1을 가져와(L1 == (여유시작시간 < b1 && 여유시간 > a1))
L1 중에서 c1 계산
c1 = 차가 이전 예약을 마친 장소에서 픽업 장소까지의 예상 도착 시간 //08:00:00
= tmap(이전예약->현재 예약 픽업 장소)
-> GetPrevArrivalTime
b1과 c1(array) 비교 -> if(b1>c1) {L2에 삽입}
d1 = 다음 예약으로 출발해야 하는 시간 //08:00:00
= tmap(현재 예약 드롭 장소 -> 다음 예약 픽업 장소)
-> GetDispatchAvailableCar
if(희망병원도착시간<d1)
배차 가능 -> 차량 목록 L2에 삽입
else
배차 불가
차량 목록 L2 중, 자택과 가장 가까운 곳에 있는 최적 차량 선택
-> 이때 거리는 새로 구하지 않고 c1을 구할 때 계산
case2. 편도(병원 -> 자택)
a2 = 병원 -> 자택 예상 소요시간 //적어도 병원 출발 희망시간 + a => 고정된 서비스시간
= tmap(현재 예약자의 병원 -> 자택) + 20 + X
b2 = 병원에 도착해야 되는 시간(must)
= 희망 병원 출발 시간
c2 = 차가 이전 예약을 마친 장소에서 병원까지의 예상 도착 시간
= tmap(이전예약 -> 현재 예약 병원) + 20
d2 = 다음 예약으로 출발해야 하는 시간
= tmap(현재 예약 드롭 장소 -> 다음 예약 픽업 장소)
//if(b2>c2 && c2<d2)
if(b2>c2 && 병원출발희망시간+a < d1)
배차 가능 -> 차량 목록 L2에 삽입
else
배차 불가
차량 목록 L2 중, 병원과 가장 가까운 곳에 있는 최적 차량 선택
case3. 왕복 1시간 이하
a3 = 자택 -> 병원 예상 소요시간
= tmap(자택->병원) + 20 + X
b3 = 픽업 장소에 도착해야 되는 시간(must)
= 희망 병원 도착 시간 - 예상 소요 시간
c3 = 차가 이전 예약을 마친 장소에서 픽업 장소까지의 예상 도착 시간
= tmap(이전예약->현재 예약 픽업 장소) + 20
if(b3>c3)
배차 가능 -> 차량 목록 L2에 삽입
d3 = 병원 -> 자택 예상 소요시간
= tmap(현재 예약자의 병원 -> 자택) + 20 + X
////////// e3 = 병원에 도착해야 되는 시간(must)
////////// = 희망 병원 출발 시간
f3 = 다음 예약으로 출발해야 하는 시간
= tmap(현재 예약 드롭 장소 -> 다음 예약 픽업 장소)
if(병원희망출발시간+d <f3)
배차 가능 -> 차량 목록 L3에 삽입
else
배차 불가
차량 목록 L2 중, 자택과 가장 가까운 곳에 있는 최적 차량 선택
case4. 왕복 + 동행 2시간 이상
a4 = 자택 -> 병원 예상 소요시간
= tmap(자택 -> 병원) + 20 + X
b4 = 픽업 장소에 도착해야 되는 시간(must)
= 희망 병원 도착 시간 - 예상 소요 시간
c4 = 차가 이전 예약을 마친 장소에서 픽업 장소까지의 예상 도착 시간
= tmap(이전예약->현재 예약 픽업 장소) + 20
d4 = 다음 예약으로 출발해야 하는 시간
if(b4>c4 && c4<d4)
차량 목록 L2에 삽입
else
배차 불가
e4 = 병원 -> 자택 예상 소요시간
= tmap(현재 예약자의 병원 -> 자택) + 20 + X
f4 = 병원에 도착해야 되는 시간(must)
= 희망 병원 출발 시간
g4 = 차가 이전 예약을 마친 장소에서 병원까지의 예상 도착 시간
= tmap(이전예약 -> 현재 예약 병원) + 20
h4 = 다음 예약으로 출발해야 하는 시간
if(f4>g4 && g4<h4)
차량 목록 L3에 삽입
else
배차 불가
if(L2 && L3)
배차 가능
else
배차 불가
차량 목록 L2 중, 자택과 가장 가까운 곳에 있는 최적 차량 선택
차량 목록 L3 중, 병원과 가장 가까운 곳에 있는 최적 차량 선택