Phân bổ tối ưu theo 2 trường số liệu

Quảng cáo

thnghiachau

Thành viên tiêu biểu
Tham gia ngày
14 Tháng chín 2009
Bài viết
721
Được thích
585
Điểm
868
Xin chào GPE,
Mình có một bài toán nhưng chưa nghĩ ra cách giải quyết trong VBA.

Dữ liệu:
1/ danh sách các vị trí với Khoảng cách và Số lượng cho từng vị trí (số lượng vị trí không cố định)
2/ danh sách nhân viên (Số lượng Nhân viên không cố định)

Bài toán đặt ra:
Chia các Vị trí cho các nhân viên sao cho toàn bộ các nhân viên có TỔNG khoảng cách VÀ Tổng Số lượng theo các vị trí là tối ưu nhất (có nghĩa là giữa các nhân viên khi được chia các vị trí thì có ĐỘ CHÊNH LỆCH của Tổng khoảng cách và ĐỘ CHÊNH LỆCH của Tổng số lựơng theo các Vị trí mà nhân viên được chia là tối ưu ÍT NHẤT)

Xin vui lòng xem file đính kèm.

Xin Cám ơn nhiều.
 

File đính kèm

  • GPE.xlsx
    12.7 KB · Đọc: 14

Maika8008

Thành viên tích cực
Tham gia ngày
12 Tháng sáu 2020
Bài viết
1,099
Được thích
912
Điểm
368
Xin chào GPE,
Mình có một bài toán nhưng chưa nghĩ ra cách giải quyết trong VBA.

Dữ liệu:
1/ danh sách các vị trí với Khoảng cách và Số lượng cho từng vị trí (số lượng vị trí không cố định)
2/ danh sách nhân viên (Số lượng Nhân viên không cố định)

Bài toán đặt ra:
Chia các Vị trí cho các nhân viên sao cho toàn bộ các nhân viên có TỔNG khoảng cách VÀ Tổng Số lượng theo các vị trí là tối ưu nhất (có nghĩa là giữa các nhân viên khi được chia các vị trí thì có ĐỘ CHÊNH LỆCH của Tổng khoảng cách và ĐỘ CHÊNH LỆCH của Tổng số lựơng theo các Vị trí mà nhân viên được chia là tối ưu ÍT NHẤT)

Xin vui lòng xem file đính kèm.

Xin Cám ơn nhiều.
Chà! Đặt ra bài toán khó thía. Hèn chi không thấy cao nhân đoái hoài
$$$$@
 

ptm0412

Bad Excel Member
Thành viên BQT
Super Moderator
Tham gia ngày
4 Tháng mười một 2007
Bài viết
10,795
Được thích
31,386
Điểm
9,718
Tuổi
59
Nơi ở
Gò Vấp
Chà! Đặt ra bài toán khó thía. Hèn chi không thấy cao nhân đoái hoài
Theo yêu cầu thì không thấy ràng buộc chia vị trí đều (hoặc tương đối đều) về khoảng cách, hay về số lượng. Vậy thì cứ bốc đại mỗi nhân viên 4 vị trí và chênh lệch luôn luôn bằng zero.
Thậm chí phân số vị trí không đều nhau, người 10, người 2, người 3, ... cho đến hết cũng vẫn "tối ưu"
 

ongke0711

Thành viên tích cực
Tham gia ngày
7 Tháng chín 2006
Bài viết
839
Được thích
972
Điểm
868
Nơi ở
HCM
Giải thuật bài này thì tôi không biết chứ trước đây tôi và đồng nghiệp bên kinh doanh (Giám sát bán hàng, quản lý vùng) làm thủ công là cứ mở bản đồ lên, dùng bút lông chia địa bàn cho từng ông Sales (nhân viên bán hàng), liệt kê có bao nhiêu cửa hàng trong tuyền đường được chia, đảm bảo cự ly di chuyển (xe máy) là gần giống nhau và số cửa hàng bao phủ cũng gần tương đương vì tiền xăng và thời gian bán hàng như nhau. Nói chung là chia tương đối và nhân viên đồng thuận thì tiến hành thôi. Giờ hiện đại rồi, chắc có nhiều công cụ với những giải thuật chia tối ưu mà tôi chưa cập nhật. :)
(Bạn nào bên kinh doạnh hàng tiêu dùng nhanh thì rành vụ này lắm, gọi là làm MCP - Master coverage plan)
 

VetMini

