You are on page 1of 10

Chương 7

Quy Hoạch Nguyên –


Quy Hoạch Động

GVGD: ThS. Võ Thị Ngọc Trân

C7. Quy Hoạch Nguyên – Quy Hoạch Động


1. Quy Hoạch Nguyên
2. Quy Hoạch Động

1
1. Quy Hoạch Nguyên
1.1. Giới thiệu BT quy hoạch nguyên
n
 Xét BT QHTT ở dạng chuẩn
Min Z  cx
j 1
j j
n
RB : a
j 1
ij x j  bi  0  i  1, 2, ..., m

xj  0  j  1, 2, ..., n
 Nếu tất cả các biến của BT là số nguyên, thì BT có dạng QH
nguyên thuần túy (Pure Integer Programming).
 Nếu một vài biến của BT là số nguyên, thì BT có dạng QH
nguyên hỗn hợp (Mixed Integer Programming).
 Nếu các biến của BT chỉ nhận các giá trị nguyên 0 hoặc 1, thì BT
có dạng QH nguyên 0-1 (Zero-One Integer Programming).
3

1. Quy Hoạch Nguyên (tt1)


1.2. Các ví dụ về BT quy hoạch nguyên
 VD 7.1: BT Knapsack 0-1 (BT người mang vác hàng)
 VD 7.2: BT hoặc cái này hoặc cái kia (Either-Or Problem)
 VD 7.3: BT lập thứ tự công việc (Sequencing Problem)
 VD 7.4: BT thiết lập kho (Warehouse Problem)
 VD 7.5: BT người giao hàng (Traveling Salesman Problem)

2
1. Quy Hoạch Nguyên (tt2)
VD 7.1: BT Knapsack 0-1 (BT người mang vác hàng)
 Giả sử 1 người phải lựa chọn việc đem theo một số hàng hóa trong n
mặt hàng đang có. Mặt hàng thứ j có giá trị cj và trọng lượng aj.
 VĐ: người ngày phải lựa chọn sao cho giá trị của các mặt hàng mang
theo là tối đa trong điều kiện giới hạn trọng lượng mang theo là K.
 Giả sử Biến QĐ của BT
1 neáu maët âaø
ná j ñö ôuc câoun
x
n 0 neáu maët âaø
ná j kâoâná ñö ôuc câoun
Max Z  cx j 1
j j

n
RB : a
j 1
j xj  K

x j  0 âoaëc 1 j
5

1. Quy Hoạch Nguyên (tt3)


VD 7.2: BT hoặc cái này hoặc cái kia (Either-Or Problem)
 BT QHTT chỉ 1 trong 2 RB tùy từng TH

a j
1j x j  b1 (a) hay a
j
2j x j  b 2 (b)
Sử dụng Biến nguyên 0-1 y với 2 số dương M1, M2 đủ lớn sao cho:
a
j
1j x j  b1  M1 y (1)
Nếu y = 0, thì RB (1).
Nếu y = 1, thì RB (2).
 a 2jx j  b 2  M 2 (1 - y) (2)
j

m ràng buộc gi(x) ≤ 0; i = 1, 2, …, m và chỉ có k RB thỏa mãn.


Sử dụng m biến nguyên 0-1 yi; i = 1, 2, …, m và m số dương đủ
lớn Mi; i = 1, 2, …, m.
g i (x)  M i y i i  1,2,..., m
y1  y 2  ...  y m  m  k
y i  0 âoaëc1 i  1,2,..., m
6

3
1. Quy Hoạch Nguyên (tt4)
VD 7.3: BT lập thứ tự công việc (Sequencing Problem)
 Giả sử Thời gian để hoàn thành công việc i là pi và Thời điểm mà ở đó công
việc i được bắt đầu là ti.
 So sánh giữa 2 công việc i và j, có 2 TH
1. Công việc i được thực hiện trước công việc j: tj≥ti+pi
2. Công việc j được thực hiện trước công việc i: ti≥tj+pj
 Để biểu diễn 2 khả năng của 1 cặp công việc i, j, với số dương đủ lớn Mij và
biến nguyên 0-1 yij,
yij = 1, nếu công việc i được thực hiện trước công việc j và ngược lại.
 RB về thứ tự nêu trên:
M ij y ij  t i  t j  p j
M ij (1  y ij )  t j  t i  p i
y ij  0 âoaëc 1
7

