bài toán đa mục tiêu toàn phương rời rạc. Với lớp bài toán đầu tiên chúng tôi sử dụng các ví dụ được đề xuất bởi Kirlik và Sayın [22] và các ví dụ khác được sinh ngẫu nhiên theo cùng sơ đồ của Kirlik và Sayın nhưng với số chiều lớn hơn. Với lớp bài toán tối ưu đa mục tiêu rời rạc toàn phương, chúng tôi thử nghiệm trên bài toán thuê ngoài đa dịch vụ (MSO) được đề xuất bởi Feng và cộng sự [72] với dữ liệu số sinh ngẫu nhiên. Kết quả tính toán thử nghiệm cho thấy tính hiệu quả của từng thủ tục cập nhật miền tìm kiếm phụ thuộc vào lớp bài toán được xét và cách quản lí tập các bài toán con được lưu.
3.2.1 Biểu diễn miền tìm kiếm của bài toán tối ưu đa mục tiêu rời rạc(MODO) (MODO)
Những nghiên cứu về miền tìm kiếm đã được đề cập đến trong bài báo của Przy- bylski và cộng sự [25] cùng với thuật toán hai pha cho bài toán tối ưu đa mục tiêu tổng quát, trong đó các tác giả sử dụng thuật ngữthe search area. Tuy nhiên phải đến công trình gần đây của Klamroth và cộng sự [24] khái niệm này mới thực sự được xây dựng một cách có hệ thống.
Theo [13, 23, 24, 25] thì miền tìm kiếm được xác định thông qua tập các "điểm góc" (corner point) hoặc "những cận trên" (upper bounds) hoặc "những cận trên địa phương" (local upper bounds). Cụ thể, Klamroth và cộng sự [24] đã phát triển thuật toán cập nhật miền tìm kiếm của Przybylski và cộng sự [25] và đề xuất hai thuật toán hiệu quả trong bài báo của họ là thuật toán RE (redundancy elimination) và thuật toán RA (redundancy avoidance). Sau đó, dựa trên cấu trúc đặc trưng về tính lân cận giữa các cận trên địa phương, D¨achert và Klamroth [13] đã đề xuất thuật toán mới cho trường hợp ba mục tiêu và trong công trình D¨achert và cộng sự [23] đã phát triển thuật toán cho bài toán với số mục tiêu bất kì.
Tiếp theo đây chúng tôi sẽ sử dụng khái niệm đa khối nửa mở cho việc thiết lập và biểu diễn miền tìm kiếm của bài toán (MODO). Kí hiệu N là tập các điểm giá tr ị hữu hiệu tìm được; S N( ) là miền tìm kiếm tương ứng với N, tức S N( ) sẽ chứa những điểm giá trị hữu hiệu còn lại của bài toán (MODO) mà không thuộc tập N. Vì N là tập hữu hạn các điểm giá trị hữu hiệu đã biết của bài toán (MODO) nên tập Sy N∈ [y, b) không thể chứa những điểm giá trị hữu hiệu còn lại. Do đó miền tìm kiếm S N( )sẽ được tính theo công thức sau
S N( ) = [y I, b) nếuN = ∅, [yI, b) (\ S y N∈ [y, b)) trường hợp còn lại.
⇔S N( ) = [y
I, b) nếuN = ∅,
S
y N∈
([yI, b) [\ y, b)) trường hợp còn lại.
Từ Mệnh đề 1.6 và Chú ý 1.2 ta cóS N( ) là một đa khối nửa mở và hoàn toàn xác định bởi tập đỉnh chínhT N ,( ) tức là: S N( ) = [ z T N∈ ( ) [yI, z .) Vậy vấn đề đặt ra là làm cách nào để xác định tập đỉnh chínhT N( )?
Chú ý rằng, miền tìm kiếm ban đầu được xác định bởiS( ) := [∅ yI, b) vàT ( ) :=∅
{ }b . Bước lặp hiện tại ta đã biết N điểm giá trị hữu hiệu và có T N( ) là tập đỉnh chính của miền tìm kiếmS N( )tương ứng. Nếu trong bước lặp tiếp theo ta tìm được một điểm giá trị hữu hiệu mới y∗ thì miền tìm kiếm được cập nhậtS N( ∪{y∗}) := S N( ) [\ y ∗, b) sẽ có tập đỉnh chính tương ứngT N( ∪{y∗}).Kết quả dưới đây sẽ giúp ta tìm đượcT N( ∪{y∗})từT N( ) và{y∗}.
Mệnh đề 3.1. Cho a, b ∈Rm, a≤b.Giả sửP = S
z T∈
[a, z là một đa khối nửa mở với) tập đỉnh chínhT ⊂ [a, b , x) là một véc-tơ thuộc [a, b T); 1 = {z ∈ T x| ≤ }z , T 2 = T T\ 1. Khi đó ta có
(i) P0= P \ x, b là đa khối nửa mở với tập đỉnh T = T[ ) 0 1 S T2,trong đó T 0 1 = S z T∈ 1 Tz, với Tz = {uzi = + (z x i − zi)ei, i = 1, . . . , m .} (ii) Giả sử T0là tập đỉnh chính của P 0.Khi đó,T2 ⊂T0. (iii) u 6≤ ˜zvới mọiu∈ T10, ˜z ∈ T2.
Chứng minh. (i) Điều này dễ dàng suy ra từ Mệnh đề 1.6.
(ii) Giả sử phản chứng rằng, tồn tạiz1 ∈ T2, z1∈/ T 0.Khi đó, tồn tại z2 ∈ T sao choz1≤ z 2.Đương nhiênz2∈/ T2 vìT2⊂T T( là tập đỉnh chính của ). NhưP vậy, z2 ∈ T0
1 = S
z T∈ 1
Tz.Do đó tồn tại z3 ∈ T1 sao cho z2 ∈ Tz3. Từ đó suy ra z2 ≤ z3,điều này mâu thuẫn với việcz2, z3 ∈ T là các đỉnh chính củaP.Tóm lại ta có T2 ⊂T0.
(iii) Vì T0 1 =
S
z T∈ 1
Tz và theo định nghĩa của Tz với z ∈ T1, ta chú ý rằng x ≤ u với mọi u ∈ T10.Do đó nếu có ˜z ∈ T2 trội một điểmu ∈ T10nào đó thìz˜ ≥ x. Nhưng điều này mâu thuẫn với cách xác địnhT2.
Theo Mệnh đề 3.1, tập đỉnh chínhT0củaP0được chia thành hai phần độc lậpT2 vàT00 1 với T100= {z ∈ T10|@z0∈ T \ { }z , z ≤z 0} {= z ∈ T10|@z0∈ T10\ { }z , z ≤z 0} = MaxT 0 1. Nói cách khác,T0= T 00 1
S T2.Dưới đây chúng tôi đề xuất thủ tục NEWVERTEX(T, x) cho phép xác định được tậpT0từ tập và điểm như sau:T x
Thủ tục: NEWVERTEX(T, x) Đầu vào:Tập đỉnh chính củaT P =
S
z T∈
[a, z , x) ∈[a, b .) Đầu ra:Tập đỉnh chínhT0của đa khối nửa mởP0= P \ x, b .[ )
Bước 1:Tính các tậpT0
1, T2 thông qua thủ tục con ANALYZE(T, x ,) [T0
1, T2] := ANALYZE(T, x .) Bước 2:Xác định tậpT00
1 = MaxT 0
1 thông qua thủ tục con REFINE(T0 1), T100:=REFINE(T 0 1). Bước 3:Tập cần tìm T0:= T 00 1 [ T2. Với các thủ tục con như dưới đây.
Thủ tục: ANALYZE(T, x)
Đầu vào:Tập đỉnh chính củaT P, x∈ [a, b .) Đầu ra:TậpT0
1 vàT2. Bước 1: T2:= T, T 0
1 := ∅
Bước 2:Với mỗiz ∈ T.Nếux∈ zthì:
∗ Cập nhậtT2 := T2 \ { }z . ∗ Nếu x < z thì cập nhậtT 0 1 := T0 1 S {z + (x i − zi)e i, i = 1, . . . , m .} Ngược lại,T0 1 := T0 1 S{ }z . Thủ tục: REFINE(T0 1) Đầu vào:TậpT0 1. Đầu ra:TậpT00 1 = MaxT 0 1. Bước 1: T00 1 := T10; T3 := 0{ }. Bước 2:NếuT3 6= ∅thì gánl := #T0 1, T3 := ∅, j := 1.
%Trong thủ tục này ta hiểu T0
1 lưu véc-tơ trongl Rm.Kí hiệuT0 1( ) i là véc-tơ thứ i, i ∈{1, . . . , l .} % Bước 2.1:Nếuj ≤l,so sánhT 00 1( )j vớiT00 1( )k vớik∈ {1, . . . , l}\{ } :j nếuT00 1( )j ≥ T 00 1( ) k thì cập nhậtT3 := T3∪{T00
1( )k }.Ngược lại, nếu j > ldừng thuật toán.
Bước 2.2:NếuT3 6= ∅thì gánT00
1 := T 00
1\T3và quay lạiBước 2. Ngược lại, tăngj := + 1 j và quay lạiBước 2.1.
Để minh họa các thủ tục trên ta xét một ví dụ đơn giản trong trường hợpm= 3.
Ví dụ 3.3. Giả sử rằngP = S z T∈ [a, z , T) = {u 1, u2, u3}vàx ∈[a, b) như trong Hình 3.7. Ta muốn tìm tập đỉnh chínhT0củaP0= P \ x, b .[ ) u1 a u2 u3 . . . . u21 u22 u23 . . . u31 u32 u33 x .b Hình 3.7:Minh họa Ví dụ 3.3 u1 a . . . u21 u22 . . u31 u33 x .b Hình 3.8:Minh họa Ví dụ 3.3
Đầu tiên sử dụng thủ tục ANALYZE(T, x)để tính T1 = {z ∈T x| ≤ }z = {u 2, u3}, T10= [ z T∈ 1 Tz = {u21, u22, u23, u31, u32, u33} và T2 = {u 1}. Tiếp theo dùng thủ tục REFINE(T0
1)ta cóT00
1 = {u21, u22, u31, u33}. Cuối cùng thủ tục NEWVERTEX(T, x) cho ta tập kết quả
T0= T100
[ T2 = {u
1, u21, u22, u31, u33} và đa khối nửa mởP0như Hình 3.8.
Chú ý 3.1. (i) Thủ tục NEWVERTEX( ( )T N , y ∗) cho kết quả là tập đỉnh chính T N( ∪ {y∗}) của miền tìm kiếm S N( ∪{y ∗}) mỗi khi điểm giá trị hữu hiệu mới y∗được tìm ra. Vì vậy nó có thể được sử dụng cho việc cập nhật miền tìm kiếm của bài toán tối ưu (MODO).
(ii) Có sự tương ứng một-một giữa miền tìm kiếm xác định bởi đa khối nửa mở với vùng tìm kiếm xác định bởi "những cận trên địa phương" theo [23, 24, 25]. 3.2.2 Thuật toán tìm toàn bộ tập giá trị hữu hiệu của bài toán tối ưu đa
mục tiêu rời rạc (MODO)
Với việc sử dụng biểu diễn miền tìm kiếm bởi đa khối nửa mở (hay vùng tìm kiếm, theo [23, 24, 25]), toàn bộ tập điểm giá trị hữu hiệuYN của bài toán (MODO) sẽ được sinh lần lượt bằng cách giải các bài toán vô hướng hóa tương ứng với các đỉnh chính của miền tìm kiếm theo lược đồ GM.
Dưới đây chúng tôi đề xuất thuật toán tìm toàn bộ tập giá trị hữu hiệu của bài toán (MODO) với thủ tục cập nhật miền tìm kiếm NEWVERTEX mới được đề xuất ở Mục 3.2.1.
Thuật toán 3.1-NEWVERTEX: Tìm tậpYN Bước 1: T := { }b , N := ∅.
Bước 2:NếuT = ∅chuyển sangBước 3. Ngược lại chuyển sang Bước 2.1. Bước 2.1:
Bước 2.1.1:Chọn một đỉnhu∈T. Bước 2.1.2:Giải bài toán( ( ))P u . Bước 2.2:
∗ Nếu bài toán ( ( ))P u có nghiệm ˜x thì bổ sung điểm giá trị hữu hiệu mớif(˜x) vàoN :
N := N
[ {f(˜x)}
và cập nhật tập đỉnh chính bằng cách sử dụng thủ tục NEWVERTEXT T := NEWVERTEX(T, f x .(˜))
∗ Nếu bài toán( ( )) P u không chấp nhận được, tức là không tồn tại điểm giá tr ị hữu hiệu nào trong[yI, u) thì xóa khỏiu T :
T := \ { }T u .
Bước 3:Dừng thuật toán. Kết luậnYN = N.
Theo [23, 24, 25],Thuật toán 3.1- NEWVERTEX dừng sau hữu hạn bước lặp. Chú ý rằng, trong mỗi bước lặp của lược đồ GM nói chung và Thuật toán 3.1- NEWVERTEX nói riêng, véc-tơ có thể được chọn là đỉnh bất kì của tập đỉnh chínhu T. Tuy nhiên thuật toán có thể được tăng tốc nếu ta sử dụng một chiến lược tốt để quản lí những đỉnh chính được lưu trongT.
Có một số phương pháp nổi tiếng để quản lí những điểm này, chẳng hạn FIFO (First in First out, vào trước ra trước), LIFO (Last in First out, vào sau ra trước), chọn theo một quy tắc ưu tiên nào đó (Priority),... Với Thuật toán 3.1- NEWVERTEX (Bước 2.1.1), chúng tôi khảo sát 4 chiến lược chọn từ tập như sauu T
• FIFO: điểm nào lưu đầu tiên sẽ được chọn; • LIFO: điểm lưu sau cùng sẽ được chọn;
• Priority 1: Tại bước lặp (k k ≥ 0) của thuật toán, kí hiệuT klà tập đỉnh chínhT. Chọn cho bước lặpu k + 1 thỏa mãn điều kiện sau
u∈ argmaxz T∈ k Wz | Wz =
m
X
i=1
zi ;
• Priority 2: Tại bước lặp (k k ≥ 0) của thuật toán, kí hiệuT klà tập đỉnh chínhT. Chọn cho bước lặpu k + 1 thỏa mãn điều kiện sau
u∈argminz T∈ k Wz | Wz=
m
Xi=1 zi .
Chú ý rằng, việc quản lí các điểm trong tập cho phương pháp GM tìm kiếm toànT bộ tập giá trị hữu hiệu của bài toán (MODO) chưa được xem xét trong các công trình nghiên cứu trước đây.
3.2.3 Kết quả tính toán thử nghiệm3.2.3.1 Các thuật toán thử nghiệm 3.2.3.1 Các thuật toán thử nghiệm
Theo nhận xét trong bài báo [23], thủ tục cập nhật miền tìm kiếm sử dụng cấu trúc lân cận giữa các đỉnh chính được đề xuất trong [23] được xác định là hiệu quả hơn các thủ tục RA và RE ([24]) nếu tập giá trị hữu hiệu YN thỏa mãn giả thiết GP (general position)3. Nhưng trong thực tế, tập giá trị hữu hiệu YN của bài toán tối ưu đa mục
3YN được gọi là thỏa mãn giả thiết GP nếu với mỗi cặpz, z0∈YN, z 6=z0,ta cózi 6= z0
i với mọi i= 1, ..., m;chi tiết xem [23].
tiêu rời rạc thường không thỏa mãn giải thiết này. Khi đó, thủ tục RA tốt hơn những thủ tục còn lại với trường hợp số lượng phần tử của YN nhỏ. Do đó trong phần này chúng tôi xét thêm hai thuật toán là Thuật toán 3.1- RA và Thuật toán 3.1- RE để thử nghiệm bên cạnh Thuật toán 3.1- NEWVERTEX. Nội dung của hai thuật toán này giống như Thuật toán 3.1- NEWVERTEX ngoại trừ Bước 2.2, thay NEWVERTEX bởi RA hoặc RE.
3.2.3.2 Các ví dụ thử nghiệm
Chúng tôi đánh giá tính hiệu quả của ba thuật toán (Thuật toán 3.1- RA, Thuật toán 3.1- RE và Thuật toán 3.1- NEWVERTEX) trên hai lớp bài toán tối ưu đa mục tiêu rời rạc là: bài toán tối ưu đa mục tiêu rời rạc tuyến tính và bài toán tối ưu đa mục tiêu rời rạc toàn phương. Mỗi thuật toán lần lượt được kết hợp với bốn cách quản lí tập đỉnh chínhT là: FIFO, LIFO, Priority 1 và Priority 2 (đã nêu trong Mục 3.2.2). Mỗi cỡ bài toán chúng tôi sinh ngẫu nhiên 10 ví dụ và lấy kết quả trung bình để báo cáo.
Bài toán ba lô đa mục tiêu và bài toán phân công đa mục tiêu
Đây là hai bài toán thuộc lớp bài toán tối ưu đa mục tiêu rời rạc tuyến tính. Bài toán ba lô đa mục tiêu (multiobjective knapsack, MOK) có dạng
max f x( ) = (f 1( )x , ..., f m( ))x (MOK) v.đ.k. n Xk=1 wkxk ≤ W, xk ∈ {0 1, }, k= 1, ..., n, trong đó, fi( ) =x P n k=1 cikxk, i = 1, ..., m là m hàm mục tiêu và các hệ số c i k, wk, k = 1, ..., n, i = 1, ..., mlà các số nguyên không âm,W = [0 5.
P
n
k=1 wk].
Và bài toán phân công đa mục tiêu (multiobjective assignment, MOA) có biểu diễn toán học như sau
min g x( ) = (g 1( )x , ..., g m( ))x (MOA) v.đ.k. n Xl=1 xkl = 1, k = 1, ..., n, n X k=1 xkl = 1 = 1, l , ..., n, xkl ∈ {0 1, }, k= 1, ..., n l; = 1, ..., n, trong đó,gi( ) =x P n k=1 P n l=1 ci klxkl, i= 1, ..., mlà hàm mục tiêu và các hệ sốm c i kl, i = 1, ..., m k; = 1, ..., n l; = 1, ..., n,là các số nguyên không âm.
Chúng tôi tiến hành thử nghiệm các thuật toán cho hai nhóm ví dụ: thứ nhất là các ví dụ cho bởi Kirlik và Sayın [22]; nhóm thứ hai bao gồm các ví dụ được sinh ngẫu nhiên theo quy tắc tương tự như trong [22] với số chiều không gian ảnh cao hơn các
ví dụ cho bởi Kirlik và Sayın [22] (8 mục tiêu cho bài (MOK) và 4 mục tiêu cho bài (MOA)).
Bài toán chọn nhà cung cấp cho lĩnh vực thuê ngoài đa dịch vụ
Bài toán tối ưu đa mục tiêu rời rạc toàn phương chúng tôi chọn để thử nghiệm là mô hình bài toán chọn nhà cung cấp cho lĩnh vực thuê ngoài đa dịch vụ (the supplier selection problem in multi-service outsourcing (MSO)) được đề xuất bởi Feng và các cộng sự [72]. Trong bài báo này, các tác giả đã đề xuất một thuật toán theo hướng tiếp cận heur istic để giải.
Mô hình toán học của bài toán chọn nhà cung cấp cho lĩnh vực thuê ngoài đa dịch vụ có dạng như sau minZ1 = M Xi=1 K Xs=1 pisdsxis, minZ2 = M Xi=1 K X s=1 tisxis, (MSO) maxZ3= M Xi=1 M Xj=1 uij K Xs=1 xis K Xs=1 xjs, v.đ.k. K X s=1 xis ≤ 1 = 1, i , . . . , M, M Xi=1 xis = 1 = 1, s , . . . , K, M Xi=1 pisxis ≤ p A s , M Xi=1 tisxis ≤ t A s , s = 1, . . . , K, xis ∈{0 1, }, i= 1, . . . , M, s= 1, . . . , K.
Chi tiết về bài toán này; xem [72].
Chúng tôi sinh ngẫu nhiên các ví dụ cho mô hình bài toán (MSO) với quy tắc tương tự như trong [72] theo hai nhóm như sau:
- Nhóm 1: các tham số pis, tis, uij được sinh ngẫu nhiên theo phân phối đều U ,(1 11); và pA
s = 8, t As = 8, ds = 10, tức là, tất cả các nhà cung cấp có thể cung cấp bất kì một dịch vụ/sản phẩm nào đó.
- Nhóm 2: Tương tự như Nhóm 1, các tham số pis, tis, uij được sinh ngẫu nhiên theo phân phối đều U ,(1 10); vàpA
s = 8, t A
s = 8, ds = 10, tuy nhiên có một số pis, tis được cho giá trị rất lớn L = 10000, với pis, tis được lấy ngẫu nhiên từ