1. Trang chủ
  2. » Giáo án - Bài giảng

CHƯƠNG 5 BÀI TOÁN ĐƯỜNG ĐI VÀ BÀI TOÁN PHÂN CÔNG

16 275 4

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 823,57 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Sơ đồ các tuyến đường giao thông từ nhà máy đến nhà kho Giải bài toán Cách 1: Giải bằng cách vẽ hình Quan sát Hình 0.1, chúng ta thấy rằng nút nằm gần nút gốc nút 1-nhà máy sản xuất nh

Trang 1

CHƯƠNG 5 BÀI TOÁN ĐƯỜNG ĐI VÀ BÀI TOÁN PHÂN CÔNG

5.1 Bài toán tìm đường đi ngắn nhất

5.1.1 Giới thiệu bài toán

Bài toán tìm đường đi ngắn nhất là bài toán tìm lô ̣ trình di chuyển (của người, xe máy hay

hàng hóa) từ mô ̣t đi ̣a điểm này đến mô ̣t đi ̣a điểm khác trên hê ̣ thống nhiều đường giao thông có sẵn sao cho tổng chiều dài đường đi là ngắn nhất Nói cách khác, nó tìm đường đi ngắn nhất xuất phát từ mô ̣t điểm nguồn ban đầu đến mô ̣t chuỗi các điểm đích khác nhau Ví du ̣ như:

+ Tìm đường đi ngắn nhất từ nhà máy cung cấp bê tông tươi đến các công trường xây dựng + Tìm đường đi ngắn nhất để vâ ̣n chuyển công nhân, máy móc thiết bi ̣ từ công ty xây dựng đến các công trường xây dựng

+ Tìm đường đi nhắn nhất từ mô ̣t thành phố này đến mô ̣t thành phố khác trên hê ̣ thống đường giao thông

+ Tìm đường đi ngắn nhất từ nhà máy sản xuất đến nhà kho chứa hàng

+ Tìm đường đi ngắn nhất (thời gian ít nhất) từ nhà máy sản xuất đến nơi tiêu thu ̣ sản phẩm Thế vị của 1 nút: là khoảng cách bé nhất từ nút đầu (Nút 1) đến nút đó

Trong đó: j min i ij

i

uud

uj - Khoảng cách ngắn nhất từ nút 1 đến nút j với u1 = 0

ui - Khoảng cách ngắn nhất từ nút 1 đến nút i

dij - Khoảng cách giữa nút j và nút i trước nó

5.1.2 Phương pháp giải

5.1.2.1 Phương pháp giải thuật tiến

Bước 1: Tìm nút nằm gần nút gốc (nút xuất phát/ nút nguồn) nhất Ghi giá tri ̣ (khoảng cách,

thờ i gian, chi phí) từ nút xuất phát đến nút gần nhất đó Lă ̣p la ̣i bước này với n = 1, 2, 3… cho đến khi nút thứ n nằm gần nhất là nút đích

Bước 2: Thành lâ ̣p tâ ̣p nút đã khảo sát gồm nút gốc và nút gần nút gốc nhất đã xác đi ̣nh ở bước

1

Bước 3: Xác đi ̣nh tất cả các nút chưa khảo sát nằm gần tâ ̣p nút đã khảo sát

Tập nút đã khảo sát được nối trực tiếp đến 1 hoă ̣c nhiều nút chưa khảo sát nào đó sẽ cung cấp

1 ứ ng viên cho nút gần nhất thứ n

Bước 4: tìm nút nằm gần tâ ̣p nút đã khảo sát, và ghi khoảng cách ngắn nhất đến nút này từ nút

gố c (giá tri ̣ này go ̣i là thế vi ̣ của gốc)

Lưu ý: với mỗi nút đã khảo sát và các ứng viên của nó, cô ̣ng khoảng cách giữa chúng và

Trang 2

khoảng cách ngắn nhất từ nút gốc đến nút đã khảo sát đó Nút nào có khoảng cách ngắn nhất sẽ

là nút gần nhất thứ n và tuyến đường ngắn nhất sẽ là tuyến đường ta ̣o ra khoảng cách này