1. Quy Hoạch Nguyên (tt5)


VD 7.4: BT thiết lập kho (Warehouse Problem)
yi = 1 nếu kho được thiết lập tại địa điểm i, nếu không thì yi = 0; i = 1,2,…,m.
fi: Chi phí thiết lập kho hàng tại địa điểm i.
xij: Lượng hàng vận chuyển từ kho tại địa điểm i đến điểm tiêu thụ j; j = 1,2,…,n.
cij: Chi phí vận chuyển 1 đơn vị hàng hóa từ kho hàng tại điểm i đến điểm j.
dj: Nhu cầu của điểm tiêu thụ j.
si: Khả năng cung cấp của kho hàng được thiết lập tại địa điểm i.
m n m
Min Cost   c ij x ij   f i y i
i 1 j1 i 1
n
RB : x
j1
ij  si yi i

x
i 1
ij  dj j

x ij  0 i, j
yi  0 hay 1 i 8

4
1. Quy Hoạch Nguyên (tt6)
VD 7.5: BT người giao hàng (Traveling Salesman Problem)
Người giao hàng phải giao hàng cho n địa điểm C1, C2,…, Cn hàng ngày. Bắt đầu
từ C1 và phải quay trở lại đây sau khi làm xong công việc. Cij là khoảng cách
giữa 2 điểm giao hàng i và j.
BT: Người giao hàng phải lựa chọn đường đi như thế nào để tổng quảng đường là
n n
ngắn nhất.
Min 
i1 j 1
c ij x ij

n
RB : j1
x ij  1 i


i 1
x ij  1 j

u i  u j  nx ij  n -1 i, j  2,3,..., n; i  j
x ij  0 hay 1  i, j
u i  0 hay nguyên  i  2,3,..., n
9

1. Quy Hoạch Nguyên (tt7)


 BT người giao hàng có dạng

n n
Min 
i1 j 1
c ij x ij

n
RB : j1
x ij  1 i

i 1
x ij  1 j

u i  u j  nx ij  n 1 i, j  2,3,..., n; i  j
x ij  0 âoaëc 1  i, j
u i  0 vaø náuyeân  i  2,3,..., n

10

5
1. Quy Hoạch Nguyên (tt8)
1.3. Phương pháp giải BT quy hoạch nguyên
VD 7.6: Xét BT QHTT
Max Z  5x 1  8x 2
RB : 5x 1  3x 2  30
5x 1  9x 2  45
x 1 , x 2  0 vaønáuyeân
Nếu bỏ qua yêu cầu về tính nguyên của biến, thì nghiệm của BT là
x1 = 4,5; x2 = 2,5. Và làm tròn thành biến nguyên x1 = 5; x2 = 3.
Nhưng Nghiệm tối ưu thực sự của BT quy hoạch nguyên này là
x1 = 0; x2 = 5 (khác với x1 = 5; x2 = 3).

11

1. Quy Hoạch Nguyên (tt9)


1.3. Phương pháp giải BT quy hoạch nguyên
 Giải BT quy hoạch nguyên khá phức tạp vì tùy
thuộc vào Bản chất BT (thuần túy, hỗn hợp hay 0-
1), Số lượng các biến nguyên và Cấu trúc đặc thù.
 Có 2 pp giải BT quy hoạch nguyên:
• Giải thuật mặt cắt (Cutting Plane Algorithm)
• Giải thuật phân nhánh và chặn (Branch and Bound
Algorithm).
12

6
2. Quy Hoạch Động
 BT quy hoạch động là 1 dạng BT tối ưu hóa, mà trong đó việc tìm ra
giải pháp tối ưu của BT được thực hiện thông qua việc tìm nghiệm tối
ưu của 1 chuỗi các BT con có liên quan đến BT ban đầu.
 Quy hoạch động là 1 pp giải quyết tối ưu theo từng giai đoạn, thích
hợp với các QĐ theo tuần tự thời gian hoặc không gian.
 BT quy hoạch động cho biết Nghiệm tối ưu theo từng giai đoạn.
Việc liên kết các giai đoạn của BT quy hoạch động được thực hiện
thông qua phép đệ quy. Tùy thuộc vào Bản chất của BT mà phương
trình đệ quy tương ứng sẽ được thiết lập ở dạng xuôi dòng
(Forward Recursive Equation) hoặc ngược dòng (Backward
Recursive Equation).

