You are on page 1of 60

CHƯƠNG 3: MÔ HÌNH HÓA, MÔ PHỎNG

VÀ TỐI ƯU HÓA VỚI ANYLOGIC

Môn học: Mô hình hóa và mô phỏng Logistics

Nguyễn Văn Trường, Ph.D.


Bộ môn Quy hoạch và Quản lý GTVT
Nội dung

1. Giới thiệu mục tiêu, kết cấu của chương 3


2. Bài toán xác định vị trí cơ sở Log tối ưu (Green Field Analysis)
3. Tối ưu hóa mạng lưới và tối ưu hóa vận tải
4. Các chính sách sản xuất (producing), tìm nguồn cung ứng
(sourcing) trong chuỗi nhiều cấp
5. Phân tích rủi ro trong SC, hiệu ứng bullwhip (roi da) và hiệu ứng
ripple (lan tỏa)

Nguyen Van Truong 14 October 2023 Slide 2


Mục tiêu của chương này
❑ Giới thiệu chung về AnyLogic (AnyLogicstics)
❑ Giải thích phương pháp xây dựng mô hình mô phỏng với AnyLogic ở các cấp độ phức tạp
khác nhau
❑ Giới thiệu một số vấn đề thực tiễn có thể ứng dụng AnyLogic trong việc mô phỏng các quá
trình quản lý chuỗi cung ứng và hậu cần (logicstics)
❑ Hướng dẫn/thực hành từng bước sử dụng AnyLogic để mô phỏng hỗ trợ quá trình ra quyết
định trong SCM và Log
❑ Thảo luận một số trường hợp ứng dụng AnyLogic cho một số các trường hợp ứng dụng khác
trong SCM

Nguyen Van Truong 14 October 2023 Slide 3


Các nội dung chính
Nội dung thực hành Mô tả Mức độ Ghi chú/nội dung liên quan
Bài toán Green Field Analysis • Xác định vị trí tối ưu cho 1 vị trí cơ Cơ bản • Vị trí tối ưu, quy hoạch vị trí tối ưu của
sở vật chất/hạ tầng log các cơ sở Log (facility location planning)
Tối ưu hóa mạng lưới và tối ưu • Phân tích tối ưu hóa mạng lưới Nâng cao • Phân phối và thiết kế mạng lưới vận tải
hóa vận tải • Mô phỏng SC nâng cao (chính sách 1 (Distribution and Trans Network Design)
kiểm soát tồn kho, chính sách vận • Quản lý tồn kho
chuyển) • Xác định tuyến VT và kế hoạch vận
• Tối ưu tuyến phương tiện/vận tải chuyển (routing and scheduling)
Các chính sách sản xuất • Trình bày các chính sách sản xuất và Nâng cao • Tìm kiếm và lập chiến lược tìm nguồn
(producing), tìm nguồn cung chính sách cung ứng trong chuỗi 1 cung ứng
ứng (sourcing) trong chuỗi cung ứng nhiều cấp • Lập kế hoạch sản xuất, kế hoạch cung
nhiều cấp ứng nguyên/vật liệu đầu vào
Phân tích rủi ro trong chuỗi • Hiệu ứng roi da (bullwhip) và hiệu Nâng cao • Quản lý rủi ro (risk) và sức chống chịu
cung ứng ứng lan tỏa (ripple) 2 (resilience) chuỗi cung ứng và
• Thực nghiệm với các thay đổi (biến
số) và phân tích so sánh
• Thực hành phân tích rủi ro

Nguyen Van Truong 14 October 2023 Slide 4


Nội dung
1. Giới thiệu mục tiêu, kết cấu của chương 3

2. Bài toán xác định vị trí cơ sở Log tối ưu (Green Field Analysis)
❖ Mục tiêu
❖ Một chút cơ sở lý thuyết
❖ Thực hành
➢ GFA cho cơ sở dịch vụ mới
➢ Xác định các thông số và cơ cấu SC
➢ Thử nghiệm với GFA mới
➢ Mô phỏng thử nghiệm với GFA mới
➢ Phân tích thử nghiệm
3. Tối ưu hóa mạng lưới và tối ưu hóa vận tải
4. Các chính sách sản xuất (producing), tìm nguồn cung ứng (sourcing) trong chuỗi nhiều cấp
5. Phân tích rủi ro trong SC, hiệu ứng bullwhip (roi da) và hiệu ứng ripple (lan tỏa)

Nguyen Van Truong 14 October 2023 Slide 5


Mục tiêu học tập với bài toán GFA
❑ Phát triển kỹ năng phân tích và kỹ năng quản lý để sử dụng phương pháp trọng tâm và mô
phỏng nhằm chọn vị trí tối ưu cho một cơ sở vật chất của một doanh nghiệp log

❑ Phát triển các kỹ năng kỹ thuật bạn cần thiết sử dụng AnyLogic nhằm tạo mô hình chuỗi
cung ứng hai giai đoạn, thực hiện thử nghiệm và đo lường hiệu quả

❑ Hiểu được sự đánh đổi (trade-off) chính trong việc quy hoạch vị trí cơ sở ảnh hưởng đến số
lượng địa điểm, thời gian thực hiện và sự không chắc chắn về nhu cầu

❑ Hiểu được các lĩnh vực mô phỏng và tối ưu hóa