Bước 5: lă ̣p la ̣i bước 3 và bước 4

+ Tiếp tục lă ̣p la ̣i quá trình xác đi ̣nh thế vi ̣ của các nút trong ma ̣ng (bằng cách cô ̣ng thế vi ̣ của

nú t gần nhất và khoảng cách giữa 2 nút) theo công thức: j min i ij

i

uud

+ Giá tri ̣ thế vi ̣ ghi ở nút cuối cùng chính là khoảng cách ngắn nhất từ nút xuất phát đến nút cuối

cù ng

Ví dụ minh họa: Công ty sản xuất nội thất

Hàng ngày công ty phải vận chuyển các sản phẩm nội thất (bàn, ghế, tủ, …) từ nhà máy sản xuất đến nhà kho chứa hàng Giám đốc công ty, muốn tìm đường đi ngắn nhất từ nhà máy sản xuất (nút 1) đến nhà kho (nút 6) Cho biết sơ đồ mạng lưới đường giao thông được thể hiện như trong hình dưới (với chiều dài tuyến đường tính theo đơn vị km)

Hình 0.1 Sơ đồ các tuyến đường giao thông từ nhà máy đến nhà kho

Giải bài toán

Cách 1: Giải bằng cách vẽ hình

Quan sát Hình 0.1, chúng ta thấy rằng nút nằm gần nút gốc (nút 1-nhà máy sản xuất) nhất là nút 2, với khoảng cách là 100 km Như vậy, chúng ta có thể nối nút 1 và nút 2 và ghi vào giá trị

100 Khi đó nút 2 sẽ là nút vào tập đã khảo sát

Hình 0.2 Vòng lặp thứ nhất Tiếp theo, phải xác định tất cả các nút xuất phát từ tập nút đã khảo sát (nút 1 và nút 2) Đó chính là nút 3, 4 và 5

Chúng ta sẽ xác định đường đi ngắn nhất từ tập nút đã khảo sát (nút 1 và nút 2) đến nút 3, 4, 5

1

6

Nhµ m¸y

Nhµ kho

200 100

100

50

200

40

150

100 100

1

6

Nhµ m¸y

Nhµ kho

200 100

50

200

40

150 100

100 100

100

Trang 3

Có một đường đi xuất phát từ nút 1 là tuyến đường 1-3; và 3 đường đi xuất phát từ nút 2 là tuyến đường 2-3, tuyến đường 2-4 và tuyến đường 2-5 Đường đi có khoảng cách ngắn nhất theo tuyến đường 1-2-3 (100+50 = 150 km) Vì vậy, nút 3 sẽ trở thành nút vào trong tập nút đã khảo sát Và ta ghi giá trị 150 là thế vị của nút 3

Hình 0.3 Vòng lặp thứ hai Tương tự, lặp lại quá trình để xác định thế vị cho nút 4 và 5 Tập nút đã khảo sát lúc này gồm nút 1, 2 và 3 Tiếp theo, ta phải xác định nút tiếp theo vào trong tập nút đã khảo sát Lúc này, nút

4, 5 là các nút nằm gần tập nút đã khảo sát (xuất phát từ nút 2 và nút 3) Có 3 đường đi xuất phát

từ tập nút đã khảo sát (nút 1, 2, và 3) đến các nút 4 và nút 5 là các tuyến đường 2-4, 2-5 và 3-5 Khoảng các ngắn nhất là lộ trình 1-2-3-5 (150+40=190 km) Vì vậy, nút 5 sẽ là nút tiếp theo vào trong tập nút đã khảo sát

Hình 0.4 Vòng lặp thứ ba Tập nút đã khảo sát lúc này gồm các nút 1, 2, 3 và 5 Tiếp theo, ta phải xác định nút tiếp theo vào trong tập nút đã khảo sát Lúc này, nút 4 và nút 6 là các nút nằm gần tập nút đã khảo sát Có