Chuyên gia GPE
Tham gia ngày
21 Tháng mười hai 2012
Bài viết
11,401
Được thích
14,238
Điểm
4,868
Đây là bài toán thuộc về trình độ toán ứng dụng. Thường học trong ngành Kỹ Sư năm thứ 3, hoặc Logistics năm thứ 2.
Môn này tên là Vận Trù Học (Operations Research). Chia ra làm 2 phần, phần 1 là Mô Hình Xác Định (Deterministic Models) và phần 2 là Mô Hình Xác Suất (Probabilistic Models). Phần thứ 2 rất khó nhai cho nên cấp ĐH thường chỉ bắt buộc học phần 1, phần 2 là môn nhiệm ý.

Con toán này tính khá khó, phải diễn mô hình (bằng số) ra bảng tính và dùng phương pháp tương tự như solver để đi từng bước một đến tối ưu. Tôi ít có dịp thực tập với bảng tính Excel cho nên bi giờ quên mất nó tính ra sao. Chỉ biết là tính tay thì cực muốn chết (hết kẻ bảng này đến bảng khác, mỗi trial là một bảng).
Về sau này có những phần mềm làm việc này. Theo tôi thì mua quách nó cho khoẻ.
Tuy nhiên đó chỉ là ý kiến của tôi. Có thể những bạn chuyên về solver có cách giải, khỏi tốn tiền.
 

ptm0412

Bad Excel Member
Thành viên BQT
Super Moderator
Tham gia ngày
4 Tháng mười một 2007
Bài viết
10,795
Được thích
31,386
Điểm
9,718
Tuổi
59
Nơi ở
Gò Vấp
Tuy nhiên đó chỉ là ý kiến của tôi. Có thể những bạn chuyên về solver có cách giải, khỏi tốn tiền.
Tôi cũng có biết chút về solver, nhưng tôi thử solver (*) thì không thực hiện được với bài toán này (**)
(*) thử bằng khả năng của tôi, người khác có thể giỏi hơn
(**) Giả định rằng có điều kiện là phân phối đều hoặc tương đối đều cho các nhân viên về số lượng và khoảng cách, hoặc tích số Số lượng x Khoảng cách, điều kiện mà đề bài không nhắc đến như bài trên tôi đã nói. Hoặc cũng có thể đã nói nhưng câu cú làm tôi hiểu sai
_________
1. Objective cell (mục tiêu cần đạt min) chỉ cho chọn 1 ô, chưa biết làm cách nào để chỉ 1 ô, công thức gì mà thể hiện sự tính toán tối ưu được 2 tiêu chí cho n nhân viên
2. Variable cells (các tham số để solver chỉnh sửa sau khi tính toán) cho phép chọn nhiều cells, nhưng cái khó là các cells đó có những ràng buộc mà không đưa vào constraint (hệ ràng buộc) được, cụ thể các ràng buộc cần như sau:
- số ô cần thay đổi là 20 ô (số lượng vị trí), mỗi ô chỉ xuất hiện 1 lần: không thể hiện được
- 20 ô đó phải là số nguyên: được
- tổng từng nhân viên so sánh với nhau từng đôi (10 cặp so sánh), hoặc so sánh với số trung bình chia (5 cặp so sánh) là nhỏ nhất (khó hoặc không làm được)
- một số ràng buộc chưa nghĩ hết
- chạy 1 lần chỉ cho 1 nhân viên, chưa thể chạy 1 lần cho nhiều nhân viên.
Chạy tổng quát cho m vị trí và n nhân viên: Lại càng khó
 

HieuCD

Chuyên gia GPE
Tham gia ngày
14 Tháng chín 2010
Bài viết
7,822
Được thích
15,725
Điểm
4,668
Đây là bài toán thuộc về trình độ toán ứng dụng. Thường học trong ngành Kỹ Sư năm thứ 3, hoặc Logistics năm thứ 2.
Môn này tên là Vận Trù Học (Operations Research). Chia ra làm 2 phần, phần 1 là Mô Hình Xác Định (Deterministic Models) và phần 2 là Mô Hình Xác Suất (Probabilistic Models). Phần thứ 2 rất khó nhai cho nên cấp ĐH thường chỉ bắt buộc học phần 1, phần 2 là môn nhiệm ý.

