분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
선물 배송 경로 최적화 경진대회: 산타와 루돌프의 워라벨 사수작전
정답을 찾기 위한 Hint!
수상권 팀들이 모두 정답을 찾았고, 대회 기간이 절반정도 지나서 제가 사용했던 방법을 간단하게 공유해보려 합니다.
(몇 함수는 code7monkey님이 공유하신 코드에서 찾을 수 있습니다.)
1 데이터 읽기
2 Helper 함수 구축
3 유전 알고리즘 functions 구축
4 유전 알고리즘 loop
(1) 현재 population 중 가장 좋은 해를 다음 세대로 그대로 넘깁니다.
(2) 토너먼트 선택 → 교차 → 돌연변이 과정을 통해 자손을 생성한 후, Local Search를 적용해 자손의 품질을 개선합니다.
(3) demand 용량(25)을 초과하지 않는 자손들만 새 generation에 포함합니다.
(4) 새 세대가 완성되면 각 자손의 거리를 계산하고, 가장 적합한 해(best population)와 최소 거리(best Euclidean Distance)를 갱신합니다.
(5) (1) ~ (4)를 반복합니다.
이렇게 구성하여 최적 경로를 탐색했습니다.
많은 참가자 분들에게 도움이 되었으면 합니다.
감사합니다.
외부 라이브러리는 사용하지 않았고, 리스트와 random 라이브러리만을 사용하여 구현하였습니다.
유전 알고리즘 학습할 때, 한 interation 내에서 joblib를 활용하여 병렬 연산을 사용하였고,
AMD Ryzen Threadripper PRO 7995WX 2개 (총 384 thread)를 사용하여 학습하였습니다.
전체 시간은 총 10분 정도 걸린 것 같네요.
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
직업정보제공사업 신고번호: J1204020250004
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io |
전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved
공유 감사드립니다.
혹시 계산 시간은 얼마나 걸렸을까요?
코드 공유에 올리신 것과 같이 외부 라이브러리를 사용하여 빠르게 계산하셨나요?