3 tuyến đường đi xuất phát từ tập nút đã khảo sát (nút 1, 2, 3 và 5) đến các nút 4 và 6 là các tuyến đường 2-4, 5-4 và 5-6 Khoảng cách ngắn nhất là lộ trình 1-2-3-5-6 (190+100=290 km) Vì vậy, nút 6 sẽ là nút tiếp theo vào trong tập nút đã khảo sát

Như vậy, đường đi có khoảng cách ngắn nhất từ nút 1 đến nút 6 là 290 km theo tuyến đường 1-2-3-5-6

1

6

Nhµ m¸y

Nhµ kho

200

100

50

150

100 100 100

150

100

1

6

Nhµ m¸y

Nhµ kho

200 100

50

200

40

150

100

100

100

100

Trang 4

]=’’

kk,.,/p’ơ0;0

Hình 0.5 Vòng lặp thứ tư (cuối cùng)

Cách 2: Giải bằng cách lập bảng

n

Tập nút đã khảo

sát nối trực tiếp

với nút chưa khảo

sát

Nút chưa khảo sát

Tuyến đường khảo sát

Tổng khoảng cách (thế vị nút chưa khảo sát)

Khoảng cách ngắn nhất

Nút gần nhất thứ n

Đoạn nút nối

1

{1}

1

1

2

3

1-2 1-3

100

200

2

{1, 2}

1

2

2

2

3

3

4

5

1-3 2-3 2-4 2-5

200

150

300

200

3

{1, 2, 3}

.l.2

2

3

4

5

5

2-4 2-5 3-5

100+200=300

200 150+40=190

2

{1, 2, 3, 5}

2

5

5

4

4

6

2-4 5-4 5-6

300 190+150=340 190+100=290

5.1.2.2 Giải bằng thuật toán Dijkstra

• Giới thiệu

Giải thuật Dijkstra được sử dụng để tìm đường đi ngắn nhất từ nút nguồn và các nút khác trong mạng, dùng cho cả bài toán có hay không có mạch vòng Giải thuật có thể áp dụng cho các bài toán mạng có vòng

• Giải thuật Dijkstra

Bước 1: Biểu diễn sơ đồ lên bảng

Bước 2: Tiến hành giải thuật

1 (Khởi đầu) Đánh dấu màu nút i

1

6

Nhµ m¸y

Nhµ kho

200

100

50

150

100 100 100

290

100

Trang 5

Đặt v(i)=0 và đối với mỗi nút j khác so với nút i thì đặt v(j) bằng khoảng cách từ nút i tới j

2 (Dừng thuật toán): Nếu tất cả các nút đều được đánh dấu màu

3 Ngược lại, giữa các nút không được đánh màu, chọn một nút k trong đó v(k) là nhỏ

nhất.đánh dấu màu nút k đó Ở các nút không được đánh màu j, so sánh v(j) và v(k)+c(k,j) sau đó chọn giá trị nhỏ hơn ghi để thay thế v(j)

Bước 3: Dựa vào các nút đã được đánh màu tìm đường đi ngắn nhất từ nút i đến tất cả các nút khác j

Ví dụ minh họa: Công ty sản xuất nội thất

Từ sơ đồ ta chuyển lên bảng như sau

Như vậy ta có

1

6

Nhµ m¸y

Nhµ kho

200

100

10 0

50

40

150

100

3 2

6

5

300

150

100

5 6

4

Trang 6

5.1.2.3 Giải bằng Quy hoạch tuyến tính nhị phân

Bài toán tìm đường đi ngắn nhất có thể được xem như là một dạng đặc biệt của bài toán trung chuyển với một nguồn có cung bằng 1, và một đích có cầu bằng 1, và một số điểm trung chuyển Bài toán này có thể được mô hình hóa và giải bằng QHTT nhị nguyên

Các biến quyết định trong bài toán sẽ cho biết tuyến đường nào được lựa chọn trong sơ đồ mạng lưới với mục tiêu là cực tiểu khoảng cách (chi phí)

Các ràng buộc sẽ xác định số lượng đơn vị (0 hoặc 1) đi vào một nút bằng với số đi ra khỏi nút

đó

Các biến được định nghĩa như sau:

xij – phương án lựa chọn tuyến đường từ nút i đến nút j

i = 1, 2, 3, 4, 5 ; j = 2, 3, 4, 5, 6

xij – 1 nếu tuyến đường ij được lựa chọn và ngược lại xịj = 0 nếu tuyến đường ij không được lựa

• Mô hình QHTT của bài toán:

Các biến:

Binary

ij

x

Hàm mục tiêu:

Các ràng buộc

Bởi vì điểm khởi đầu là nút 1, chúng ta sẽ không tính các biến đi từ nút 2 hoặc nút 3 trở về nút

1 Tương tự như vậy, bởi vì nút 6 là nút cuối, chúng ta sẽ không kể đến các biến bắt đầu tại nút 6 Khi xem nó là bài toán trung chuyển, nút nguồn gốc (nút 1) phải có một đơn vị vận chuyển ra

từ nó Do đó, ta có ràng buộc: x12x131

Nút đến cuối cùng (nút 6) phải có một đơn vị vận chuyển đến nó, do đó ta có ràng buộc:

xx

Mỗi nút trung gian sẽ có một ràng buộc là lượng đi vào nút phải bằng lượng đi ra khỏi nút đó Đối với nút 2, điều này sẽ là: x12 x32 x23x24x25

Hay:x12x32x23x24x250

Các ràng buộc ở nút khác được xây dựng tương tự

Ràng buộc tại nút 3:x13x23x32x350

Trang 7

Ràng buộc tại nút 4:x24 x54x42x45x46 0

Ràng buộc tại nút 5:x25x35x45x52 x53x54x56 0

LINGO

Lời giải của bài toán: x12 x23 x35 x56 1

Vậy lộ trình ngắn nhất là: 1-2-3-5-6 với khoảng cách = 290km

5.2 Bài toán phân công

5.2.1 Giới thiệu bài toán

Bài toán phân công là mô ̣t da ̣ng đă ̣c biê ̣t của bài toán vâ ̣n tải và bài toán quy hoa ̣ch tuyến tính

Bài toán phân công đươ ̣c dùng để phân bố nhân sự cho dự án, phân công cán bô ̣ giám sát đến

từ ng công trường, giao hơ ̣p đồng cho các nhà thầu, phân công lao đô ̣ng… sao cho tổng chi phí hay thờ i gian thực hiê ̣n công viê ̣c là ít nhất, tổng tiền lời hay số lượng sản phẩm làm ra là nhiều nhất Đặc điểm quan tro ̣ng của bài toán phân công là chỉ có mô ̣t công viê ̣c hay mô ̣t người được phân công cho một máy, mô ̣t công trường hay mô ̣t dự án duy nhất

Mỗi bài toán phân công có mô ̣t ma trâ ̣n chi phí (giờ công/ tiền lời hay số lượng sản phẩm) gồ m m dòng và n cô ̣t Có m bô ̣ phâ ̣n đươ ̣c phân công (i = 1… m tương ứng với số dòng) và n đối tươ ̣ng cần được thực hiê ̣n (j = 1… n tương ứng với số cô ̣t) Mỗi bô ̣ phâ ̣n i được phân công thực

hiện mô ̣t đối tươ ̣ng j với chi phí (giờ công/ tiền lời hay số lượng sản phẩm) là cij

5.2.2 Phương pháp giải

5.2.2.1 Phương pháp giải Hungarian

Thuật toán Hungarian của bài toán phân công được áp du ̣ng cho trường hợp cực tiểu hàm mu ̣c tiêu (tổng chi phí hay thời gian thực hiê ̣n công viê ̣c nhỏ nhất) và ma trâ ̣n chi phí hay giờ công có số dòng bằng số cô ̣t (m = n)

Thuật toán Hungarian của bài toán phân công dựa trên tính chất rút giảm ma trâ ̣n là khi trừ đi hay cộng thêm các giá tri ̣ thích hợp vào các phần tử ma trâ ̣n chi phí ta sẽ có mô ̣t ma trâ ̣n chi phí

Trang 8