Nguyen Van Truong 14 October 2023 Slide 6


Nội dung
1. Giới thiệu mục tiêu, kết cấu của chương 3

2. Bài toán xác định vị trí cơ sở Log tối ưu (Green Field Analysis)
❖ Mục tiêu
❖ Một chút cơ sở lý thuyết
❖ Thực hành
➢ GFA cho cơ sở dịch vụ mới
➢ Xác định các thông số và cơ cấu SC
➢ Thử nghiệm với GFA mới
➢ Mô phỏng thử nghiệm với GFA mới
➢ Phân tích thử nghiệm
3. Tối ưu hóa mạng lưới và tối ưu hóa vận tải
4. Các chính sách sản xuất (producing), tìm nguồn cung ứng (sourcing) trong chuỗi nhiều cấp
5. Phân tích rủi ro trong SC, hiệu ứng bullwhip (roi da) và hiệu ứng ripple (lan tỏa)

Nguyen Van Truong 14 October 2023 Slide 7


Cơ sở lý thuyết của bài toán GFA (Green Field Analysis)
❑ Mục tiêu của phân tích GFA là xác định vị trí tốt nhất cho trung tâm phân phối. Cụ thể, cần tìm
địa điểm cho phép doanh nghiệp log đáp ứng nhu cầu của khách hàng với tổng chi phí vận tải
thấp nhất.
❑ GFA, còn được gọi là phân tích trọng tâm, là một phương pháp phổ biến để xác định vị trí tối ưu
cho các cơ sở mới (Ivanov và cộng sự 2019). Các vấn đề cần xem xét trong quá trình phân tích
trường xanh là vị trí của khách hàng, khoảng cách từ (các) kho đến khách hàng và nhu cầu của
khách hàng đối với từng sản phẩm.
❑ GFA được sử dụng để tìm vị trí tối ưu trong mạng nhằm thiết lập cơ sở sản xuất hoặc nhà kho
mới.
❑ Khác với GFA, phân tích hiện trường “nâu” (Brown Field Analysis) sử dụng cùng một kỹ thuật,
được sử dụng để điều chỉnh mạng vận tải hiện có. Xác định vị trí tối ưu cho cơ sở sản xuất hoặc
kho bãi được xác định bằng cách tìm điểm mà tại đó tổng khoảng cách từ tất cả nhà cung cấp
đến nhà máy (điểm nhu cầu), với trọng số được tính bằng khối lượng dòng sản phẩm giữa mỗi
nhà cung cấp đến nhà máy là tối thiểu. Tương tự, để xác định vị trí tối ưu cho nhà kho, thì
khoảng cách từ khách hàng đến nhà kho, được tính theo nhu cầu tương ứng, sẽ được xác định.

Nguyen Van Truong 14 October 2023 Slide 8


Cơ sở lý thuyết của bài toán GFA (Green Field Analysis)
❑ Để thực hiện GFA, bài thực hành trong bài giảng này sẽ giả định bỏ qua một số thông tin chi
tiết. Dữ liệu hiện có, bao gồm vị trí của khách hàng, nhu cầu của mỗi khách hàng, số lượng
và vị trí của trung tâm phân phối (Distribution Centers- DCs), và khoảng cách vận chuyển,
được sử dụng làm đầu vào cho phân tích.
❑ Các tham số của chương trình cho GFA bao gồm: số lượng kết quả có thể có mà chương
trình sẽ tính toán và liệu chương trình có nên sử dụng tuyến đường thật hay không.
❑ Đầu ra của phân tích là vị trí gần đúng, hoặc vị trí tối ưu cho cơ sở sản xuất hoặc kho bãi.
Điểm tối ưu này được gọi là “tâm hoặc trọng lực” (center of gravity, Ivanov et al. 2019). Như
đã giải thích, cái gọi là “Mô hình trọng lực” này xác định vị trí mà tại đó chi phí của tất cả các
hoạt động vận chuyển ra vào được giảm thiểu (Chopra và Meindl, 2016).

Nguyen Van Truong 14 October 2023 Slide 9


Cơ sở lý thuyết của bài toán GFA (Green Field Analysis)
❑ Gọi cặp tọa độ (x;y) theo thứ tự đại diện cho từng vị trí của khách hàng, số liệu này không thể
thay đổi → ta gọi là dữ liệu đầu vào hoặc tham số bài toán.
❑ Ngược lại, tọa độ (x;y) của kho mới (vị trí cần tìm) có thể thay đổi. Ta sẽ xác định chúng sau khi
tính toán dựa trên dữ liệu đầu vào cung cấp theo cách khớp với các tham số ở trên. Gọi px và py
là biến quyết định của kịch bản này.
❑ Giả định rằng, chi phí vận chuyển tỷ lệ tuyến tính với khoảng cách và khối lượng vận chuyển (nhu
cầu). Chúng ta có thể thấy tổng chi phí vận chuyển sẽ phụ thuộc vào tọa độ (px;py) của kho tiềm
năng và khoảng cách. Giả định chi phí vận chuyển từ kho tiềm năng (px;py) đến địa điểm của
khách hàng (xi;yi) ít nhiều tương đương với khoảng cách và nhu cầu.
❑ Với ý tưởng đó, chúng ta cần xác định khoảng cách d((px;py); (xi;yi)) giữa vị trí của i-khách hàng và
kho hàng để tính chi phí vận chuyển. Để giảm thiểu các khoản thanh toán cho công ty giao nhận,
ta phải thay đổi px và py để sao cho tổng chi phí Z(px;py) nhỏ nhất.

