You are on page 1of 2

B.

1 Introduction
Genetic programming là kĩ thuật mà cho phép máy tính giải bài toán mà không cần được
lập trình rõ rang. Nó hoạt động bằng cách sử dụng thuật toán gen để sinh tự động chương
trình tính toán.
GA được nghĩ ra bởi John Holland như một cách khai thác sức mạnh của tiến hóa tự
nhiên cho việc sử dụng vào máy tính. Tiến hóa tự nhiên chứng kiến sự phát triển của các
sinh vật phức tạp từ những dạng sống đơn bào đơn giản hơn. GAs của Holland là những
mô hình đơn giản của sự thiết yếu của tiến hóa tự nhiên và di truyền.
Sự sinh trưởng của động thực vật từ những hạt giống hay trứng được cơ bản điều khiển
bởi gen mà chúng di truyền từ cha mẹ. Gen được chứa trên một hoặc vài sợi dây DNA.
Trong sinh sản vô tính DNA là bản sao chép từ DNA cha mẹ, có khả năng với một vài
thay đổi ngẫu nhiên, gọi là đột biến. Trong sinh sản hữu tính, DNA từ 2 bố mẹ được di
truyền bởi cá thể mới. Thường khoảng một nửa của mỗi DNA cha mẹ được sao chép cho
con. DNA của con cái thì thường khác so với của cả cha và mẹ.
Tiến hóa tự nhiên trỗi dậy chỉ khi những cá thể phù hợp nhất sinh tồn để sinh sản và từ đó
để lại DNA của chúng cho thế hệ sau. Đó là DNA mà sản sinh ra cá thể tốt hơn để tăng tỉ
lệ trong quần thể. Vì DNA trong quần thể thay đổi, các loài cũng thay đổi, chúng tiến hóa
như một kết quả của sự sinh tồn có chọn lọc của các cá thể trong đó.
B.2 Genetic Algorithms
GA có lẽ là mô hình tính toán gần gũi nhất với tiến hóa tự nhiên. Thành tựu của nó trong
tìm kiếm không gian phức tạp phi tuyến và độ bền tổng thể dẫn đến ứng dụng trong nhiều
vấn đề thực tiễn như xếp lịch, mô hình kinh tế và tối ưu.
Người phát minh ra GA, John Holland, đã lấy cảm hứng cho chúng từ tự nhiên. GA chứa
quần thể các cá thể, mỗi cái có “a known fitness?”. Quần thể được tiến hóa qua các thế hệ
liên tiếp, các cá thể trong mỗi thế hệ mới được sinh sản từ những các thể phù hợp hơn thế
hệ trước. Quá trình tiếp tục qua các thế hệ cho đến khi chúng ta quyết định dừng chúng.
Như với sự sinh sản ở gia súc, chúng ta chọn các cá thể để sinh sản ( sử dụng fitness
function) để hướng sư tiến hóa của quần thể về hướng ta muốn. Như động vật nuôi, nó
cần nhiều thế hệ để sinh sản ra các cả thể với đặc điểm ta yêu cầu.
Trong máy tính an individual’s fitness thường được tính toán trực tiếp từ DNA của nó
(mà không cần grow it) và vì vậy chỉ cần biểu diễn DNA. GA thường biểu diễn DNA
bằng vector có độ dài thay đổi. Khi GA được sử dụng để tối ưu, mỗi cá thể là một điểm
trong kgian tìm kiếm và được đánh giá bởi “fitness function” để xác định số mà đánh giá
độ tốt của điểm đó. Nếu bất kì điểm nào đủ tốt, GA dừng là kết quả chính là điểm đó.
Nếu không một quần thể mới, chứa các thế hệ mới được sinh sản.
Sự sinh sản ra thế hệ mới đó được lấy cảm hứng từ tự nhiên; các vector mới được sinh từ
các vector phù hợp hơn ở thế hệ hiện tại, sử dụng sinh sản vô tính hoặc hữu tính. Trong
sinh sản vô tính, vector cha đơn giản được sao chép ( có khả năng đột biến). Với sinh sản
hữu tính, Hai trong số các vector tốt được chọn và vector mới được tạo bởi chép tuần tự
các chuổi luân phiên từ mỗi cha mẹ. Thường chỉ 2 hoặc 3 chuỗi được dung, và các điểm
nơi sao chép chéo qua thì ngẫu nhiên. Được gọi là crossover.
Holland trong his paper “Genetic Algorithms and the Optimal Allocation of Trials”, chỉ ra
qua schemata theorem rằng trong các trường hợp nhất định GA sử dụng tốt thông tin từ
tìm kiến để lựa chọn điểm mới để tìm kiếm, give a less mathematical treatment of the
schemata theorem.
Holland cho rằng các yếu tố của vector nên đơn giản nhất có thể, trong nhiều trường hợp
các bit đơn được dung. Tự nhiên có vẻ cũng như vậy, như cấu trúc DNA chỉ từ 4 ( có khi
2) thành phần.
Định lý lược đồ cần biểu diễn vector và fitness function được thiết kế sao cho nghiệm yêu
cầu có thể lấy từ những miếng ngắn của các vector cái mà cho nó(nghiệm) một relatively
high fitness bất kể nội dung của các vector còn lại. Đó gọi là building blocks. Chúng
được xem như bộ các gen hoạt động tốt cùng nhau.
Cho building blocks tồn tại, GA, thậm chí bắt đầu từ 1 bộ vector ngẫu nhiên, có thể dần
dần chọn các vector với building blocks và sử dụng crossover operator dần dần nối chúng
lại với nhau cho đến khi quần thể chứa những vector mà khá đúng

You might also like