cơ hô ̣i Chi phí cơ hô ̣i là giá tri ̣ thiê ̣t ha ̣i khi có sự phân công chưa phải là tối ưu Nếu ta có thể

rú t giảm ma trâ ̣n đến khi có các phần tử có giá tri ̣ không (“0”) ở mỗi dòng và cô ̣t thì có thể đa ̣t đươ ̣c sự phân công tối ưu vào các ô có giá tri ̣ không (“0”) đó

Thuật toán Hungarian của bài toán phân công được thực hiê ̣n qua các bước sau:

Bước 1: Xác đi ̣nh ma trâ ̣n chi phí cơ hô ̣i bằng cách:

a- Trừ giá tri ̣ chi phí của mo ̣i phần tử trong mỗi dòng cho giá tri ̣ chi phí nhỏ nhất trong dòng ấy

b- Trừ giá tri ̣ chi phí của mo ̣i phần tử trong mỗi cô ̣t cho giá tri ̣ chi phí nhỏ nhất trong cô ̣t ấy

Bước 2: Kiểm tra điều kiê ̣n tối ưu: vẽ mô ̣t số tối thiểu các đường thẳng trên dòng hay cô ̣t đi qua

mọi số không (“0”) của bảng Nếu như số đường thẳng ít hơn số dòng/ cô ̣t, thực hiê ̣n bước 3 Nếu như số đườ ng thẳng bằng với số dòng/cô ̣t thì có thể thực hiê ̣n sự phân công tối ưu như sau: a- Kiểm tra các dòng và các cô ̣t có duy nhất mô ̣t giá tri ̣ không (“0”) Thực hiê ̣n sự phân công cho các ô đó

b- Loại bỏ dòng và cô ̣t có chứa số không (“0”) đã phân phối và tiếp tu ̣c trở la ̣i tìm kiếm các

dòng và cô ̣t có duy nhất mô ̣t giá tri ̣ không “(0”) để thực hiê ̣n sự phân công

Bước 3: Xây dựng ma trâ ̣n chi phí cơ hô ̣i mới: cho ̣n giá ti ̣ nhỏ nhất chưa nằm trên đường thẳng

Trừ giá tri ̣ chi phí của mo ̣i phần tử không nằm trên các đường thẳng cho giá tri ̣ nhỏ nhất ấy và

cộng giá tri ̣ nhỏ nhất ấy với giá tri ̣ nằm trên giao điểm của hai đường thẳng Trở la ̣i Bước 2

Ví dụ 1:

Một xưởng gia công cốp pha có 4 người thợ được phân công làm 4 viê ̣c Tiền công để làm xong từ ng viê ̣c của mỗi người thơ ̣ như trong Bảng 0.1 Đề nghi ̣ phân công sao cho tổng chi phí lao đô ̣ng là nhỏ nhất

Bảng 0.1Tiền công khi phân công từng người thợ thực hiện từng phần việc (ngàn đồng)

trong hàng

Sử du ̣ng thuâ ̣t toán Hungarian để giải bài toán như sau:

Bước 1: Xác đi ̣nh ma trâ ̣n chi phí cơ hô ̣i

Trừ giá trị chi phí của mọi phần tử cho giá trị nhỏ nhất trong dòng (hàng)

Giải thích: Giả sử ta quyết đi ̣nh phân công người thợ A1 làm công viê ̣c B4 Bảng 0.1 cho thấy chi phí nhân công chi sự phân công ấy là 14 ngàn đồng Đây không phải là sự phân phối tốt nhất

Trang 9

vì người thơ ̣ A1 có thể làm viê ̣c B3 chỉ với chi phí 8 ngàn đồng Vâ ̣y, sự phân công người thơ ̣ A1 làm viê ̣c B3 có chi phí cơ hô ̣i là 6 = 14 – 8 (ngàn đồng), đây là số tiền tổn thất vì sự phân công này thay vì cho ̣n sự phân công tiết kiê ̣m nhất Tương tự, do người thợ A1 làm viê ̣c B3 là

sự phân phối tốt nhất nên chi phí cơ hô ̣i cho sự phân công này là 8 – 8 = 0 (ngàn đồng) Kết quả

