I. Ứng dụng giải thuật di truyền - Thuật toán GA trong việc tìm giá trị lớn nhất và nhỏ nhất của hàm số.
Khi chạy chương trình 20 lần với số thế hệ là 50:
Thuật toán GA, thuật toán GA là gì, ví dụ về thuật toán GA, code Matlab cho GA, ví dụ về thuật toán GA sử dụng Matlab, example code Matlab to solve GA method, GA method in Matlab, tìm giá trị lớn nhất nhỏ nhất của hàm số sử dụng thuật toán GA, code Matlab tìm giá trị lớn nhất, nhỏ nhất của hàm số, heuristic, heuristic code matlab, giải thuật di truyền, ví dụ về giải thuật di truyền GA sử dụng phần mềm Matlab, bài toán optimize hàm số, bài toán tìm giá trị lớn nhất nhỏ nhất của hàm số sử dụng thuật toán GA và phần mềm matlab, đặc điểm của thuật toán GA, ưu nhược điểm của thuật toán GA, ví dụ giải bài toán cực trị dùng giải thuật di truyền, ứng dụng giải thuật di truyền giải bài toán cực trị của hàm đa biến, cách áp dụng giải thuật di truyền - thuật toán GA, thuat toan di truyen, genetic algorithm,
Trong bài này về mặt lý thuyết mình sẽ chỉ trích dẫn sơ lược một số khái niệm và nội dung cơ bản để tập chung vào ví dụ áp dụng GA để giải quyết một bài tán cụ thể. Các bạn muốn tìm hiểu một cách đầy đủ hơn có thể tìm kiếm các nguồn tài liệu rất phong phú và đa dạng trên mạng Internet.
1.1 Một số khải niệm cơ bản:
"Một giải thuật di truyền (GA) là một thuật toán dùng để tìm các lời giải xấp xỉ cho các bài toán khó qua việc áp dụng các nguyên lý của sinh học tiến hóa cho ngành khoa học máy tính. Các thuật toán di truyền sử dụng các kỹ thuật sinh học như thừa kế (inheritance), biến dị, chọn lọc tự nhiên (natural selection), and tái tổ hợp (recombination ). Các giải thuật di truyền là một lớp của các giải thuật tiến hóa." - Wikipedia
1.2 Nguyên lý làm việc:
"Giải thuật di truyền được bắt đầu bởi 1 tập hợp các giải pháp (biểu diễn bởi các nhiễm sắc thể) được gọi là quần thể.
Các giải pháp từ 1 quần thể được lấy và sử dụng để tạo ra 1 quần thể mới. Điều này xuất phát từ ý tưởng quần thể mới sẽ tốt hơn quần thể cũ.
Các giải pháp được lựa chọn dựa trên độ thích nghi của chúng để hình thành giải pháp mới (con cái) phù hợp hơn giải pháp cũ.
Điều này được lặp đi lặp lại cho đến khi một số điều kiện (ví dụ như số lượng của các quần thể hoặc tìm ra giải pháp tốt nhất) thỏa mãn." - Trích Slide Soft Computing
1.3 Các bước thực hiện GA:
"1.[Bắt đầu] Tạo ngẫu nhiên quần thể có n nhiễm sắc thể (ví dụ các giải pháp có thể cho bài toán).
2.[Thích nghi] Đánh giá độ thích nghi f(x) cho mỗi nhiễm sắc thể x trong quần thể.
3.[Quần thể mới] Tạo ra 1 quần thể mới bằng cách lặp lại các bước dưới đây đến khi quần thể mới hoàn thiện.
(a). [Lựa chọn] Lựa chọn 2 nhiễm sắc thể cha mẹ từ quần thể trên dựa vào độ thích nghi của chúng (độ thích nghi tốt hơn, cơ hội được lựa chọn lớn hơn).
(b). [Lai chéo] Với khả năng lai chéo, lai chéo các cha mẹ để tạo ra con mới. Nếu lai chéo không được thực hiện, con cái chính là 1 bản y sao của cha mẹ.
(c). [Đột biến] Với khả năng đột biến, đột biến con mới tại mỗi quỹ tích (vị trí trong nhiễm sắc thể).
(d). [Chấp nhận] Đặt con mới vào trong quần thể mới
4. [Thay thế] Sử dụng quần thể mới đươc tạo ra cho bước lặp tiếp theo của thuật toán.
5. [Kiểm thử] Nếu điều kiện cuối cùng được thỏa mãn, dừng lặp và trả về giải pháp tốt nhất trong quần thể đang xét.
6. [Lặp] Quay trở về bước lặp thứ 2." - Trích Slide Soft Computing
1.4 Lưu đồ thuật toán:
2. Ví dụ về GA: Tìm giá trị lớn nhất của hàm số sau đây sử dụng thuật toán GA - Genetic Algorithms:
Solution:
We will use a process of GA with 5 Steps:
Step 1 Initialization
Step 2 Evaluation
Step 3 Selection
Step 4 Crossover
Step 5 Mutation
Step 6 Termination Checking
Go to Step 2 if not terminated
Kết quả:
Giá trị tối ưu tìm được sau 50 thế hệ:
(x, y) = (1.9931 ,
1.9896)
And there are some
value of F(x,y) with each number of Generation – (From 1 to 50) when I run this program in one time:
Columns 1 through 9
1.8799
3.9006 3.9380 3.9709
3.9732 3.9852 4.1925
4.1932 4.1932
Columns 10 through 18
4.1932
4.1932 4.2077 4.2077
4.2128 4.2128 4.2128
4.2128 4.2169
Columns 19 through 27
4.2169
4.2169 4.2169 4.2265
4.2265 4.2265 4.2265
4.2265 4.2265
Columns 28 through 36
4.2363
4.2363 4.2363 4.2363
4.2363 4.2363 4.2363
4.2363 4.2363
Columns 37 through 45
4.2363
4.2363 4.2363 4.2363
4.2363 4.2363 4.2411
4.2411 4.2411
Columns 46 through 50
4.2411
4.2411 4.2411 4.2547
4.2547
|
Từ dữ liệu ở trên ta vẽ được đồ thị giá trị tối ưu tìm được sau mỗi một thế hệ:
Nhận xét: Đôi khi thuật toán GA không thể cho ta một giải pháp tốt nhất - một Global Optimize.
Code chương trình GA - Genetic Algorithms sử dụng phần mềm Matlab:
function example_GA
% Genetic Algorithms
%--------------------------------------------------------------
% Reference book "A
Tutorial on Meta-Heuristics for Optimization"
% Authors: Shu-Chuan Chu,
Chin-Shiuh Shieh, and John F. Roddick
%--------------------------------------------------------------
% --Initialize Parameters---
n = 10; %
cl = 32; %
c =
zeros(n,cl);
mg = 50; %
best_f =
-10^9; %
f =
zeros(1,n);
best_c =
zeros(1,cl); % Best Chromosome
p =
zeros(1,n);
tmpc=zeros(n,cl);
CR = 0.5; %
MR = 0.05; % Mutation Rate
Fvl=zeros(1,cl);
%
Initialize Population
for i=1:1:n
for j=1:1:cl
if(rand(1)<0.5)
c(i,j)=0;
else
c(i,j)=1;
end
end
end
% Main
Program
for t=1:1:mg
%--Decode Chromosome--
x = zeros(1,n);
y = zeros(1,n);
for i=1:1:n
for j=1:1:cl/2
x(i) = x(i)*2+c(i,j);
end
x(i)=10*x(i)/(2^16)-5;
for j = (cl/2+1):1:cl
y(i) = y(i)*2+c(i,j);
end
y(i)=10*y(i)/(2^16)-5;
%--Update best solution--
f(i) = 4/((x(i)-2)^2+(y(i)-2)^2
+1)+3/((x(i)-2)^2+(y(i)+2)^2 +1)+2/((x(i)+2)^2+(y(i)-2)^2 +1);
if(f(i) > best_f)
best_f = f(i);
for j=1:1:cl
best_c(j)=c(i,j);
end
end
end
% Evaluate Selection Probability
tmpf =0;
for i = 1:1:n
p(i) = (f(i))^2;
tmpf = tmpf + p(i);
end
for i = 1:1:n
p(i) = p(i)/tmpf;
end
% Save the best solution
for j=1:1:cl
tmpc(1,j)=best_c(j);
end
%--Roulette wheel selection--
for i=2:1:n
tmpf = rand(1);
for k=1:1:n
tmpf = tmpf - p(k);
if tmpf<0
g=k;
break;
end
end
for j=1:1:cl
tmpc(i,j)=c(g,j);
end
end
%--Copy temporary population to
population--
for i=1:1:n
for j=1:1:cl
c(i,j)=tmpc(i,j);
end
end
%--Crossover---
for i = 1:2:(n-1)
a = rand(1);
if(a<CR)
site = a*cl;
j=1;
while (j<site)
tmpi = c(i,j);
c(i,j) = c(i+1,j);
c(i+1,j)= tmpi;
j=j+1;
end
end
end
%--Mutation---
for i=1:1:n
for j =1:1:cl
if (rand(1)<MR)
c(i,j)=1-c(i,j);
end
end
end
%--Return F(x,y) have found out
in each Generations---
r=0;
q=0;
for j=1:1:cl/2
r = r*2+best_c(j);
end
r=10*r/(2^16)-5;
for j = (cl/2+1):1:cl
q = q*2+best_c(j);
end
q=10*q/(2^16)-5;
Fvl(t) = 4/((r-2)^2+(q-2)^2
+1)+3/((r-2)^2+(q+2)^2 +1)+2/((r+2)^2+...
(q-2)^2 +1);
end
%
---Export Graph---
disp(Fvl);
plot(Fvl);
hold on;
end
|
Chú ý: Để máy tính hoạt động trơn tru và được bảo dưỡng tự động thường xuyên, các bạn nên cài một số phần mềm chăm sóc hệ thống. Mình đã và đang sử dụng phần mềm chăm sóc hệ thống Glary Utilities Pro và thấy rất tốt, các bạn có thể Download và cài đặt bản full có kèm theo Key (serial) đầy đủ ( đã test) rất đơn giản tại đây: Tải về
- Để bảo vệ máy tính tốt hơn chống lại các phần mềm gián điệp, virus độc hại mà không ngốn quá nhiều tài nguyên máy tính ngay cả ở chế độ hoạt động và chế độ chờ, mình khuyến nghị các bạn cài đặt và sử dụng phần mềm diệt Virus Avast internet security( Kèm theo key/Serial đã test): Tại đây
- Để bảo vệ máy tính tốt hơn chống lại các phần mềm gián điệp, virus độc hại mà không ngốn quá nhiều tài nguyên máy tính ngay cả ở chế độ hoạt động và chế độ chờ, mình khuyến nghị các bạn cài đặt và sử dụng phần mềm diệt Virus Avast internet security( Kèm theo key/Serial đã test): Tại đây
Thuật toán GA, thuật toán GA là gì, ví dụ về thuật toán GA, code Matlab cho GA, ví dụ về thuật toán GA sử dụng Matlab, example code Matlab to solve GA method, GA method in Matlab, tìm giá trị lớn nhất nhỏ nhất của hàm số sử dụng thuật toán GA, code Matlab tìm giá trị lớn nhất, nhỏ nhất của hàm số, heuristic, heuristic code matlab, giải thuật di truyền, ví dụ về giải thuật di truyền GA sử dụng phần mềm Matlab, bài toán optimize hàm số, bài toán tìm giá trị lớn nhất nhỏ nhất của hàm số sử dụng thuật toán GA và phần mềm matlab, đặc điểm của thuật toán GA, ưu nhược điểm của thuật toán GA, ví dụ giải bài toán cực trị dùng giải thuật di truyền, ứng dụng giải thuật di truyền giải bài toán cực trị của hàm đa biến, cách áp dụng giải thuật di truyền - thuật toán GA, thuat toan di truyen, genetic algorithm,
No comments:
Post a Comment