Con toán này tính khá khó, phải diễn mô hình (bằng số) ra bảng tính và dùng phương pháp tương tự như solver để đi từng bước một đến tối ưu. Tôi ít có dịp thực tập với bảng tính Excel cho nên bi giờ quên mất nó tính ra sao. Chỉ biết là tính tay thì cực muốn chết (hết kẻ bảng này đến bảng khác, mỗi trial là một bảng).
Về sau này có những phần mềm làm việc này. Theo tôi thì mua quách nó cho khoẻ.
Tuy nhiên đó chỉ là ý kiến của tôi. Có thể những bạn chuyên về solver có cách giải, khỏi tốn tiền.
Quan trọng là thuật toán, nếu biết cách làm thủ công từng bảng, chuyển sang code VBA không khó, trước đây cũng học vài mô hình nhưng không dùng lại nên trả lại Thầy Cô hết :p
1. Objective cell (mục tiêu cần đạt min) chỉ cho chọn 1 ô, chưa biết làm cách nào để chỉ 1 ô, công thức gì mà thể hiện sự tính toán tối ưu được 2 tiêu chí cho n nhân viên

"ĐỘ CHÊNH LỆCH của Tổng khoảng cách và ĐỘ CHÊNH LỆCH của Tổng số lựơng theo các Vị trí mà nhân viên được chia là tối ưu ÍT NHẤT"
Điều kiện mục tiêu không rỏ ràng, tiêu chí "Tổng khoảng cách" và "Tổng số lựơng" có thể không đồng thời "ÍT NHẤT", cần xác định thế nào là "tối ưu ÍT NHẤT" theo 2 tiêu chí, có lẽ cần tính tổng 2 tiêu chí có hệ số (trọng số) làm giá trị mục tiêu
 

CHAOQUAY

Thành viên tích cực
Tham gia ngày
24 Tháng tám 2018
Bài viết
1,405
Được thích
1,538
Điểm
668
Xin chào GPE,
Mình có một bài toán nhưng chưa nghĩ ra cách giải quyết trong VBA.

Dữ liệu:
1/ danh sách các vị trí với Khoảng cách và Số lượng cho từng vị trí (số lượng vị trí không cố định)
2/ danh sách nhân viên (Số lượng Nhân viên không cố định)

Bài toán đặt ra:
Chia các Vị trí cho các nhân viên sao cho toàn bộ các nhân viên có TỔNG khoảng cách VÀ Tổng Số lượng theo các vị trí là tối ưu nhất (có nghĩa là giữa các nhân viên khi được chia các vị trí thì có ĐỘ CHÊNH LỆCH của Tổng khoảng cách và ĐỘ CHÊNH LỆCH của Tổng số lựơng theo các Vị trí mà nhân viên được chia là tối ưu ÍT NHẤT)

Xin vui lòng xem file đính kèm.

Xin Cám ơn nhiều.
Chạy thử solver trong file đính kèm, thời gian chạy hơi bị lâu.
@thnghiachau : Có lẽ điều kiện tối ưu đồng thời 2 giá trị trong bài này cần cụ thể hơn
 

File đính kèm

  • ChiKhoangcach_Soluong.xlsb
    14.8 KB · Đọc: 6

ptm0412

Bad Excel Member
Thành viên BQT
Super Moderator
Tham gia ngày
4 Tháng mười một 2007
Bài viết
10,795
Được thích
31,386
Điểm
9,718
Tuổi
59
Nơi ở
Gò Vấp
1. "ĐỘ CHÊNH LỆCH của Tổng khoảng cách và ĐỘ CHÊNH LỆCH của Tổng số lựơng theo các Vị trí mà nhân viên được chia là tối ưu ÍT NHẤT"
2. Điều kiện mục tiêu không rỏ ràng, tiêu chí "Tổng khoảng cách" và "Tổng số lựơng" có thể không đồng thời "ÍT NHẤT", cần xác định thế nào là "tối ưu ÍT NHẤT" theo 2 tiêu chí, có lẽ cần tính tổng 2 tiêu chí có hệ số (trọng số) làm giá trị mục tiêu
1. Câu này hơi mù mờ làm cho tôi nghĩ ĐỘ CHÊNH LỆCH của Tổng khoảng cách và ĐỘ CHÊNH LỆCH của Tổng số lựơng là tổng của 20 vị trí (nếu chia hết) hoặc ít hơn (nếu chia không hết). Thế nên tôi viết ở bài 3 là bốc đại mà chia thì chênh lệch của tổng luôn luôn là zero. Nếu viết rõ hơn thì phải là chênh lệch tổng khoảng cách/ tổng số lượng CỦA TỪNG NGƯỜI SO SÁNH VỚI NHAU là ít nhất, Hoặc nói cách khác là PHÂN CHIA ĐỀU NHẤT CÓ THỂ
2. Hai tiêu chí này bên giao thông vận tải và bên giao hàng thường nhân với nhau: không thể thêm bớt cự ly và/ hoặc số lượng cho cùng 1 vị trí. Trong giao thông vận tải, nếu cự ly là km, số lượng là tấn thì đơn vị tính sau khi nhân là "tấn ki lô mét". Tấn ki lô mét còn dùng để định mức xăng dầu: đi xa và chở nặng sẽ sử dụng nhiều nhiên liệu.
 

