Tổ chức các tuyến đường cho đội ngũ sale thị trường với quãng đường di chuyển ít nhất bằng cách sử dụng mô hình tối ưu hóa tuyến đường giao thông
Mục lục nội dung:
I – Bối cảnh
Cuộc cách mạng công nghiệp 4.0 đã và đang dẫn tới xu thế chuyển đối số mạnh mẽ của các doanh nghiệp trên thế giới. Thậm chí chuyển đổi số còn được coi là vấn đề sống còn của các doanh nghiệp trước áp lực cạnh tranh ngày một tăng, không chỉ của riêng một lĩnh vực mà của mọi ngành nghề kinh doanh khác nhau, từ dịch vụ, vận tải, tài chính, bán lẻ… Vậy làm sao phát huy được lợi thế cạnh tranh của doanh nghiệp trong xu thế chuyển đổi số? Đối với các doanh nghiệp sản xuất phân phối áp dụng chuyển đổi số vào tối ưu các tuyến bán hàng như thế nào?
THỦ CÔNG? Trước đây, nhóm vận hành/quản lý phải sắp xếp thủ công các tuyến bán hàng cho nhân viên ngoài thị trường, thường là vào sáng hàng ngày/hoặc hàng tuần/hoặc hàng tháng, và đảm bảo đáp ứng mọi yêu cầu về thời gian viếng thăm của nhân viên tới các cửa hàng/khách hàng trong ngày đó. Có thể tưởng tượng, đó không phải là một nhiệm vụ đặc biệt thú vị hay dễ dàng. Một người mất khoảng 1 giờ để tạo ra một tuyến đường không tối ưu cho 100 điểm dừng. Đối với các yêu cầu lớn hơn thế, thời gian này tăng theo cấp số nhân, khi khối lượng đơn hàng của tăng lên, nhiệm vụ đó sẽ dần trở thành nhiệm vụ bất khả thi.
II – Giới thiệu
Tuyến bán hàng là gì ?
“Tuyến bán hàng” là danh sách các cửa hàng/khách hàng được phân bổ cho nhân viên bán hàng phụ trách. Xuyên suốt tuyến bán hàng, lực lượng kinh doanh sẽ phụ trách viếng thăm mỗi ngày hoặc một số ngày trong tuần để chăm sóc các điểm bán, ghi nhận đơn hàng mới, thu thập thông tin doanh số, độ phủ, tình hình trưng bày hàng hóa trên từng quầy kệ và phản hồi những biến động thị trường cho cấp quản lý
Vì vậy, tối ưu hóa tuyến bán hàng có ý nghĩa lớn trong việc phân bổ nguồn lực, giảm chi phí của doanh nghiệp, gia tăng cơ hội bán hàng. Tối ưu hóa tuyến bán hàng là quá trình lập kế hoạch hiệu quả các tuyến đường di chuyển chuyển để giảm chi phí và tối ưu hóa hoạt động bán hàng.
Tối ưu hóa tuyến bán hàng phân tích các thông số như vị trí kho/nhà phân phối, vị trí cửa hàng/khách hàng, loại phương tiện di chuyển và mạng lưới đường bộ để tính toán các tuyến đường hiệu quả nhất giúp giảm thiểu quãng đường di chuyển và mức sử dụng nhiên liệu trong khi vẫn đáp ứng nhu cầu viếng thăm của của nhân viên.
Một số điều quan trọng cần cân nhắc khi tối ưu hóa tuyến bán hàng bao gồm:
- Vị trí kho/nhà phân phối
- Số lượng và vị trí của tất cả các điểm dừng cần phải thực hiện – các vị trí khách hàng cần viếng thăm
- Khoảng cách di chuyển và thời gian giữa các điểm dừng (bao gồm vị trí xuất phát của nhân viên, vị trí kho hàng/nhà phân phối, vị trí khách hàng)
- Thông tin về thời gian viếng thăm khách hàng tối thiểu của nhân viên
- Giờ làm việc của nhân viên
- Mạng lưới và lưu lượng giao thông
Bằng cách tính đến tất cả các yếu tố này, các thuật toán tối ưu hóa tuyến đường có thể tạo ra chuỗi các điểm dừng và tuyến đường hiệu quả nhất giúp giảm tổng số quãng đường di chuyển hoặc giảm tổng thời gian di chuyển
Trong bài đăng này, chúng ta sẽ khám phá khả năng tối ưu hóa tuyến đường của Python – từ việc tận dụng các thuật toán như Bài toán người bán hàng du lịch đến tích hợp phân tích tối ưu hóa và lập bản đồ các tuyến đường trực quan – trang bị cho hoạt động đội ngũ sales ngoài hiện trường hiệu quả với chi phí tối ưu
III – Kịch bản Tối ưu Tuyến đường chăm sóc đại lý của Sales dựa trên Khoa học dữ liệu
1. Khảo sát dữ liệu
Dữ liệu đầu vào:
- Vị trí kho hoặc nhà phân phối
- Dữ liệu đơn hàng: Thông tin giao nhận hàng, thông tin sản phẩm, thông tin khách hàng, …
- Dữ liệu số lượng đội ngũ nhân viên sale
- Dữ liệu các vị trí/khách hàng
Có thể phân loại thành các dữ liệu sau:
- Kho hàng/nhà phân phối
- Khách hàng: Các vị trí khách hàng, kèm theo thời gian viếng thăm tối thiểu
- Nhân viên sale: Vị trí xuất phát của nhân viên sale, loại phương tiện di chuyển cho từng nhân viên
2. Chuẩn hóa dữ liệu
a. Kho hàng/nhà phân phối
Dữ liệu kho hàng/nhà phân phối bao gồm thông tin về tên và tọa độ của kho hàng/nhà phân phối, dữ liệu trông như thế này, giả sử có 1 kho hàng/nhà phân phối với thông tin sau:
b. Khách hàng – điểm dừng
Dữ liệu các điểm dừng bao gồm các thông tin về tên, vị trí và thời gian dừng tối thiểu tương ứng:
Trực quan dữ liệu trên bản đồ sử dụng folium và dịch vụ nền eKMap:
- 1 kho/nhà phân phối (màu đỏ)
- 10 vị trí khách hàng (màu xanh)
c. Mạng lưới giao thông
Sử dụng dữ liệu giao thông từ dữ liệu mở OpenStreatMap thông qua dịch vụ eKMap API:
3. Mục tiêu đặt ra
- Xác định ra tuyến đường viếng thăm khách hàng cho 3 nhân viên sales, đảm bảo viếng thăm toàn bộ khách hàng, mỗi nhân viên một tuyến với tiêu chí:
- Các nhân viên xuất phát từ kho/nhà phân phối và quay trở lại kho/nhà phân phối khi kết thúc
- Từng nhân viên có tuyến bán hàng tối ưu nhất: tổng thời gian đi ít nhất hoặc tổng quãng đường di chuyển ngắn nhất
4. Xây dựng mô hình
a. Ma trận khoảng cách
Để xây dựng mô hình, chúng ta cần xác định một ma trận khoảng cách M làm đầu vào được xác định bởi
- M(i, j) với i, j từ [0, tổng số lượng khách hàng]
- M(i, j) = khoảng cách giữa D i và D j
- i,j=0 – kho/nhà phân phối
Ma trận khoảng cách này được tính toán dựa trên quãng đường di chuyển theo từng loại phương tiện của mỗi cặp điểm dựa trên thông tin giữa loại phương tiện di chuyển của đội ngũ sale. Việc tính khoảng cách này chúng tôi sử dụng dịch vụ định tuyến của eKMap API, dữ liệu mạng lưới giao thông của eKMap được dựa trên dữ liệu mở OpenStreatMap
Do yêu cầu đầu vào của thư viện sử dụng OR-Tools là khoảng cách giá trị nguyên (đơn vị tính bằng mét), do đó chúng tôi đã làm tròn nó, kết quả được như sau:
Ma trận khoảng cách giữa nhà phân phối và các vị trí khách hàng
b. Phương pháp thực hiện
Python là ngôn ngữ lập trình phổ biến được sử dụng để phát triển các thuật toán tối ưu hóa tuyến đường. Nó cung cấp khả năng truy cập dễ dàng vào dữ liệu lập bản đồ và hậu cần thông qua nhiều thư viện và API khác nhau. Python cũng giúp triển khai các mô hình tối ưu hóa và kỹ thuật học máy một cách đơn giản.
Bằng cách tận dụng sức mạnh và tính linh hoạt của Python, chúng ta có thể nhanh chóng phát triển và triển khai các kế hoạch tối ưu tuyến bán hàng hiệu quả cao giúp cắt giảm chi phí và thời gian viếng thăm
Xây dựng thuật toán tối ưu hóa tuyến bán hàng trong Python, các bước chính là:
- Nhập các thư viện như OR-Tools, Pandas, v.v.
- Tính toán ma trận khoảng cách cho từng cặp địa điểm.
- Xác định mục tiêu tối ưu hóa như giảm thiểu quãng đường di chuyển hoặc thời gian di chuyển
- Mô hình hóa vấn đề như bài toán về người bán hàng rong hoặc bài toán lập lộ trình phương tiện.
- Sử dụng trình giải từ thư viện OR-Tools để tính toán tuyến đường tối ưu.
- Phân tích các số liệu về lộ trình được tối ưu hóa như khoảng cách, thời gian di chuyển.
- Hình dung lộ trình trên bản đồ thông qua Folium
Bước 1: Nhập các thư viện cần thiết
Bước 2: Tải và xử lý dữ liệu
Giả sử chúng ta có dữ liệu trong các tệp CSV đã chuẩn hóa theo cấu trúc với tên warehouses.csv (kho/nhà phân phối); customers.csv (khách hàng). Đọc dữ liệu từ các tệp CSV.
Bước 3: Tạo ma trận khoảng cách
Sử dụng dịch vụ tính khoảng cách di chuyển giao thông giữa kho/nhà phân phối (điểm xuất phát) và các vị trí khách hàng từ eKMap API để thiết lập ma trận khoảng cách:
Bước 4: Xây dựng mô hình tối ưu hóa tuyến đường
Sử dụng thư viện OR-Tools do Google phát triển để giải quyết bài toán tối ưu hóa tuyến đường vì các lý do sau:
- Triển khai các thuật toán tiên tiến như TSP (Bài toán người bán hàng du lịch), CVRP (VRP có dung lượng), VRPTW (VRP có cửa sổ thời gian), MDHVRPTW (xe không đồng nhất đa kho VRPTW), PDPTW (vấn đề nhận và giao hàng với TW), …
- Linh hoạt và có thể tùy chỉnh để xử lý các hạn chế như sức chứa xe, khung thời gian, thời gian nghỉ của tài xế, v.v.
- API Python và C++ có sẵn để tích hợp
- Được duy trì tích cực bởi cộng đồng những người đóng góp
Khởi tạo mô hình với một số dữ liệu đầu vào:
- Ma trận khoảng cách đã tính ở trên
- Số lượng nhân viên sale là 3
- Điểm xuất phát là vị trí đầu tiên trong ma trận
Mô hình giới hạn quãng đường di chuyển tối đa của mỗi nhân viên là 8km:
Bước 5: Tính toán và hiển thị kết quả
Hiển thị kết quả tuyến đường tối ưu trên bản đồ:
Bước 6: Đánh giá kết quả
Kết quả được in:
- Xác định được 3 tuyến đường ngắn nhất cho 3 nhân viên sale, đảm bảo viếng thăm tất cả các khách hàng
- Tổng quãng đường dài nhất mà một nhân viên là 7566m
Tuyến đường trên bản đồ:
IV – Kết luận
Mô hình này có thể giúp người quản lý khu vực bán hàng:
- Sắp xếp tuyến bán hàng hàng hiệu quả cho đội ngũ sale, tối ưu hóa đội sale của mình bằng cách sử dụng tối đa đội ngũ sale, giúp giảm quãng đường di chuyển và tận dụng tối đa nguồn lực
- Đảm bảo khối lượng công việc được phân bổ đều cho mỗi sale
V – Định hướng tiếp theo
- Khung thời gian để viếng thăm: Kết hợp các hạn chế về thời gian (thời gian viếng thăm tối thiểu) để ghé thăm các khách hàng. Điều này sẽ đảm bảo rằng tuyến đường tính toán đến việc tối ưu thời gian làm việc của nhân viên
- Tải trọng và sức chứa của phương tiện di chuyển của nhân viên: Mở rộng tối ưu hóa để tính đến các hạn chế về tải trọng và sức chứa của xe di chuyển, hoặc hiểu là các đơn hàng cần giao cho khách hàng (vansale). Cải tiến này sẽ giúp tối ưu hóa việc giao hàng dựa trên số lượng đơn hàng được giao cho nhân viên
- Giới hạn tổng thời gian: Giới hạn tổng thời gian cho từng tuyến đường để hạn chế tổng thời gian giao hàng nhằm nâng cao hiệu quả và quản lý thời gian.
- Nhiều kho hàng/nhà phân phối: Mở rộng giải pháp để xử lý nhiều kho hàng/nhà phân phối.
- Dữ liệu giao thông thời gian thực: Tích hợp dữ liệu giao thông thời gian thực để tính đến tình trạng đường sá thay đổi và tối ưu hóa hơn nữa việc lập kế hoạch tuyến đường.
- Thử nghiệm với các thư viện tối ưu tuyến đường khác để đánh giá như VROOM
VI – Tài nguyên và tài liệu tham khảo
- Bài toán người bán hàng rong — Wikipedia : Trang Wikipedia này cung cấp thông tin chi tiết về Bài toán người bán hàng rong, các biến thể của nó và nhiều thuật toán khác nhau để giải quyết bài toán này.
- Bài toán Vấn đề định tuyến xe (VRP)
- API Máy định tuyến nguồn mở (OSRM) : OSRM được sử dụng để tính toán khoảng cách lái xe và tuyến đường giữa các thành phố và điểm bán hàng.
- Google OR-Tools : OR-Tools là một thư viện mã nguồn mở của Google dùng để giải quyết nhiều bài toán tối ưu hóa khác nhau, bao gồm Bài toán người bán hàng du lịch
- Bài viết Medium