Nguyen Van Truong 14 October 2023 Slide 10


Mô hình bài toán GFA (Green Field Analysis)
❑ Tổng chi phí Z(px;py) là yếu tố quyết định trong bài toán GFA vì ta tìm cách xác định vị trí tối ưu
của nhà kho với tổng chi phí tối thiểu để phục vụ mọi nhu cầu của khách hàng. Với giả định tổng
chi phí vận chuyển tỷ lệ thuận với khoảng cách và khối lượng vận chuyển (nhu cầu).
❑ Do đó, mô hình mục tiêu được thể hiện trong mô hình trung tâm trọng lực (center of gravity)
dưới đây:

❑ Có thể thấy tổng chi phí vận chuyển Z phụ thuộc vào tọa độ px và py của các kho hàng tiềm năng
và khoảng cách. Do đó, cần xác định khoảng cách d((px;py); (xi;yi)) giữa địa điểm của khách hàng
thứ i và kho hàng để tính chi phí vận chuyển.
❑ Nguyên tắc là thay đổi px, py để tìm kiếm vị trí mà ở đó Z nhỏ nhất

Nguyen Van Truong 14 October 2023 Slide 11


Mô hình bài toán GFA (Green Field Analysis)
❑ Có thể tìm giá trị nhỏ nhất của Z theo đạo hàm sau đây:

❑ px và py có thể tính được theo công thức:

Nguyen Van Truong 14 October 2023 Slide 12


Nội dung
1. Giới thiệu mục tiêu, kết cấu của chương 3

2. Bài toán xác định vị trí cơ sở Log tối ưu (Green Field Analysis)
❖ Mục tiêu
❖ Một chút cơ sở lý thuyết
❖ Thực hành
➢ GFA cho cơ sở dịch vụ mới
➢ Xác định các thông số và cơ cấu SC
➢ Thử nghiệm với GFA mới
➢ Mô phỏng thử nghiệm với GFA mới
➢ Phân tích thử nghiệm
3. Tối ưu hóa mạng lưới và tối ưu hóa vận tải
4. Các chính sách sản xuất (producing), tìm nguồn cung ứng (sourcing) trong chuỗi nhiều cấp
5. Phân tích rủi ro trong SC, hiệu ứng bullwhip (roi da) và hiệu ứng ripple (lan tỏa)

Nguyen Van Truong 14 October 2023 Slide 13


Thực hành với bài toán GFA cho cơ sở dịch vụ mới
❑ Giả sử 1 người quản lý một SC cần xác định vị trí để xây dựng/đặt các trung tâm phân phối
(DC). Có 2 câu hỏi căn bản được đặt ra:
• Các trung tâm phân phối nên được đặt ở đâu? và
• Cần bao nhiêu trung tâm phân phối để chi phí cho hoạt động phân phối là thấp nhất?
❑ Người quản lý đó sẽ cần những thông tin sau đây:
• Danh sách khách hàng và vị trí/địa chỉ của họ
• Sản phẩm khách hàng cần (và đơn vị đo lường)
• Nhu cầu của khách hàng (cho từng sản phẩm)
• Chi phí vận chuyển trên mỗi đơn vị khoảng cách (km)
• Khoảng cách trong mạng lưới cung cung ứng
❑ Câu hỏi cho SV: Để có được những thông tin này, người quản lý cần tìm kiếm, lấy ở đâu?

Nguyen Van Truong 14 October 2023 Slide 14


Thực hành với bài toán GFA cho cơ sở dịch vụ mới
❑ Giải bài toán này với AnyLogic, ta cần thực hiện các bước sau đây:

1. Tạo kịch bản và xác định cấu trúc cũng như các thông số của chuỗi cung ứng (trình bày sau)
2. Xác định nhu cầu khách hàng trong SC, xác định chính sách vận chuyển và tìm nguồn cung
ứng của SC
3. Tham số hóa (gán các tham số) các khu vực (khách hàng và DCs) và tham số hóa các chính
sách
4. Thực hiện thử nghiệm phân tích GFA để xác định vị trí tốt nhất cho một hoặc nhiều nhà kho
5. Tạo bảng thông tin (dash board) KPI và thu thập số liệu thống kê về năng lực (performance)
của chuỗi cung ứng
6. Mô phỏng thiết kế chuỗi cung ứng với các địa điểm mới và xác định tác động của các địa
điểm đó

Nguyen Van Truong 14 October 2023 Slide 15


Xây dựng các kịch bản mô phỏng

Nguyen Van Truong 14 October 2023 Slide 16


Nguyen Van Truong 14 October 2023 Slide 17
Xây dựng môi trường làm việc

2
3

1. Tạo mô hình mới 4