thnghiachau

Thành viên tiêu biểu
Tham gia ngày
14 Tháng chín 2009
Bài viết
721
Được thích
585
Điểm
868
Xin cám ơn sự góp ý của các thành viên GPE ạ.
Do biết rằng bài toán "phân bố tối ưu" này với 2 điều kiện, nên em chỉ viết là :
"ĐỘ CHÊNH LỆCH của Tổng khoảng cách và ĐỘ CHÊNH LỆCH của Tổng số lựơng theo các Vị trí mà nhân viên được chia là tối ưu ÍT NHẤT"
có thể có nhiều đáp án trong đó có cái thỏa tổng khoảng cách giữa các nhân viên được phân bố là có độ chênh lệch tối ưu ít nhất nhưng không thỏa tổng số lượng giữa các nhân viên được phân bố là có độ chênh lệch tối ưu ít nhất, hoặc ngược lại... và cũng có thể có đáp án cả 2 điều kiện là tối ưu...
nhưng phải nói là thật là rất khó mà xác định "như thế nào là tối ưu"...
Hic... em nghĩ hoài mà chưa ra ạ...
có thể liệt kê ra các dáp án có thể có và chọn bằng tay nhỉ???
Bài đã được tự động gộp:

, Hoặc nói cách khác là PHÂN CHIA ĐỀU NHẤT CÓ THỂ
dạ, có thể nói như vậy là dễ hiểu hơn ạ
 

cadafi

Working with mind, Living with nature!
Thành viên BQT
Super Moderator
Tham gia ngày
27 Tháng năm 2007
Bài viết
4,273
Được thích
11,296
Điểm
4,418
Tuổi
40
Nơi ở
HCM
có thể có nhiều đáp án trong đó có cái thỏa tổng khoảng cách giữa các nhân viên được phân bố là có độ chênh lệch tối ưu ít nhất nhưng không thỏa tổng số lượng giữa các nhân viên được phân bố là có độ chênh lệch tối ưu ít nhất, hoặc ngược lại... và cũng có thể có đáp án cả 2 điều kiện là tối ưu...
nhưng phải nói là thật là rất khó mà xác định "như thế nào là tối ưu"...

Như vậy vấn đề của bạn là chia làm sao cho đều, cho công bằng để nhân viên khỏi phân bì (đi xa hơn, giao nhiều hơn).
Thêm vào đó, bạn cho mình hỏi thêm: 1 vị trí có số lượng giao cụ thể, có thể được giao bởi hơn 1 nhân viên không?
Trong bài ví dụ này: Vị Trí 1 cần giao 110, thì có thể chia ra cho 2 nhân viên giao (mỗi người giao 55), hoặc cho 5 nhân viên giao, mỗi người giao 22. Được không bạn?
 

thnghiachau

Thành viên tiêu biểu
Tham gia ngày
14 Tháng chín 2009
Bài viết
721
Được thích
585
Điểm
868
Như vậy vấn đề của bạn là chia làm sao cho đều, cho công bằng để nhân viên khỏi phân bì (đi xa hơn, giao nhiều hơn).
Thêm vào đó, bạn cho mình hỏi thêm: 1 vị trí có số lượng giao cụ thể, có thể được giao bởi hơn 1 nhân viên không?
Trong bài ví dụ này: Vị Trí 1 cần giao 110, thì có thể chia ra cho 2 nhân viên giao (mỗi người giao 55), hoặc cho 5 nhân viên giao, mỗi người giao 22. Được không bạn?
Như vậy vấn đề của bạn là chia làm sao cho đều, cho công bằng để nhân viên khỏi phân bì (đi xa hơn, giao nhiều hơn). => Dạ, đúng là là vậy
1 vị trí có số lượng giao cụ thể, có thể được giao bởi hơn 1 nhân viên không => 1 vị trí cụ thể chỉ được giao cho một nhân viên mà thôi
Vị Trí 1 cần giao 110, thì có thể chia ra cho 2 nhân viên giao (mỗi người giao 55), hoặc cho 5 nhân viên giao, mỗi người giao 22 => , KHÔNG được
 