là ta đã tính được chi phí cơ hô ̣i cho mo ̣i phần tử của mỗi dòng như trong Bảng 0.2

Bảng 0.2Chi phí cơ hội tính theo dòng (ngàn đồng)

Giá trị nhỏ nhất

Trừ giá trị chi phí của mọi phần tử cho giá trị nhỏ nhất trong cột

Giải thích: Đố i vớ i người thơ ̣ A1 thì tốt nhất là làm viê ̣c B3 nhưng đối với viê ̣c thực hiê ̣n công việc B3 đây không phải là sự phân công kinh tế nhất vì người thợ A3 có thể làm viê ̣c này với chi phí chỉ là 7 (ngàn đồng) Hay nói cách khác, nếu chúng ta xem xét cách thức phân công theo công việc thay vì theo người thì sẽ tính được chi phí cơ hô ̣i cho mo ̣i phần tử của mỗi cô ̣t

Bảng 0.3Chi phí cơ hội tính theo cột (ngàn đồng)

Như vâ ̣y, để thực hiê ̣n bước 1 của thuâ ̣t toán phân công thì phải xác lâ ̣p ma trâ ̣n chi phí cơ hô ̣i tổng thể là ma trâ ̣n chi phí theo dòng và cô ̣t Thực hiê ̣n phần b của bước 1 bằng cách lấy các giá trị chi phí trong mỗi cô ̣t trừ cho giá tri ̣ chi phí nhỏ nhất trong cô ̣t đó (Bảng 0.3) Cô ̣t 1, 2 và 3 của

bảng Bảng 0.3 giống như bảng Bảng 0.2 vì giá tri ̣ nhỏ nhất trong cô ̣t là không (“0”)

Bước 2 Kiểm tra điều kiê ̣n tối ưu

Nhìn vào Bảng 0.3, ta thấy có đến sau sự phân công có chi phí cơ hô ̣i bằng không (“0”) Vẽ

các đường thẳng ngang và đứng đi qua tất cả các giá tri ̣ không (“0”) này thì cần đến 4 đường thẳng (Bảng 0.4) Như vậy số đường thẳng bằng với số dòng của ma trâ ̣n và Bảng 0.4 thỏa mãn

Trang 10

điều kiê ̣n tối ưu

Bảng 0.4Kiểm tra điều kiện tối ưu

Bắ t đầu thực hiê ̣n sự phân công với dòng hay cô ̣t chỉ có mô ̣t số (“0”) duy nhất Dòng thứ nhất

vớ i giá tri ̣ không (“0”) duy nhất nằm ở cô ̣t công viê ̣c B3 Thực hiê ̣n sự phân phối vào ô (A1B3)

này và vẽ những đường thẳng loa ̣i bỏ dòng và cô ̣t đã có sự phân phối Từ các dòng và cô ̣t chưa đươ ̣c loa ̣i bỏ la ̣i tiếp tu ̣c tìm kiếm dòng thứ 3 có mô ̣t số không (“0”) duy nhất để thực hiê ̣n sự phân phố i vào ô (A3B2) Cứ thế tiếp tu ̣c cho đến khi phân công mỗi người mô ̣t viê ̣c

Bảng 0.5Bảng phân công

Chi phí nhân công tổng cô ̣ng cho sự phân công này đươ ̣c tính toán từ bảng ma trâ ̣n chi phí ban đầu như sau:

Bảng 0.6Bảng phân công và chi phí

Phân công người thợ Làm việc Tiền công

A1 A2 A3 A4

B3 B4 B2 B1

8

8

8

6 Tổng tiền công (ngàn đồng) 22

Ví dụ 2:Một công ty xây dựng có 3 kỹ sư được phân công phu ̣ trách 3 dự án Chi phí để thực hiện từng dự án của mỗi kỹ sư như Bảng 0.7 Đề nghi ̣ phân công sao cho tổng chi phí ít nhất

Bảng 0.7Chi phí khi phân công từng kỹ sư

An Cư An Điền An Hòa

Ngày đăng: 04/02/2018, 20:38

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w