CHƯƠNG IV: Search and Evolutionary Scatter Search for ‘Tree-Star’ Network Problems, with Applications to Leased-Line Network Design
4.4.2. Chương trình đa dạng cho vector 1-
Cho X biểu thị một n-vector 0-1 trong giải pháp đại diện. (Trong vấn đề STS của chúng tôi, x đại diện một vector của các biến quyết định mà xác định nếu node Steiner tương ứng hoặc động hay không) Loại đầu tiên của chương trình đa dạng hóa chúng tôi cân nhắc là một vector x như một giải pháp hạt giống, và tạo ra một bộ sưu tập các giải pháp liên quan đến một số nguyên h=1,2,…, h*, trong đó h* <= n-1 (chú ý là h*<= n/5).
Chúng tôi tạo ra 2 loại giải pháp, x’ và x”, với mỗi h, mỗi cặp tạo ra luật sau: Loại 1: Lấy thành phần đầu tiên x1’ của x’ là 1-x1, và lấy x’
1+kh =1- x1+kh với k=1,2,3, …, k*, k* là số nguyên lớn nhất thỏa mãn k* <= n/h. Các thành phần còn lại của x’ bằng 0.
Để minh họa cho x= (0,0,…,0); giá trị h= 1, 2 và 3 tương ứng x’= (1,1,…,1), x′= (1,0,0,1,0,0,1,0,0,1,....), x′= (1,0,1,0,1 ...). Vì h lớn, giải pháp x’ cho 2 giá trị gần kề h
khác nhau tương ứng ít hơn khi h nhỏ. Mỗi lựa chọn để khai thác cho phép h tăng giá trị lớn hơn.
Loại giải pháp 2: Lấy x” là phần bổ sung của x’.
Lại minh họa cho x = (0,0,…,0); giá trị h=1, 2 và 3 tương ứng x’’= (0,0,…,0), x”=
(1,0,0,1,0,0,1,0,0,1,....), x”= (1,0,1,0,1 ...). Vì x” giống x cho h=1, giá trị h=1 có thể được giữ khi tạo x”.
Chúng tôi mở rộng các thiết kế trước tạo ra giải pháp bổ sung như sau. Cho các giá trị của h>=3 vector giải pháp được chuyển để chỉ số 1 được thay bằng một biết có chỉ số q, có thể lấy các giá trị 1,2,3,…h.
Tiếp tục minh họa cho x= (0,0,0…,0) giả sử h=3. Sau đó thêm x’= (1,0,0,1,0,0,1,…),
phương pháp cũng tạo ra giải pháp với x’= (0,1,0,0,1,0,0,1,…) và x’= (0,0,1,0,0,1,0,0,1….), vì q lấy giá trị 2 và 3.
Dưới đây đoạn giả mã code chỉ ra làm cách nào kết quả chương trình đa dạng hóa có thể được xây dựng, khi tham số maxSolutions chỉ ra số tối đa giải pháp mong đợi được tạo ra. (Trong phần cài đặt của chúng tôi, chúng tôi đặt MaxSolution bằng số vị trí trống trong RefSet, để thủ tục chấm dứt khi RefSet đã đầy hoặc tất cả các giải pháp được tạo ra).
NumSolutions = 0 For h=1 to h*
Let q*=1 if h<3, and otherwise let q*=h
(q* biểu thị giá trị là q sẽ nằm từ 1 đến q*. Chúng tôi đặt q*=1 thay vì q*=h và cho h<3 bởi vì nếu không các giải pháp đực đưa ra cho các trường hợp của h<3 sẽ bị trùng lặp những giải pháp khác hoặc bổ sung của chúng)
For q=1 to q*
Let k*=(n-q)/h (rounded down) For k=1 to k*
x’q+kh = 1-xq+kh
End k
If h>1, generate x” as the complement of x’ (x’ và x” là giải pháp đầu ra hiện tại)
NumSolutions=NumSolutions +2 (or +1 if h=1)
If NumSolutions ≥ MaxSolutions, then stop generating solutions End q
End h
Số giải pháp x’ và x” tạo ra bởi các chương trình xấp xỉ q*(q*+1). Vì vậy, nếu n=50
và h*=n/5=10, phương pháp này sẽ tạo ra khoảng 110 giải pháp đầu ra khác nhau, trong khi đó nếu n=100 và h*=n/5=20, phương pháp sẽ tạo ra khoảng 420 giải pháp đầu ra khác nhau.
Vì số giải pháp đầu ra tăng khá nhanh chóng khi n tăng, con số này có thể bị hạn chế, trong khi tạo một subset các giái pháp tương đối đa dạng, bằng cách cho phép q bỏ qua các giá trị khác nhau từ 1 đến q*. Số giá trị bị bỏ qua càng lớn , càng ít giải pháp sẽ thành công (cho một giá trị h). Hơn nữa, như đã lưu ý ở trên, h có thể tự tăng thêm một giá trị khác 1.
Nếu nhiều loại hơn được tìm thấy, phương pháp tiếp cận trước có thể được bổ sung như sau:
Lấy h=3,4,..., h*, với h ≤ n–2 (h* ≤ n/3). Sau đó, với mỗi giá trị h, tạo ra những giải pháp sau:
Giải pháp loại 1A: Lấy x1′= 1 – x1 và x2′= 1 – x2. Sau đó, lấy x1+kh′= 1 – x1+kh và lấy x2+kh′= 1 – x2+kh với k=1,2,…,k*, trong đó k* là số nguyên lớn nhất mà 2+kp ≤ n. Tất cả các thành phần khác của x’ giống với x.
Giải pháp loại 2: Tạo x′′ như một bổ sung của x′.