7. 02 문제점 및 해결방안
기존 문제 및 목적
황색 봉투란?
• 황색봉투는 고무, 가죽, 이불, 인형, 신발, 가방 등 가연성 폐기물을 봉투에 담아서 버릴 때 사용하는 봉투
• 각 지역별로 버리는 날짜가 정해져 있다.
• 쓰레기 봉투를 버릴 때 동사무소나 회사(동아 ent)에 전화를 하여 신고 해야 한다.
8. 02 문제점 및 해결방안
기존 문제 및 목적
데이터 형태
데이터를
요일별로 분리
차량 지정
구역별 분리
지도에 위치
표시 후 수거
1호차에 리스트 전달
2호차에 리스트 전달
3호차에 리스트 전달
현재 회사에서 이루어지는 작업
황색봉투 발생지 엑셀에 날짜별 정리
다음날 수거 해야 할 리스트 정리
차량마다 정해진 구역별로 리스트 분리
차량운전자는 받은 리스트를 지도에
표시 후 작업 실시
엑셀을 정리하는 과정, 차량 운전사가 지도에 표시하는 작업, 감으로 수거 순서를 정해 수거하는 과정은
많은 시간을 소모한다. 그래서 우리는 알고리즘을 통해 작업과정 시간을 줄이고 경로 최적화로 수거 시간을
줄이는데 목적이 있다.
모든 과정은 직원이 진행
9. 해결 방안
데이터 형태
데이터를
요일별로 분리
차량 지정
구역별 분리
지도에 위치
표시 후 수거
파이썬을 통해 직업과정 단축
파이썬을 통한 과정
요일별 데이터 분리
API를 통해 경도 위도 탐색
API를 통해 각 노드당 거리, 시간 탐색
CVRP 알고리즘을 통해 최적경로 탐색
차량별로 수거 순서를 제공
현재 구현된 과정
요일별 데이터 분리
국토교통부 API를 통해 경도 위도 탐색
Bing Map API를 통해 각 노드당 거리, 시간 탐색
CVRP CPLEX ver(in python), Excel ver 통해 최적경로 탐색
T Map API를 통해 차량별로 수거 순서를 지도 표시 후 제공
파이썬
파이썬
excel
파이썬
JAVA
excel
통일 되지 못한 과정으로 약간의 노동이 필요
탐색 과정 전 작업은 매우 빠르나 최적경로 탐색 과정은 2시간 소요.
02 문제점 및 해결방안
11. VRP란?
차량경로문제(Vehicle Routing Problem ;VRP)는 거점(depot)에서 출발한 차량이 배달
(delivery)이나 수집(pick-up) 등의 서비스를 요구하는 고객(customer)을 특정한 순서대로
방문하고 다시 거점으로 돌아오는 최소 비용의 경로를 결정하는 문제이다.
CVRP (Capacitated Vehicle Routing Problem)
:기존 VRP에서 차량별 용량의 제약식을 포함하는 문제로서 각 차량별로 용량이 있고 이
용량을 초과해서는 안됨.
CVRP를 사용하는 이유
: 각 차량별로 용량의 한계가 있고 용량이 중요한 제약사항 중 하나이기 때문에 CVRP를
쓰기에 적합함.
03 과정
12. 데이터
03 과정
1 2 3 4 5 6 7
접수 날짜1
2
3
4
5
6
7
접수장소 (빈칸이면 회사)
도로명 주소
동
번지
전화번호
기타 (상세 위치, 수거용량)
• 동마다 황색봉투 수거 요일이 정해져 있고 일주일에 2번 로테이션이 됩니다. Ex) 월, 목
• 고객이 버리는 날이 랜덤이기 때문에 수거하는 날 수거하러갈 장소를 정리할 필요가 있습니다.
Ex) 4월 4일 수거리스트를 뽑기위해 4월 1일~3일 접수 리스트에서 4월4일에 해당하는 수거 동을 추출합니다.
• 번지가 잘못 입력되어있거나 도로명 주소가 잘못 적혀있는 경우가 있기 때문에 경도 위도 찾을 때 두 주소를 반영합니다.
• 황색봉투 용량 신고가 필수가 아니기 아니기 때문에 회사에서 황색봉투 수거량 데이터를 받아 고객당 평균 황색봉투 용량을
계산했습니다.
13. 03 과정
요일별 데이터 분리
접수된 날짜로 구성된 종합 데이터 Ex) 4월 16일 처리해야할 수거 리스트 (13,14,15일 반영)
Ex) 4월 17일 처리해야할 수거 리스트 (14,15,16일 반영)
파이썬으로 한번에 처리
월, 목 용현2동, 용현3동, 용현1.4동, 주안1동, 주안2동, 주안4동
화, 금 주안3동, 주안6동, 주안7동, 주안8동, 도화2.3동, 문학동
수, 토 숭의1.3동, 숭의2동, 숭의4동, 주안5동, 도화1동, 학익1동, 학익2동, 관교동
3일마다 로테이션
14. 03 과정
경도, 위도 탐색
국토교통부 무료 API를 이용
아래 사진과같이 결측치 탐색하여 주소를 잘못 입력한 결측치는 삭제
실제 상황에서는 연락처에 연락하여 주소 수정이 필요!
번지 or 도로명 주소를 이용하여 검색하였다.(둘 중 하나가 잘못 입력되었거나 없는 상황 반영)
경도 위도 추가
15. 03 과정
각노드 사이 거리시간 탐색
Bing Map 무료 API를 이용
i j
Distance
Duration
i: 0~n
j : 0~n
0 = 회사
N = 고객 수
Excel을 통해 구함. Python에서 이용하기 위해 거리, 시간 저장
16. 03 과정
CVRP 알고리즘을 통해 최적경로 탐색
Excel Solver 이용
최적 경로 총 이동거리 총 이동시간 용량
17. 03 과정
Excel Solver Formulation
정점 세트
회사(depot)
고객
방문해야 하는 고객
차량 k의 경로 (i, j)
누적 소비자 요구량
이동거리
백홀 제약의 유무
차량 k의 경로 i
차량 용량
소비자 요구량
Minimize
차량의 고객에 대한 방문 규칙을 설정하는 제약 조건
제약 조건 (2)는 모든 고객을 최대 한 번 방문하도록 한다.
제약 조건 (3)은 반드시 방문해야 하는 고객을 방문한다.
제한 조건 (4)는 차량 k의 출발지와 이 차량이 방문한 고객
사이의 연결성을 제공한다.
목적 함수 (1)은 총 이동거리 합의 최소이다.
고객 요구 사항을 설정하는 제약 조건
제약 조건 (5)와 (6)은 픽업 상품에 대한 제약조건.
차량과 관련된 제한 사항
제약 조건 (7)은 차량 용량 위반을 금지한다.
제약조건 (8)은 depot에서 고객 j로 가는 경로는 1개다
제약조건 (9)은 모든 고객을 한번만 방문한다.
19. 03 과정
CPLEX Formulation
추가 제약식 : i에서 h로, h에서 j로 가는 것은 한 경로에 있
다.
=> 이 제약식을 추가한 것과 추가 안 한 것을 각각 돌려 무
엇이 더 나은 결과값이 나오는지 비교함.
기존 목적식은 이동거리 합 최소로 엑셀 솔버와 같다.
변경 가능한 목적식 → (1) 시간의 합 최소,
→ (2) 거리와 시간의 합 최소
(1)
(2)
n : 고객의 수
N : 고객의 집합
V : 노드의 집합
A : i와 j 경로의 집합
Q : 차량 용량
𝑞𝑖 : i의 소비자 요구량
𝑢𝑖 : i까지 누적된 소비자 요구량
𝑥𝑖𝑗 : N에 속해 있으면 1, 아니면 0
𝑐𝑖𝑗 : i와 j 경로의 이동거리
𝑡𝑖𝑗 : i와 j 경로의 이동시간
20. 03 과정
차량별로 수거 순서를 제공
T Map API 이용
차량별로 수거 순서를 지도에 표시
실시간 교통을 지속적으로 반영해줌
실제 자동차가 다니는 최적화 경로를 지도에 표시
했다는 점에서 의의가 있음
어플과 연동시 네비게이션 안내가 가능
22. 04 결과
CPLEX 결과
목적식 16일 결과값
추가제약식x 추가제약식o
거리최소 거리 104.5 104.468
시간 0.1896 0.184
시간 최소 거리 116.868 127.933
시간 0.1785 0.2076
거리시간
최소
거리 99.323 107.843
시간 0.1722 0.1896
목적식 17일 결과값
추가제약식x 추가제약식o
거리 최소 거리 64.057 69.443
시간 0.135416667 0.147916667
시간 최소 거리 73.083 74.104
시간 0.124305556 0.129861111
거리시간
최소
거리 65.094 67.824
시간 0.138194444 0.144444444
▲추가제약식 유무에 따라 세 가지 목적식을 각각 적용하여 실행한 결과값
목적식이 거리와 시간 합의 최소일 때 가장 좋은 결과가 나옴
24. 04 결과
결과 비교
CPLEX
EXCEL
SOLVER
16일 거리 99.323 93.8
시간 0.1722 0.16736111
17일 거리 64.057 60.41
시간 0.13541667 0.11875
데이터의 양이 적을 때는 CPLEX의 결과값이 좋았지만
데이터의 양이 많을 때는 Excel Solver의 결과값이 좋게 나옴
프로그램 하나로 통일하기 위해서Cplex 개선의 필요가 있음
러닝타임2시간
25. 04 결과
최적화 값과 실제 가정경로 값과의 비교 - 16일
Ex)차량V5
차량 가정거리 실제거리 가정시간 실제시간
V1 27861 13189
약 25.7% 감소
5510 2793
약 19.5% 감소
V2 32747 10402 6041 2138
V3 22089 12076 3903 2461
V4 16291 14711 3097 2744
V5 12248 13101 2631 2684
V6 20223 23263 4047 5688
V7 14067 20714 2825 3577
합 145526 107456 28054 22085
최적경로 가정경로(현재진행중인수거방식)
26. 04 결과
최적화 값과 실제 가정경로 값과의 비교-17일
차량 가정거리 최적거리 가정시간 최적시간
V1 20603 10937
약 14.5%감소
4531 2197
약 15.3% 감소
V2 26430 20833 5747 4498
V3 27251 21947 5566 4413
V4 10874 19157 2286 4248
합 85158 72874 18130 15356
Ex)차량V3
최적경로 가정경로(현재진행중인수거방식)
28. 05 결론
과제 개발 성과
성과
• 회사에서 요청한대로 요일별로 데이터를 분리하는 작업을 파이썬 코딩으로 진행했다.
• 국토교통부 API를 이용하여 주소를 경도, 위도로 변경하여 받을 수 있었다.
• Bing Map API를 통해서 각 고객 사이의 거리, 시간 데이터를 받을 수 있었다.
• CPLEX를 통해 CVRP 제약식을 구성하고 최적의 경로(경로 순서와 개수)를 받을 수 있었다.
• T Map API를 통해 전 과정에서 얻은 최적의 경로를 실시간 교통을 반영하여 지도에 표시할 수 있었다.
기대효과
1. 개발한 알고리즘을 통해 직원의 노동 강도와 업무 시간을 줄일 수 있다.
2. 차량 경로 최적으로 황색봉투 수거시간 단축을 기대할 수 있다.
3. 다른 제한된 용량이 있는 최적 경로 문제에 활용할 수 있다.
29. 05 결론
보완해야할 점
보완해야할 점
- CPLEX의 경우 데이터 사이즈가 클 때 Excel Solver보다 결과값이 약간 좋지 못함
- T Map API를 이용하여 지점 간 연결을 직선으로 표현하는 것에 대해 문제를 보완했지만
무료버전에 경유지 횟수 제한이 있음
- 무료 API이용의 한계로 알고리즘을 하나에 통합하여 실행하지 못한 문제
보완 이후 얻을 수 있는 효과
- 알고리즘 통일과 한번 실행으로 결과까지 받을 수 있음
- 개발한 알고리즘 이용으로 업무의 간소화, 업무 정확성 증가, 비용 절약, 의사결정속도 향상
- 최적의 경로 문제를 해결해야 하는 분야(택배 배달, 기타 여러 장소를 하는 업체)에 응용, 확대 가능
- 알고리즘 이용 방법을 단순화하여 상품화하고 다중 경로 문제를 가지고 있는 분야에 이용 촉구