MỞ ĐẦU
Nhiều vấn đề cần giải quyết trong đời sống hàng ngày dẫn đến bài toán
tối ưu, chẳng hạn như trong sản xuất cần giảm chi phí, tăng giá trị sử dụng,
lập lịch sản xuất, .... Vì vậy, lớp bài toán tối ưu đã được quan tâm nghiên cứu
từ lâu và đã đạt được nhiều kết quả. Tuy vậy, các kết quả đạt được chủ yếu là
lớp bài toán tối ưu một mục tiêu; đối với lớp bài toán tối ưu đa mục tiêu còn
gặp nhiều khó khăn.
Các bài toán tối ưu đa mục tiêu là những bài toán có ứng dụng thực tiễn
trong rất nhiều lĩnh vực của cuộc sống. Song nhiều khi các mục tiêu cần đạt
được có hàm biểu diễn tương tự nhau mà mục tiêu cần đạt lại ngược nhau.
Một cách tổng quát có thể nói không có lời giải tối ưu cho những bài toán
dạng này, một cách đơn giản vì các lời giải không so sánh được với nhau. Có
thể lời giải này tốt ở mục tiêu này lại kém ở mục tiêu kia. Từ đó xuất hiện
khái niệm “trội” đối với các lời giải và dẫn đến khái niệm “tối ưu Pareto”.
Đề tài này hướng tới việc phát triển những kỹ thuật tính toán, chủ yếu
là tính toán tiến hoá và các thuật toán lai trong tối ưu đa mục tiêu và cố gắng
gắn nó với các mô hình bài toán cụ thể.
Được sự đồng ý của Hội đồng Khoa học trường Đại học Công Nghệ
Thông Tin và Truyền Thông – Đại học Thái Nguyên, cùng sự hướng dẫn
của TS Vũ Mạnh Xuân, em chọn đề tài khóa luận “Kết hợp một số
phương pháp Heuristic giải bài toán tối ưu đa mục tiêu” nhằm nghiên
cứu một phương pháp tiếp cận khác để giải bài toán tối ưu đa mục tiêu đó
là kết hợp một số phương pháp như giải thuật di truyền kết hợp với chiến
lược tiến hoá và giải thuật mô phỏng tôi luyện.
Mục đích nghiên cứu: tìm hiểu bài toán, một số phương pháp giải bài
toán tối ưu đa mục tiêu, tìm hiểu giải thuật di truyền, chiến lược tiến hoá và
1
giải thuật mô phỏng tôi luyện trên cơ sở đó kết hợp các phương pháp này để
phương án tốt nhất thoả mãn nhiều mục tiêu khác nhau. Đó là bài toán tối
ưu đa mục tiêu. Có thể mô tả mô hình toán học của bài toán đa mục tiêu là:
Có k hàm mục tiêu ký hiệu là Y 1, Y2, …, Yk với Yi : D R là những
hàm; mỗi X = (x 1, …, xn) ∈ D (D ⊂ Rn) gọi là một phương án; D gọi là tập
các phương án chấp nhận được; Vấn đề đặt ra là phải tìm được một X 0 làm
tối ưu hoá (cực đại hoặc cực tiểu) đồng thời các giá trị hàm Y 1, Y2, …, Yk.
Nếu tìm được X 0 như vậy thì X 0 gọi là phương án tối ưu. Song khả năng
tồn tại X0 như vậy là rất hiếm vì các hàm mục tiêu Y i thường không hoàn
toàn độc lập với nhau. Chính vì vậy việc nghiên cứu lớp bài toán tối ưu đa
mục tiêu là rất kho khăn mặc dù có ý nghĩa thực tiễn cao.
1.2. Một số khái niệm
Có thể phát biểu bài toán tối ưu đa mục tiêu tổng quát như sau:
Trong đó:
Y( x ) → min(max)
(1.1)
x ∈ D ⊂ Rn
(1.2)
Y ( x) = (Y1 ( x ),..., Yk ( x)) ∈ R k gọi là vectơ mục tiêu.
x gọi là phương án (vectơ quyết định).
D gọi là tập các phương án.
Y1 ,..., Yk gọi là các hàm mục tiêu.
3
Y( x ) ≠ Y( y ) , y còn được gọi là bị trội bởi x. Nếu ngược lại, y được gọi là
không bị trội bởi x.
(b) Một phương án x ∈ Rn được gọi là nghiệm Pareto tối ưu ( hay
điểm Pareto) nếu không có y ∈ Rn mà y trội hơn x. Tập tất cả các nghiệm
Pareto tối ưu gọi là tập Pareto tối ưu.
(c) Một phương án x ∈ Rn là nghiệm Pareto tối ưu yếu nếu không tồn
tại y ∈ Rn mà Y( y ) < Y( x ) .
Nếu bài toán tối ưu đa mục tiêu có nghiệm được gọi là tối ưu theo một
cách định nghĩa nào đó thì không phụ thuộc vào cách định nghĩa đã chọn,
nghiệm tối ưu đó phải là một phương án Pareto tối ưu (tức là, nghiệm đó phải
thuộc tập Pareto tối ưu).
Trên thực tế, việc tìm tập lời giải Pareto của các bài toán tối ưu đa mục
tiêu là khó khăn và thường ít thực hiện được. Vì vậy, một số chiến lược tìm
kiếm ngẫu nhiên (như thuật toán tiến hóa, phương pháp vùng cấm, mô phỏng
luyện kim,…) đã được phát triển. Măc dù các chiến lược này thường không
đảm bảo xác định chính xác tập tối ưu Pareto, nhưng đều cố gắng tìm ra một
tập xấp xỉ tốt, tức là 1 tập các phương án mà vectơ mục tiêu không quá xa
mục tiêu tối ưu Pareto.
Định nghĩa 1.2
k
Cho ε = ( ε1 ,...,ε k ) ∈ R+
(a) Với x, y∈Rn . x được gọi là ε − trội hơn y ( kí hiệu x p ε y )nếu
(i) Yi ( x ) − ε i ≤ Yi ( y )
Và (ii) Y j ( x ) − ε j < Y j ( y )
∀ i =1,..., k
tại ít nhất một j ∈ { 1,...,k } .
6
Bảng 1.1: Bảng thưởng phạt.
Hàm mục tiêu
Phương án
X1
Y1
Y2
Y10
Y2(X1)
X2
…
Yk
Yk(X1)
Y20
…
Xk
Yk0
1.3.2. Phương pháp tìm nghiệm có khoảng cách ngắn nhất đến nghiệm lý
tưởng
Ở đây giá trị hàm lợi ích tỉ lệ với khoảng cách từ phương án x ∈ D đến
cái gọi là nghiệm lý tưởng. Phương án x1 x2 khi và chi khi x1 gần nghiệm lý
tưởng hơn x2.
Giả sử x1, x2 ∈ Rn. Khoảng cách giữa hai điểm x1, x2 là một số dα xác
định bởi
α
n 1
2
dα = ∑ x i − x i
i =1
Với x1= (x11,…, x1n); x2 = (x21,…, x2n)
α là tham số (α >=1)
Số dα có tính chất: d∞ ≤ dα ≤ d1
{
}
1
2
Với d∞ = lim d∞= max xi − x1 , i = 1, ..., n.
Bài toán tối ưu đa mục tiêu
max Y( x )
x∈D
Ở đây vấn đề xác định α nói chung phụ thuộc vào các bài toán cụ thể và
các kết quả về mặt lý thuyết để tìm ra một thuật toán giải bài toán quy hoạch
(1.3) và (1.4).
Với trường hợp α=1 việc cực tiểu hoá :
k
min di = min α ∑ Y1 ( x ) − Y
x∈ D
x∈ D
α
*
i
i =1
k
max ∑Yi ( x )
x∈D
Tương đương với tìm:
Và x1 x 2 ⇔
k
Ở đây ∆ 1 = Y* 1 - W ta hiểu là nhượng bộ của mục tiêu thứ 1, như thế
quan điểm nhượng bộ ở đây là dựa trên nhượng bộ đồng đều theo tất cả các
chỉ tiêu, phương án X* là trội nhất nếu nhượng bộ “đều ” của nó là nhỏ nhất.
9
Trong trường hợp chung, tập các nghiệm của (1.5), (1.6) là tập các nghiệm
thoả hiệp tốt nhất. Người ta cũng chứng minh được rằng tập các nghiệm thỏa hiệp
tốt nhất là một tập con của tập các nghiệm không cải tiến được.
Zeleny (1974) đã chứng minh: Tập các nghiệm thoả hiệp ứng với d α(1 ≤
α ≤ ∞) nằm trong khoảng nghiệm ứng với d1 và dα.
Còn trong trường hợp α = ∞ Xalucvatde có nêu ra một thuật toán thoả
hiệp. Ở đây các quan hệ , ~ được dựa trên các metric dα:
k
k
1 α
2 α
2 ⇔
Y
*
−
Y
(
x
)
>
x
x
∑ i i
Theo phương án này hàm lợi ích được thể hiện dưới dạng ẩn. Còn việc
xác định quan hệ , ~ dựa trên thứ tự dãy tiêu chuẩn <Y1…, Yk>
Ở đây thứ tự của dãy thể hiện mức độ quan trọng của dãy tiêu chuẩn, có
sự ưu tiên tuyệt đối cho các mục tiêu đứng trước.
Thuật toán:
Bước 0: Sắp xếp thứ tự các mục tiêu Y1,…,Yk
Y1( x )
Bước 1: Giải bài toán: max
x∈ D
{
}
1
1
1
maxY1( x )
Ký hiệu: D = x |Y1( x ) = max
x∈D
Ta có D1 ⊆ D
Y2 ( x )
Bước 2: Giải bài toán : max
x∈D
{
}
Các độ lệch tương đối của hàm mục tiêu thì được gắn với một bộ trọng
số tương ứng. Trọng số này được xác định dựa trên khoảng biến động của
từng mục tiêu.
-
Miền chấp nhận được của nó có thể thay đổi qua các bước giải.
Hàm “lợi ích” và các quan hệ xác định như phương pháp tìm nghiệm có
khoảng cách nhất đến nghiệm lý tưởng.
Bài toán cơ bản mà phương pháp này xét
Π I M I − YI ( x) ≤ d 'α
I = 1, k
<bài toán I>
x ∈ Di
Trong đó:
MI là giá trị max YI(x)
x∈ D
Ta viết d 'α là metric đã thay đổi.
Di là miền chấp nhận được. Khi i = 0 thì D0 ≡ D.
Thuật toán giải như sau:
Bước 1: Xây dựng bảng “thưởng phạt” xác định MI và mI (giá trị max
và min của YI(x)) ở cột I.
Bước 2: Tìm các trọng số
Xác định αI để tính ΠI :
αI
∑α I
và giải bài toán i.
Bước 4: Giả sử nghiệm của bài toán I là x(i). Đưa cho người nhận lời
giải nghiệm x(i). Người nhận lời giải phân tích kết quả và xảy ra:
1)
Nếu người nhận lời giải (NNLG) chấp nhận x(i) thì thuật toán kết thúc.
2)
Nếu NNLG không chấp nhận x(i) và nếu chỉ số i < k-1 thì sang bước 5.
3)
Nếu NNLG không thoả mãn x(i) và i = k – 1 thì chọn cách giải khác.
Bước 5 : NNLG phân tích kết quả và tìm ra mục tiêu I * có thể nhượng
bộ. NNLG cho một nhượng bộ ∆I* và sang bước 6.
Bước 6 : Xác nhận miền chấp nhận mới D(i+1)
X ∈ Di
YI ( x ) ≥ YI * x(i )
∀I ≠ I *
YI * ( x) ≥ YI * | x(i ) | − ∆YI *
Coi α I = 0 ⇒ Π I = 0
*
v = 1, k
⇒ bài toán
E{ε 2 v {Y 0 v ( x)} → min
x∈D
hay
⇔
k
∑ α E{(Y
v =1
0
v
v
− Yv ( x)) 2 } → min
k
Ở đây: α v > 0; ∑ α v = 1
v =1
(ký hiệu E là kỳ vọng toán học)
Người ta mở rộng bài toán trên và đưa ra một thuật toán giải nó.
= 1.
Bài toán (1.7) là một bài toán tối ưu một mục tiêu, phụ thuộc trọng số.
Đặc biệt nếu mọi fi (i=1,...,k) là các hàm tuyến tính thì ta có một bài toán
quy hoạch tuyến tính phụ thuộc tham số ở hàm mục tiêu.
Vấn đề cốt lõi ở đây là làm thế nào để chọn trọng số cho các hàm mục
tiêu. Đã có nhiều nhà nghiên cứu phát triển các cách tiếp cận để lựa chọn
trọng số, như: Eckenrode (1965), Hobbs (1980), Hwang và Yoon (1981), và
Voogd (1983). Trong đó đều có tư tưởng chung là gắn trọng số dựa theo độ
quan trọng của mục tiêu. Rato và Roy (1989) đã thảo luận về phương pháp
xác định trọng số dựa trên lý thuyết tập mờ. Về sau, có một số nghiên cứu
đã chỉ ra rằng trọng số có thể được lựa chọn một cách ngẫu nhiên (theo xác
suất) trong quá trình tiến hoá. Sau đây trình bày về hai cách chọn trọng số.
* Chọn trọng số dựa theo độ quan trọng
Với cách này, các trọng số thường được cho trước theo ý đồ của
người quyết định hoặc theo ý kiến chuyên gia. Do vây các trọng số là cố
định trong suốt quá trình thực hiện và bài toán (2.1) được đưa về bài toán
k
tối ưu môt mục tiêu W = ∑ϖ i * f i ( x) (cực tiểu W).
i =1
Ví dụ: Với bài toán thiết kế hồ chứa nước, theo ý người sử dụng, tổng
giá thành f1 và dung tích f3 là quan trọng hơn, có đô quan trọng được cho
cùng là 0.4, còn lượng tổn thất bay hơi f2 có đô quan trọng được cho là 0.2.
Như vây, véc tơ trọng số ở đây là (= (0.4,0.2,0.4), các trọng số này là cố
định trong suốt quá trình tiến hóa. Khi đó bài toán đã cho chuyển về bài
toán min{0.4 f1+ 0.2f2 + 0.4f3}.
tính có dùng các thuật toán tìm kiếm, tối ưu hóa dựa trên nguyên lý tiến hóa
tự nhiên.
Giải thuật di truyền được hình thành dựa trên quan niệm: quá trình tiến
hóa tự nhiên là quá trình hoàn hảo và hợp lý nhất, tự quá trình này đã mang
tính tối ưu. Quan niệm này là một tiên đề đúng, không chứng minh được
nhưng phù hợp với thực tế khách quan. Tính tối ưu của quá trình tiến hóa thể
hiện ở đặc điểm, thế hệ sau bao giờ cũng tốt hơn (phát triển hơn, hoàn thiện
hơn) thế hệ trước. Tiến hóa tự nhiên được duy trì nhờ hai quá trình cơ bản là
sinh sản và chọn lọc tự nhiên, trong suốt quá trình tiến hóa tự nhiên, các thế
hệ mới luôn được sinh ra để bổ sung thay thế thế hệ cũ. Cá thể nào phát triển
hơn, thích ứng hơn với môi trường sẽ tồn tại, cá thể nào không thích ứng được
với môi trường sẽ bị đào thải. Sự thay đổi của môi trường là động lực thúc
đẩy quá trình tiến hóa, ngược lại tiến hóa cũng tác động trở lại góp phần thay
đổi môi trường.
Giải thuật di truyền (GA-Genetic Algorithms) là giải thuật tìm kiếm,
chọn lựa các giải pháp tối ưu để giải quyết các bài toán thực tế khác nhau, dựa
trên cơ chế chọn lọc của tự nhiên: từ tập lời giải ban đầu, thông qua nhiều
bước tiến hoá, hình thành tập lời giải mới phù hợp hơn, và cuối cùng dẫn đến
lời giải tối ưu toàn cục.
16
Trong tự nhiên, mỗi cá thể muốn tồn tại và phát triển phải thích nghi
với môi trường, cá thể nào thích nghi hơn thì tồn tại, cá thể nào kém thích
nghi thì bị tiêu diệt. Trong mỗi cá thể, các gen liên kết với nhau theo cấu trúc
dạng chuỗi, gọi là nhiễm sắc thể (NST). Mỗi NST đặc trưng cho mỗi loài và
quyết định sự sống còn của cá thể đó. Do môi trường tự nhiên luôn biến đổi
nên cấu trúc NST cũng thay đổi để thích nghi với môi trường và thế hệ sau
luôn thích nghi hơn thế hệ trước. Cấu trúc này có được do sự trao đổi thông
y
5
Mã hoá số thực : Mỗi NST được mã hoá là một véc tơ trong không
gian Rm chẳng hạn X = (a1, a2, ..., am) với các ai ∈ R. Cách mã hoá này thường
tự nhiên đối với các bài toán tối ưu số và được phát triển rất mạnh trong thời
gian gần đây.
2.1.2.2. Tạo lập lời giải ban đầu (khởi tạo quần thể)
Tập lời giải ban đầu thường được khởi tạo ngẫu nhiên từ miền xác định
của các lời giải. Cách tạo lập tập lời giải ban đầu phụ thuộc rất nhiều vào cách
mã hoá NST.
Với phương pháp mã hoá nhị phân: xây dựng NST bằng cách tạo ngẫu
nhiên chuỗi các bit 0 hoặc 1.
Với phương pháp mã hoá thứ tự: xây dựng NST ban đầu bằng cách
hoán vị ngẫu nhiên các thứ tự.
Với phương pháp mã hoá theo giá trị: tạo ngẫu nhiên từng giá trị trong
miền xác định của lời giải để tạo ra chuỗi NST ban đầu.
Với mã hoá số thực: tạo ngẫu nhiên N véc tơ thực trong Rm.
2.1.2.3. Xây dựng hàm phù hợp
Hàm phù hợp đánh giá khả năng phù hợp của tập lời giải theo yêu cầu
bài toán. Hàm này được xây dựng cho từng bài toán với yêu cầu cụ thể.
Thông thường trong các bài toán tối ưu hàm này chính là hàm mục tiêu của
bài toán.
2.1.2.4. Các toán tử di truyền
a. Toán tử chọn lọc
18
M
k =1
k
(với bài toán tìm min)
(với bài toán tìm max)
Sau khi có trọng số tích luỹ cho NST, ta lần lượt tạo các xác suất ngẫu
nhiên r và duyệt từ NST đầu tiên đến khi gặp NST có trọng số tích luỹ lớn
hơn r thì chọn nó.
Bước 2: Sau khi chọn được N NST, lần lượt lấy ra từng cặp NST để lai
ghép tạo ra hai NST mới. Một số dạng toán tử lai ghép hay dùng là :
Lai ghép 1 điểm: chọn ngẫu nhiên một vị trí sau đó hoán vị phần đứng
sau vị trí vừa chọn giữa hai NST cha và mẹ để nhận được hai NST con.
Lai ghép hai điểm: chọn ngẫu nhiên hai vị trí trong một NST, sau đó
hoán vị các giá trị đứng giữa hai điểm đã chọn của hai NST cha mẹ để nhận
được hai NST con.
19
Lai ghép mặt nạ: tạo một mặt nạ ngẫu nhiên có số bit bằng chiều dài
của NST. Ta sẽ hoán vị các giá trị của hai NST cha và mẹ ở những vị trí
tương ứng với vị trí bit 1 của mặt nạ.
c. Toán tử đột biến: Toán tử đột biến được xây dựng để tránh việc nhận
được giá trị tối ưu cục bộ. Đột biến gây ra thay đổi ngẫu nhiên trên từng bit
của NST để tạo ra một NST mới.
Khởi tạo ngẫu nhiên quần thể P(t);
Đánh giá độ phù hợp từng cá thể trong P(t);
Repeat
t:=t+1;
Chọn các cá thể từ P(t - 1);
Lai tạo các cá thể đã chọn tạo ra P(t) mới;
20
Đột biến các cá thể trong P(t) theo xác suất pm;
Đánh giá độ phù hợp các cá thể trong tập P(t);
Until (thoả điều kiện dừng);
End;
Giải thích:
Tại lần lặp thứ t, GA xác định một tập hợp các lời giải có thể (các cá
thể hay NST) gọi là quần thể P(t) = { x t1,,xt2,...,xtn }. Mỗi lời giải xti được đánh
giá nhằm xác định độ phù hợp của nó. Sau đó, một tập hợp các lời giải được
hình thành nhờ sự lựa chọn các lời giải phù hợp hơn. Một số phần tử của tập
hợp này được tái sản xuất thông qua lai ghép và đột biến. Từ đó hình thành
quần thể mới P(t+1) với hy vọng chứa các cá thể phù hợp hơn quần thể trước
đó.
Toán tử “lai ghép” kết hợp các đặc trưng của hai NST cha và mẹ hình
thành hai NST con tương ứng chẳng hạn bằng cách hoán vị các đoạn thích hợp
của hai NST cha và mẹ. Ví dụ, nếu cặp nhiễm sắc thể cha mẹ được biểu diễn
dưới dạng hai véc tơ:
(a1, b1, c1, d1, e1 ) và (a2, b2, c2, d2, e2)
thì cặp véc tơ con cháu nhận được sau khi lai ghép có thể là:
(a1, b1, c1, d2, e2) và (a2, b2, c2, d1, e1)
Toán tử “đột biến” thay đổi một hay một số gen của NST được chọn
xi ∈ R.
Như vậy một quần thể kích cỡ m là một tập hợp có m véctơ trong R n.
Ta cũng có thể xem một quần thể kích cỡ m như một ma trận thực cấp (mxn),
đây là cách mã hoá tự nhiên và thuận tiện trong việc thực hiện các toán tử tiến
hóa. Sau đây ta sẽ xem xét cụ thể hơn các toán tử này trong giải thuật di
truyền mã hoá số thực.
2.1.4.2. Các toán tử của RCGA
a. Toán tử chọn lọc
Trong quá trình thực hiện của giải thuật di truyền, sau mỗi lần tiến hoá
ta chỉ giữ lại các cá thể có độ phù hợp cao còn các cá thể phù hợp thấp bị loại
bỏ. Toán tử chọn lọc thường giữ lại 50% các cá thể phù hợp nhất. Tuy nhiên
22
người ta cũng phát triển nhiều sơ đồ chọn khác nhau nhằm là tăng tính đa
dạng của quần thể, tránh sự hội tụ sớm.
Sử dụng bánh xe Roulette
Có nhiều cách để thực hiện toán tử chọn lọc, nói chung đều theo tư
tưởng cá thể có độ thích nghi cao hơn thì khả năng được chọn nhiều hơn.
Nhưng có lẽ đơn giản và hiệu quả nhất là sử dụng bánh xe Roulette (roulette
wheel), mỗi cá thể trong quần thể chiếm một khe có độ rộng tỷ lệ thuận với
giá trị phù hợp. Độ rộng của khe được tính bằng tỷ lệ % giá trị phù hợp của
một cá thể trên tổng giá trị phù hợp toàn quần thể.
Gọi fi là độ phù hợp của cá thể thứ i trong quần thể gồm N cá thể khi đó
cá thể i sẽ được chọn với xác suất pi =
∑
169
14.4
169
2
24
576
49.2
745
3
8
64
5.5
809
4
19
i
WHILE (i
Ký hiệu cặp nhiễm sắc thể đã chọn lai ghép là
X = (x1, ... , xk , xk+1 , ... , xn )
và
Y = (y1, ... , yk , yk+1 , ... , yn )
Với các ký hiệu cá thể cha mẹ chọn lai ghép như trên, đặt
I = max(xi , yi ) - min(xi , yi ) với mỗi i,
Khi đó thành phần thứ i của cá thể con tạo ra là một số ngẫu nhiên chọn
trong khoảng
[min(xi , yi ) – I*α , max(xi , yi ) + I*α ]
αd2
d2
αd1
Parent 1
Parent 2
d1
αd1
αd2
Hình 2.1. BLX-α trường hợp 2 chiều
25