2. Đặt tên mô hình bất kỳ
3. Chọn nơi lưu mô hình
4. Chọn đơn vị thời gian 5
5. Click “finish” để xác nhận tạo mô hình
Nguyen Van Truong 14 October 2023 Slide 18
Xây dựng môi trường làm việc
Sau khi xác nhận, giao diện của
Properties: Khu vực cho
AnyLogic hiển thị như hình vẽ
phép hiển thị và chỉnh sửa
thuộc tính của các thành
Khu trung tâm là trình soạn phần trong mô hình hiện
thảo đồ họa (graphical hành
editor): Để hiển thị các sơ
đồ (diagram) của Main
agent

Các mô hình mới khởi tạo luôn


bao gồm 2 thành phần chính:
Main: Loại đối tượng agent

Projects: Hiển thị/cho phép truy cập vào mô hình AnyLogic Simulation experiment (mô
đang được mở trong không gian làm việc workspace phỏng)

Palette: Bao gồm tất cả các thành phần đồ họa có thể thêm
hoặc chỉnh sửa bằng thao tác kéo-thả
Nguyen Van Truong 14 October 2023 Slide 19
Đưa GIS vào workspace

1 Click chọn Palette


2 Mở thư viện
Process Modeling
Library

3 Giữ chuột ở vị trí (2)


khoảng 1s để hiển thị
menu kéo xuống
→ chọn Space
Markup

Nguyen Van Truong 14 October 2023 Slide 20


Đưa GIS vào workspace

Mặc định, bản đồ nền


cả thế giới sẽ hiển thị
trong khung workspace

Để dịch chuyển GIS


map, bấm giữ chuột
trái và di chuyển đến vị
trí bất kỳ trong
workspace
4 Chọn GIS Map
trong danh mục Để hiệu chỉnh độ
Space Markup và rộng/hẹp của khung
kéo thả vào trong hiển thị GIS Map, đưa
Workspace chuột vào 1 trong các
vị trí này và kéo đến vị
trí mong muốn

Nguyen Van Truong 14 October 2023 Slide 21


Đưa GIS vào workspace

Mặc định, bản đồ nền


cả thế giới sẽ hiển thị
trong khung workspace

Để dịch chuyển GIS


map, bấm giữ chuột
trái và di chuyển đến vị
trí bất kỳ trong
workspace
4 Chọn GIS Map
trong danh mục Để hiệu chỉnh độ
Space Markup và rộng/hẹp của khung
kéo thả vào trong hiển thị GIS Map, đưa
Workspace chuột vào 1 trong các
vị trí này và kéo đến vị
trí mong muốn

Nguyen Van Truong 14 October 2023 Slide 22


Đưa GIS vào workspace

Để hiển thị thuộc tính (Properties) của


1 đối tượng (Object) trong workspace,
chọn đối tượng đó → các thuộc tính sẽ
hiển thị trong mục Properties (bên
phải màn hình)

Trong bài thực hành này ta tạm thời để


mặc định

Nguyen Van Truong 14 October 2023 Slide 23


Đưa GIS vào workspace

Để hiển thị khu vực dự định mô phỏng, ví


dụ vùng HN, double click vào GIS Map để
kích hoạt cửa sổ GIS.

Zoom vào khu vực HN có 2 cách:


• Cách 1: Kéo chuột và dùng nút cuộn
chuột (scroll) để zoom in/out đến khu
vực mong muốn (chức năng này giống
như thao tác trên google map
• Cách 2: Gõ tên vùng để tìm kiến (xem
hình vẽ)

Sau khi thực hiện xong, click vào 1 điểm


bất kỳ bên ngoài GIS Map để xác nhận
hoàn tất tác vụ

Nguyen Van Truong 14 October 2023 Slide 24


Tạo trung tâm phân phối

1 Chọn Palette
Sau bước (3), trình
khởi tạo Agent mới sẽ
3 Click chọn Agent và 4 được hiển thị
kéo thả vào main
workspace

2 Click Agent để
hiển thị menu
Agent

Nguyen Van Truong 14 October 2023 Slide 25


Tạo trung tâm phân phối

Chọn 2D (kiểu hiển


7 thị trung tâm PP)
4 Đặt tên Agent,
Ví dụ: Distributor
5 Chọn chức năng
này mặc định

Chọn Next
6 9

Cửa sổ Agent Animation


hiện ra để lựa chọn
hình ảnh mô phỏng của
Distributor

Nguyen Van Truong 14 October 2023 Slide 26


Tạo trung tâm phân phối

Sau khi click “Finish,” agent sẽ xuất hiện ở 1 điểm nào đó trong
Main diagram

Có một số cách để xác định hoặc điều chỉnh vị trí của agent
(xem slide tiếp theo)
Nguyen Van Truong 14 October 2023 Slide 27
Mục tiêu: Kết nối trung tâm PP vào 1 điểm
Kết nối trung tâm PP vừa tạo với GIS trên GIS
Click chọn distributor đặt trong
main workspace. Sau bước này cửa sổ
thuộc tính của distributor sẽ hiển thị như
bên phải màn hình
Kéo GIS 3
Point và thả Tại Initial
vào 1 điểm location, chọn
mong muốn “in the node”
trong GIS 2 4
Map
5
1
Tại Node, chọn
Click để mở “gisPoint”
Space
Markup

Sau bước 3, 4, 5 vị trí gisPoint sẽ được gán vào distributor.


AnyLogic sẽ hiểu distributor được kết nối với 1 node trên
bản đồ GIS Map và có hình thức hiển thị 2D

Nguyen Van Truong 14 October 2023 Slide 28


Chạy/run (thử) mô hình (để kiểm tra xem có lỗi nào phát sinh trong quá trình tạo distributor không)
Click vào biểu tượng để xây
3 dựng mô hình (build model)
Hiển thị tab
Projects 1
Nếu trên mô hình 2
“DC_location” có
dấu “*” thể hiện 4
mô hình chưa được Click vào danh sách kéo xuống
lưu→ hãy lưu lại của nút “Run” trên thanh công
bằng cách chọn cụ sẽ thấy mô hình hiện hành
file→save đang hiển thị → click vào tên
mô hình đó thể thực hiện Run
simulation
Sau bước 3, nếu mô hình bị lỗi, quá trình xây dựng
mô hình sẽ không hoàn thành và 1 cửa sổ thể hiện
lỗi (problems) sẽ thông báo các lỗi có thể gặp phải.
Để sửa lỗi, double click vào lỗi bất kỳ trong danh
sách để hiển thị vị trí lỗi trong mô hình và tiến
hành sửa lỗi.

Nguyen Van Truong 14 October 2023 Slide 29


Chạy/run (thử) mô hình (để kiểm tra xem có lỗi nào phát sinh trong quá trình tạo distributor không)

Sau bước 4 ở trên, một cửa số


mô phỏng sẽ hiển thị như hình
bên.

Hình này cho thấy mô hình


trung tâm phân phối đơn giản
vừa tạo đến bước này đã không
bị lỗi.

Bước tiếp theo, ta sẽ xây dựng


mô hình các nhà bán hàng
“retailers”

Nguyen Van Truong 14 October 2023 Slide 30


Xây dựng mô hình các nhà bán lẻ
Kéo Agent và Sau (2) cửa sổ khởi tạo
thả vào màn Agent mới xuất hiện
hình main → chọn “Population
workspace of Agents”

2 3

Click vào
Agent
4 Trong cửa sổ tiếp
1 theo, chọn “I want to
create new agent
type”.

5 Chọn Next

Nguyen Van Truong 14 October 2023 Slide 31


Xây dựng mô hình các nhà bán lẻ
Đặt tên cho nhà bán lẻ, ví dụ
“Retailer1”
6

Chọn “Create
the agent type
from scratch”
7

9
Sau khi kết thúc, retailor
xuất hiện trong không gian
làm việc Main workspace
8
Click Kết thúc

Nguyen Van Truong 14 October 2023 Slide 32


Zoom khung GIS phù hợp,
Gán tọa độ vị trí GIS cho retailer kéo retailer và thả retailer
đến chỗ phù hợp

Kéo và thả
GIS Point
vào vị trí
mong
muốn
trong GIS 2
1 5
Chọn đặt Retailer
Click chọn tại node
Hiển thị 4
Retailer1
Space
Markup 6
Đặt tên cho điểm
GIS Point vừa thả Trogn danh sách kéo xuống
3
tên là …R1 (để của Node, chọn gisPointR1 (để
nhớ đó là điểm gán Retailer1 vào vị trí của
đặt của Retailer1) gisPointR1)

Nguyen Van Truong 14 October 2023 Slide 33


Xây dựng mô hình phương tiện để phục vụ quá trình vận tải từ DC
đến nhà bán lẻ

Kéo Agent
và thả vào
cửa sổ
Main 2
3 Chọn
workspace
Population
of agents

Hiển thị 1
Agent 4 Chọn I
want to
create a
new agent
type

Nguyen Van Truong 14 October 2023 Slide 34


Xây dựng mô hình phương tiện để phục vụ quá trình vận tải từ DC
đến nhà bán lẻ

6 9
Đặt tên agent, ví Chọn cách hiển
dụ, Vehicle thị phương tiện

7 10
Chọn phương
Lựa chọn phương án này tiện là xe tải
(để sử dụng flowchart làm
mô hình mô tả quá trình
trong SC)
8 11

Nguyen Van Truong 14 October 2023 Slide 35


Xây dựng mô hình phương tiện để phục vụ quá trình vận tải từ DC
đến nhà bán lẻ

13
Nhập số lượng xe tải cần
Bỏ qua bước
thiết cho DC để vận
này. Click Next
chuyển. Ví dụ 25

12

14

Nguyen Van Truong 14 October 2023 Slide 36


Xây dựng mô hình phương tiện để phục vụ quá trình vận tải từ DC
đến nhà bán lẻ

Sau khi hoàn thành bước 14, không gian workspace xuất hiện phương
tiện và agent vehicles.

Bước tiếp theo là đặt phương tiện này tại vị trí DC

Nguyen Van Truong 14 October 2023 Slide 37


Đặt đoàn PT vào vị trí của DC (Distribution center)
Để kiểm tra mô hình vừa xây
4 dựng, chọn build model, và run
model

Click chọn 1
agent Chọn vị trí
vehicles đặt đoàn
2 PT
3

Chọn vị trí đặt


gisPoint (lưu ý đây là
vị trí của DC đã
được định nghĩa ở
trên)

Nguyen Van Truong 14 October 2023 Slide 38


Đặt đoàn PT vào vị trí của DC (Distribution center)

Sau khi chọn Run model như


bước 4 ở trên. Cửa sổ mô
phỏng simulation sẽ hiện ra.

Vị trí của đoàn phương tiện sẽ


hiển thị tại đúng vị trí của DC
(xem hình vẽ)

Nguyen Van Truong 14 October 2023 Slide 39


Hiệu chỉnh các agents

Tab hiển thị


agent phương
2 tiện sẽ hiện ra

Ví dụ, muốn
1 chỉnh kích
thước của PT,
double click 3
vào agent
vehicles
Kéo ra/vào
điều chỉnh
kích thước
của phương
tiện

Nguyen Van Truong 14 October 2023 Slide 40


Định nghĩa chuyển động của đoàn phương tiện
Một tab Vehicle sẽ hiển thị.
2 Hiển thị tab Vehicle (xem slide
tiếp theo) để thực hiện định
nghĩa chuyển động của đoàn xe.

1-1

Double click
vào agent 1-2
Vehicle trong Hoặc Double
tab Projects click vào agent
Vehicle trong
không gian
workspace

Nguyen Van Truong 14 October 2023 Slide 41


Định nghĩa chuyển động của đoàn phương tiện
Click vào tab Vehicle
để làm việc với agent
8. Tiếp tục kéo thả
Vehicle
“State” (tương tự bước
Click chọn 7) và đặt tên là
4 3
Palette “MovingToRetailer”
6 (thể hiện trạng thái tiếp
Kéo và thả “Statechart
theo của phương tiện)
Entry Point” vào cửa 7
Vehicle Diagram (định nghĩa
trạng thái ban đầu của đoàn xe Kéo và thả “State” vào Sau 7 và 8, hai trạng
trong trạng thái) cửa Vehicle Diagram và thái của PT được tạo ra.
Màu đỏ sẽ hiển thị khi chưa được kết nối với state entry Nhiệm vụ tiếp theo là
kết nối với trạng thái khác (biểu point. định nghĩa quá trình
hiện bị lỗi). Khi được kết nối với
trạng thái khác, màu đen sẽ suất Đặt tên trạng thái là chuyển trạng thái của
hiện “AtDistributor” (trạng PT từ trạng thái
thái đầu tiên của đoàn AtDistributor đến
Chọn xe) MovingToRetailer (xem
Statechart slide tiếp theo)
5
trong Palette

Nguyen Van Truong 14 October 2023 Slide 42


Định nghĩa chuyển động của đoàn phương tiện

11

9
Có 2 cách để vẽ dòng chuyển
trạng thái: 10
Định nghĩa thuộc tính của trạng thái chuyển động của PT trong cửa
1. Kéo transition và thả vào
sổ Properties:
Vehicle diagram
Dùng chuột kéo để kết
2. Double click vào transition
nối trạng thái Striggered by: Chuyển động của PT được kích hoạt theo yếu tố nào:
(để kích hoạt trạng thái
transition vào 2 trạng - Time out: Kết thúc thời gian chờ
vẽ/đồ họa) → vẽ mũi tên từ
thái cần kết nối. 2 điểm - Rate: Theo tỷ lệ xuất hiện
AtDistributor đến
màu xanh lá hiển thị - Condition: Theo điều kiện
MovingToRetailer (tương tự
cho trạng thái đã được -…
như trong MS Office)
kết nối đúng. Trong T/H này ta chọn Rate = 1 xe/hr (Mỗi xe sẽ chuyển động từ DC
đến nhà bán lẻ theo tần suất 1 xe/1hr

Tại ô “Action” gõ lệnh Java: moveTo(main.retailers1.random());


(sẽ giải thích lệnh này trên lớp)
Nguyen Van Truong 14 October 2023 Slide 43
Định nghĩa chuyển động của đoàn phương tiện

12 14
13

12. Áp dụng các bước tương tự để tạo thêm 1 state và đặt


tên là MovingToDistributor 15. Tạo ra 1 trạng thái chuyển đổi Transition từ
MovingToDistributor về AtDistributor (như hình vẽ)
13. Tạo ra 1 trạng thái (transition) chuyển từ
MovingToRetailer đến MovingToDistributor Đến đây ta đã hoàn thành 1 mô hình đơn giản bao gồm 1
trugn tâm phân phối, 1 nhà bán lẻ, và quá trình vận tải giữa
14. Trong cửa sổ thuộc tính Properties, chọn loại Triggered chúng. Tất nhiên quá trình đặt hàng và những thông số chi
by là “Agent arrival” → phương tiện quay trở lại DC. tiết chưa được thể hiện trong bài tập này (sẽ được trình
Trong ô Action gõ lệnh Java “moveTo(main.distributor);” (sẽ bày trong những phần tới).
giải thích lệnh trực tiếp trên lớp)

Nguyen Van Truong 14 October 2023 Slide 44


Kiểm tra mô hình và chạy thử mô phỏng
Click vào biểu tượng để xây
dựng mô hình (build model). Nếu có
1 lỗi, 1 cửa sổ thống kê các loại lỗi sẽ
hiện ra→ sửa lỗi theo hướng dẫn Cửa sổ mô phỏng sẽ hiển thị quá trình vận tải giữa DC và
Retailer như dưới đây

2
Click vào danh sách kéo xuống
của nút “Run” trên thanh công
cụ sẽ thấy mô hình hiện hành
đang hiển thị → click vào tên
mô hình đó thể thực hiện Run
simulation

Nguyen Van Truong 14 October 2023 Slide 45


Mô hình hóa đặt hàng của nhà bán lẻ

Nguyen Van Truong 14 October 2023 Slide 46


Mô hình đặt hàng: Cửa hàng bán lẻ đặt hàng DC
Định nghĩa thông tin của order
Chọn
Agent
type only
Kéo Agent
và thả vào 2 3
Main
workspace

Chọn
Agent 1

Nguyen Van Truong 14 October 2023 Slide 47


Mô hình đặt hàng: Cửa hàng bán lẻ đặt hàng DC
Định nghĩa thông tin của order 7
Đặt tên agent,
ví dụ,
Product_Order
4
5
Để mặc định
tạo agent từ
đầu 8

9 10
6
Tại bước này thông tin
Chọn add new Đặt tên Parameter, ví dụ: (cần có) của đơn hàng
để tạo 1 “Amount” (Khối lượng) đã định nghĩa xong.
trường thông Chọn kiểu dữ liệu, ví dụ,
tin mới “int” (số nguyên) Bước tiếp theo sẽ định
nghĩa thông tin cần lưu
trữ của Retailer

Nguyen Van Truong 14 October 2023 Slide 48


Mô hình đặt hàng: Cửa hàng bán lẻ đặt hàng DC
Định nghĩa thông tin của cần lưu trữ của Retailer
➢ Tiếp theo bước trước, tạo ra một trường thông số mới,
đặt tên là “retailer” để ghi nhớ trường thông tin thuộc
nhà bán lẻ
➢ Trong loại “Type” thông tin, chọn “other” → trong drop
11 down, chọn “Retailer”.
➢ Bước này AnyLogic sẽ hiểu trường thông tin vừa tạo sẽ
là thuộc tinh mới của nhà bán lẻ đã được mô hình hóa
ở các bước đã thực hiện trước đây.
➢ Cuối cùng chọn Finish để kết thúc. Cửa sổ
“Product_Order” sẽ hiện ra (như hình bên dưới)
9

13
Chọn add new
để tạo 1
12
trường thông
tin mới

Nguyen Van Truong 14 October 2023 Slide 49


Tạo sự kiện phát sinh yêu cầu hàng hóa
❑ Giả định nhà bán lẻ có nhu cầu mua hàng từ DC với tần suất phù hợp với nhu cầu. Ví dụ, mỗi
ngày 1 lần đặt/nhận hàng (phân bố số lần đặt hàng uniform)

3 Retailer
diagram
sẽ mở ra

Double
2
click

Nguyen Van Truong 14 October 2023 Slide 50


Tạo sự kiện phát sinh yêu cầu hàng hóa

Click 4
6

6
Kéo, thả
Event vào
5 Retailer
diagram 1. Name: Đặt tên của Event
Click tùy ý, ví dụ,
Delivery_Request
2. Trigger type: Chọn kiểu
kích hoạt đặt hàng là
Rate
3. Chọn mỗi ngày yêu cầu 1
lần
Sau các bước này, mỗi
Retailer được định nghĩa sẽ
yêu cầu hàng được chuyển
mỗi ngày 1 lần.
Nguyen Van Truong 14 October 2023 Slide 51
Tạo sự kiện phát sinh yêu cầu hàng hóa

7
Product_Order order = new
Product_Order(uniform_discr(10, 20), this);

Vehicle truck =
Trong khung Action gõ các dòng lệnh
getNearestAgentByRoute(filter(main.vehicles, v
này vào để cho AnyLogic biết cần
-> v.inState(Vehicle.AtDistributor))); phải làm gì để yêu cầu đặt hàng.

send(order, truck);

Nguyen Van Truong 14 October 2023 Slide 52


Giải thích ý nghĩa của các dòng lệnh
❑ Product_Order order = new Product_Order(uniform_discr(10, 20), this);
→ Tạo ra 1 yêu cầu mới (new) của Product_Order. Trong Product_Order có chứa 2 thông tin:
• uniform_discr(10, 20): Số lượng sản phẩm yêu cầu (theo luật phân bố đều uniform, biến rời rạc discrete).
Theo số lượng (Amount) và định dạng số nguyên (Int) đã tạo ở các bước trên.
• this: Tham chiếu đến diagram hiện hành (là Retailer) ta đang làm việc

❑ Vehicle truck = getNearestAgentByRoute(filter(main.vehicles, v -> v.inState(Vehicle.AtDistributor)));


→ getNearestAgentByRoute(): Tìm kiếm phương tiện (truck) gần nhất trong số các phương tiện trong quần
thể đã tạo.
→ filter(main.vehicles, v -> v.inState(Vehicle.AtDistributor)): Trong tất cả các PT tại main diagram, lọc các PT
ở trạng thái chờ tại DC.
→ “v ->”: Dùng để đặt tên các agent trong “main.vehicles”;
→ v.<condition> [“inState(Vehicle.AtDistributor)”]: Trong các quần thể “v” lựa chọn các PT thỏa mãn điều kiện
(các PT trong trạng thái chờ tại DC)

❑ send(order, truck);
→ Gửi yêu cầu (order) vừa tạo tới phương tiện (truck) được lọc trong số quần thể PT để đặt hàng

→ Công việc tiếp theo là phải lưu thông tin về đơn hàng vào phương tiện (agent vehicle)

Nguyen Van Truong 14 October 2023 Slide 53


Lưu thông tin đặt hàng (order) vào PT và mô hình hóa hành vi của PT

2 Trong cửa sổ Property, đặt tên cho variable là


1
“order” (lưu ý đặt chính xác tên của đơn hàng
Chọn hiển Hiển thị Vehicle ở bước trước)
thị Project diagram Chọn type là Product_Order
Chọn hiển
thị Palette
4 7

Drag Variable
2 vào màn hình
Vehicle diagram 6
Double click để
mở diagram
5
Vehicle
Chọn hiển
thị Agent

Nguyen Van Truong 14 October 2023 Slide 54


Hiệu chỉnh statechart của phương tiện

1
Chọn hiển
thị Project 4

5 3

2
Triggered by: chọn Message
Double click để Thực hiện tương tự bước 1-4 Message type: chọn Product_Order
mở diagram đối với transition này
Vehicle Action: nhập vào lệnh

→ Sau bước này, PT sẽ không chuyển động đến các moveTo(msg.retailer);


nhà bán lẻ (retailer) một cách ngẫu nhiên nữa. PT sẽ order = msg;
nhận thông tin từ retailer cụ thể và kích hoạt theo
yêu cầu này.
Nguyen Van Truong 14 October 2023 Slide 55
Khởi chạy mô hình mô phỏng vừa tạo để kiểm tra và “chơi” để hiểu
hơn mô hình Click vào biểu tượng để xây
dựng mô hình (build model).
1

2
Click vào danh sách kéo xuống 3
của nút “Run” trên thanh công Một màn hình mô phỏng hiện
cụ sẽ thấy mô hình hiện hành ra mô phỏng hoạt động vận
đang hiển thị → click vào tên chuyển/phân phối từ DC đến
mô hình đó thể thực hiện Run các nhà bán lẻ (retailer)
simulation
Nguyen Van Truong 14 October 2023 Slide 56
Khởi chạy mô hình mô phỏng vừa tạo để kiểm tra và “chơi” để hiểu
hơn mô hình
▪ Ta sẽ “chơi” với mô hình vừa tạo bằng cách thay đổi một số thông số của mô hình.
▪ Đầu tiên ta sẽ điều chỉnh các thông số của đoàn xe. Thực hiện như dưới đây:

2. Giảm đoàn phương tiện xuống còn 5 xe (Số


lượng PT có thể là số PT cần phải tìm trong
bài toán đầu tư hoặc tính toán chi phí tối
1. Tại cửa số Main, chọn agent ưu…)
Vehicle → Các thông số của 3. Điều chỉnh tốc độ cho sát với tốc độ thực
agent sẽ hiển thị tại tab tế (dữ liệu này thường được lấy từ khảo
Properties sát)

Nguyen Van Truong 14 October 2023 Slide 57


Khởi chạy mô hình mô phỏng vừa tạo để kiểm tra và “chơi” để hiểu
hơn mô hình
▪ Sau điều chỉnh, sử dụng chức năng build model (F7) để xây
dựng mô hình vừa hiệu chỉnh
▪ Chạy mô hình vừa tạo. Sau vài giây, ta có thể gặp lỗi “null”
như hình dưới.
▪ Ta nhớ lại dòng lệnh yêu cầu vận chuyển đã tạo ra để nhà
bán lẻ gửi cho PT: Các lệnh này tìm kiếm những PT “rảnh
rỗi” để yêu cầu vận chuyển. Khi ta giảm số lượng PT từ 25
xuống 5 khiến cho có những thời điểm tất cả các PT đều
phải làm việc. Khi đó yêu cầu vận chuyển sẽ thất bại.

▪ Để khắc phục vấn đề

Product_Order order = new Product_Order(uniform_discr(10, 20),


this);

Vehicle truck = getNearestAgentByRoute(filter(main.vehicles, v -


> v.inState(Vehicle.AtDistributor)));

send(order, truck);

Nguyen Van Truong 14 October 2023 Slide 58


Khởi chạy mô hình mô phỏng vừa tạo để kiểm tra và “chơi” để hiểu
hơn mô hình
▪ Để khắc phục vấn đề, trong diagram Retailer, chonj
Delivery_Request
▪ Bổ sung 1 dòng lệnh [if (truck != null) ] vào trước dòng lệnh
gửi yêu cầu [send(order, truck)]

▪ Ý nghĩa dòng lệnh bổ sung: Nếu trong nhóm những PT có


mặt ở DC có những PT rảnh rỗi thì sẽ gửi yêu cầu vận
chuyển

Product_Order order = new Product_Order(uniform_discr(10,


20), this);
Vehicle truck = getNearestAgentByRoute(filter(main.vehicles,
v -> v.inState(Vehicle.AtDistributor)));

if (truck != null)
send(order, truck);

Nguyen Van Truong 14 October 2023 Slide 59


Nguyễn Văn Trường, Ph.D.

Bộ môn Quy hoạch và Quản lý GTVT


Khoa Vận tải-Kinh tế
Trường ĐH Giao thông Vận tải
E-mail: ngvtruong@utc.edu.vn

Nguyen Van Truong 14 October 2023

You might also like