cadafi

Working with mind, Living with nature!
Thành viên BQT
Super Moderator
Tham gia ngày
27 Tháng năm 2007
Bài viết
4,273
Được thích
11,296
Điểm
4,418
Tuổi
40
Nơi ở
HCM
Như vậy vấn đề của bạn là chia làm sao cho đều, cho công bằng để nhân viên khỏi phân bì (đi xa hơn, giao nhiều hơn). => Dạ, đúng là là vậy
1 vị trí có số lượng giao cụ thể, có thể được giao bởi hơn 1 nhân viên không => 1 vị trí cụ thể chỉ được giao cho một nhân viên mà thôi
Vị Trí 1 cần giao 110, thì có thể chia ra cho 2 nhân viên giao (mỗi người giao 55), hoặc cho 5 nhân viên giao, mỗi người giao 22 => , KHÔNG được
Như vậy bạn có thể thử Solver của @CHAOQUAY ở bài #13 xem sao.
 

thnghiachau

Thành viên tiêu biểu
Tham gia ngày
14 Tháng chín 2009
Bài viết
721
Được thích
585
Điểm
868

VetMini

Chuyên gia GPE
Tham gia ngày
21 Tháng mười hai 2012
Bài viết
11,401
Được thích
14,238
Điểm
4,868
Quan trọng là thuật toán, nếu biết cách làm thủ công từng bảng, chuyển sang code VBA không khó, trước đây cũng học vài mô hình nhưng không dùng lại nên trả lại Thầy Cô hết :p
...
Trên nguyên tắc, không có một mô hình nào hoàn toàn chính xác, chỉ có mô hình này hữu dụng hơn mô hình khác trong một tình thế ứng dụng nào đó thôi.
Trong con toán ứng dụng, mô hình chỉ giúp cho ta đi đến cách quả mộ cách chắc chắn hơn, đáng tin cậy hơn.

Cách dạy toán ứng dụng ngày xưa cốt chỉ cho bạn cái ý niệm và cái nguyên tắc, các bài tập chỉ là để bạn nhớ một số từ khoá. Lúc ra đời thực sự cần ứng dụng thì các ý niệm, nguyên tắc, và từ khoá này sẽ giúp cho bạn khả năng tra cứu các sách vở, tài liệu mà giải quyết vấn đề của mình.

Với sự phát triển ào ào của máy tính, cách dạy toán ứng dụng ngày nay không chú trọng bài tập lắm mà chỉ chú trọng học nguyên tắc mà mô hình (không cần phải hiểu rõ). Biết mô hình thì có thể tìm đơcj phần mềm giải, hết. Cách này học nhanh và rất hiệu quả. Nhưng vì không hiểu rõ lý thuyết cho nên cần phải cập nhật kiến thức liên tục, nếu không thìu các từ khoá sẽ quên sạch, và khó có khả năng tra cứu như cách dạy cũ.

Điển hình, bạn ở Mỹ thì cũng biết các trường tiểu học công của tiểu bang bây giờ chỉ dạy con nít toán chia với mẫu số 1-9. Khi mẫu số lớn hơn 10 (2 chữ số) thì con toán gọi là "long division", và họ dạy áp dụng máy tính tay.
(Trường tư, hạng đóng học phí 20k/năm trở lên có thể vẫn còn dạy)
 

ptm0412

Bad Excel Member
Thành viên BQT
Super Moderator
Tham gia ngày
4 Tháng mười một 2007
Bài viết
10,795
Được thích
31,386
Điểm
9,718
Tuổi
59
Nơi ở
Gò Vấp
Cám ơn @CHAOQUAY nhiều,
Một cách tổng quát thì điều kiện tối ưu đồng thời 2 giá trị trong bài này KHÓ có thể cụ thể hơn được ạ.
Cách của @CHAOQUAY sử dụng độ lệch chuẩn (Standard deviation) của cả mảng kết quả, nên vẫn còn chênh lệch nhiều giữa giá trị nhỏ nhất và giá trị lớn nhất.
Theo như tôi thì không dùng độ lệch chuẩn mà dùng (Max - Min)-> bé nhất. Ngoài ra như nói ở trên thì 2 chỉ tiêu tôi nhân với nhau thành "tấn ki lô mét", con số này có khi được dùng để tính tiền công + tiền xăng. Chạy chậm hơn của chaoquay nhiều nhưng kết quả đều hơn:

1617942263987.png
 
Quảng cáo
Top Bottom