13

2. Quy Hoạch Động (tt1)


 VD 7.9: Tìm đường đi ngắn nhất từ Nút 1 đến Nút 9, với thời gian di
chuyển được ghi trên từng cung đường

12 7
2 5 7
1 4 15 3
6
7 10
1 4 8 9
3 3 7
2 15
3 6
4

14

7
2. Quy Hoạch Động (tt2)
Giải BT bằng đệ quy ngược dòng
 Giả sử
• fi: Thời gian di chuyển nhỏ nhất từ nút i đến nút 9.
• tij: Thời gian di chuyển trên cung (i, j).
 Trên cung (i, j) bất kỳ,
f i  t ij  f j i  9; j
Do vậy: f i  min {t ij  f j} i9
j
 Đường đi ngắn nhất từ i đến 9, buộc phải qua 1 nút
nào đó, nên
f i  min {t ij  f j} i9
j

15

2. Quy Hoạch Động (tt3)


Giải BT bằng đệ quy ngược dòng
 f9 = 0
 f8 = t89 + f9 = 10 + 0 = 10
 f7 = t79 + f9 = 3 + 0 = 3
t  f  7  10
 f 6  min  68 8   min    15
t 69  f 9  15  0

 f5 = t57 + f7 = 7 + 3 = 10 12 7
2 5 7
1 4 15 3
6
7 10
1 4 8 9
3 3 7
2 15
3 6
4
16

8
2. Quy Hoạch Động (tt4)
Giải BT bằng đệ quy ngược dòng
 t 45  f 5  4  10
t  f  3  15 t  f   6  14 
   
f 4  min  46 6   min    14 f 2  min  24 4   min    20
t
 47 7  f  15  3   t 25  f 5  12  10
 t 48  f 8  7  10
t  f  1  20 
t  f  3  14  f1  min  12 2   min    19
f 3  min  34 4   min    17  t13  f 3  2  17
t 36  f 6  4  15
12 7 Đường đi ngắn nhất từ
2 5 7
1 4 15 3 1 đến 9: 1-3-4-5-7-9, với
6
7 10 tổng thời gian là 19.
1 4 8 9
3 3 Đường đi ngắn nhất từ
2 7
15 bất kỳ nút nào đến nút
3 6
4 9.
17

2. Quy Hoạch Động (tt2)


Giải BT bằng đệ quy xuôi dòng
 Giả sử
• fi: Thời gian di chuyển nhỏ nhất từ nút 1 đến nút i.
• tij: Thời gian di chuyển trên cung (i, j).
 Trên cung (i, j) bất kỳ,
f j  t ij  f i j  1; i
Do vậy: f j  min {t ij  f i } j1
i
 Đường đi ngắn nhất từ 1 đến j, buộc phải qua 1 nút
nào đó, nên
f j  min {t ij  f i } j1
i

18

9
2. Quy Hoạch Động (tt3)
Giải BT bằng đệ quy xuôi dòng
f1 = 0 12 7
2 5 7
1 4 15 3
6
f2 = t12 + f1 = 1 + 0 = 1 7 10
1 4 8 9
3 3 7
f3 = t13 + f1 = 2 + 0 = 2 2 15
3 6
4
t  f   6  1
f 4  min  24 2   min  5
 t 34  f 3  3  2

t  f  12  1
f 5  min  25 2   min  9
t 45  f 4  45

19

2. Quy Hoạch Động (tt4)


Giải BT bằng đệ quy xuôi dòng
t  f  4  2 t  f  7  5
f 6  min  36 3   min  6 f 8  min  48 4   min    12
t  f
 46 4  3  5  t  f
 68 6  7  6
t 69  f 6   15  6 
t  f  15  5    
f 7  min  47 4   min    16 f 9  min t 79  f 7   min  3  16   19
 t 57  f 5  79 t  f  10  12
 89 8   
12 7 Đường đi ngắn nhất từ
2 5 7
1 4 15 3 1 đến 9: 1-3-4-5-7-9, với
6
7 10 tổng thời gian là 19.
1 4 8 9
3 3 Đường đi ngắn nhất từ
2 7
15 nút 1 đến bất kỳ nút
3 6
4 nào trong mạng.
20

10

You might also like