Tải bản đầy đủ (.pdf) (60 trang)

MÔN các hệ cơ sở TRI THỨC đề tài tìm HIỂU về lập TRÌNH DI TRUYỀN

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.36 MB, 60 trang )

TRNG I HC KHOA HC T NHIấN
KHOA CễNG NGH THễNG TIN


















TP. HCM, 10 2010

Giỏo viờn hng dn : Thy TS. Lờ Hong Thỏi

Nhúm sinh viờn thc hin : Lng Thun Thnh 10 11 052
Nguyn Phỳc Tho 10 11 053
Mai Trn Thc Trinh 10 11 054
inh Xuõn Thụng 10 11 055

ẹE TAỉI
TèM HIEU VE LAP TRèNH DI TRUYEN


(GENETIC PROGRAMMING)

MễN
CC H C S TRI THC
Tìm hiểu về lập trình di truyền – Genetic Programming


MỤC LỤC


I. TỔNG QUAN VỀ LẬP TRÌNH DI TRUYỀN ______________________________ 3
I. 1. So sánh giữa lập trình di truyền và các cách tiếp cận khác _________________ 4
I. 2. Đặc trưng của lập trình di truyền: _____________________________________ 6
I. 2. 1. Toán tử di truyền: ________________________________________________ 6
I. 2. 2. Các thế hệ của lập trình di truyền:___________________________________ 7
I. 2. 3. Cây cở sở của lập trình di truyền: ___________________________________ 7
I. 2. 4. Biểu diễn lập trình di truyền: _______________________________________ 7
I. 2. 4. 1. Biểu diễn di sinh học ___________________________________________ 8
I. 2. 4. 2. Biểu diễn mô phỏng sinh học _____________________________________ 8
I. 2. 4. 3. Biểu diễn lập trình di truyền enzim ________________________________ 9
I. 3. Tính chất của lập trình di truyền _____________________________________ 15
I. 4. Các bước của lập trình di truyền _____________________________________ 16
I. 4. 1. Bước chuẩn bị của lập trình di truyền _______________________________ 16
I. 4. 2. Bước thực thi của lập trình di truyền________________________________ 17
I. 4. 2. 1. Tạo quần thể ban đầu của chương trình máy tính ___________________ 18
I. 4. 2. 2. Hàm thích nghi _______________________________________________ 19
I. 4. 2. 3. Hàm và kết thúc ______________________________________________ 19
I. 4. 2. 4. Toán tử lai ghép ______________________________________________ 19
I. 4. 2. 5. Toán tử đột biến ______________________________________________ 21
I. 5. Đặc điểm của lập trình di truyền _____________________________________ 21

I. 5. 1. Thế nào là “Cạnh tranh với con người” _____________________________ 21
I. 5. 2. Thế nào là “Trả về cao” __________________________________________ 25
I. 5. 3. Thế nào là thường xuyên _________________________________________ 26
I. 5. 4. Thế nào là máy thông minh _______________________________________ 27
I. 6. Ứng dụng của lập trình di truyền_____________________________________ 28
II. Áp dụng trong bài toán tối thiết kế mạng tối ưu ___________________________ 34
II.1 Mô tả bài toán____________________________________________________ 34
MỤC LỤC
Tìm hiểu về lập trình di truyền – Genetic Programming
II.2 Giải quyết bài toán ________________________________________________ 35
II.2.1 Xác định bài toán ______________________________________________ 35
II.2.2 Biểu diễn lập trình di truyền cho bài toán _____________________________ 36
II.2.3 Lập trình di truyền cho bài toán ____________________________________ 37
II.2.3.1 Các toán tử _________________________________________________ 37
II.2.3.1.1 Toán tử lai ghép __________________________________________ 38
II.2.3.1.1 Toán tử đột biến __________________________________________ 40
II.2.3.2 Thuật giải __________________________________________________ 41
II.2.4 Kết quả ________________________________________________________ 42
III. ÁP DỤNG TRONG BÀI TOÁN BIỂU THỨC TOÁN HỌC ________________ 44
III. 1. Mô tả bài toán __________________________________________________ 44
III. 2. Một số khó khăn của bài toán _____________________________________ 44
III. 3. Giải quyết bài toán ______________________________________________ 45
































Tìm hiểu về lập trình di truyền – Genetic Programming











I. TỔNG QUAN VỀ LẬP TRÌNH DI TRUYỀN
- Một trong những thử thách của khoa học máy tính ngày nay là thiết kế
những cỗ máy có khả năng xử lý như con người và lập trình di truyền là
một trong phương thức tiếp cận giải quyết vấn đề bằng cách cung cấp
những chương trình tự động (hay còn gọi là chương trình tổng hợp hoặc
chương trình cảm ứng). Lập trình di truyền tổng hợp các lời giải từ các
bài toán nhỏ thông qua các nguyên tắc cơ bản trong quá trình chọn lọc
tự nhiên như phép lai ghép, phép đột biến và phép chọn lọc của thuyết
tiến hóa Darwinian để suy ra lời giải cho các bài toán lớn hơn.
- Lập trình di truyền giải quyết bài toán bằng các chương trình máy tính
được suy ra từ việc tìm kiếm trong tập các lời giải bài toán có sẵn.
Phương pháp này dựa trên nguyên lý Darwinian về “quá trình chọn lọc
tự nhiên” và có liên quan chặt chẽ với thuật giải di truyền.
- Những điểm khác nhau giữa lập trình di truyền và thuật giải di truyền
bao gồm:
 Cấu trúc: lập trình di truyền sử dụng cấu trúc cây trong khi thuật giải
di truyền sử dụng chuỗi nhị phân hoặc chuỗi các số thực
 Chủ động và bị động: kết quả của lập trình di truyền là chương trình
máy tính nên lời giải cho bài toán có thể được thực thi ngay lập tức
nghĩa là chủ động trong khi lời giải của thuật giải di truyền là cấu
Tìm hiểu về lập trình di truyền – Genetic Programming
trúc các chuỗi nhị phân cần phải được lập trình xử lý để thực thi
nghĩa là bị động
 Chiều dài cố định và thay đổi: đối với thuật giải di truyền chiều dài
của chuỗi nhị phân là cố định trước khi thủ tục được xử lý còn trong
lập trình di truyền cây phân tích có thể có độ lớn khác nhau trong khi

xử lý. Đó là sự cải tiến hơn so với thuật giải di truyền khi sử dụng
chuỗi có chiều dài thay đổi
I. 1. So sánh giữa lập trình di truyền và các cách tiếp cận khác
- Một trong những chức năng cơ bản của hệ thống trí tuệ nhân tạo là khả
năng tìm kiếm lời giải tối ưu cho bài toán đưa ra trong không gian các
lời giải. Có 3 dạng tìm kiếm chính là: tìm kiếm mù, leo đồi và tìm kiếm
tuyến tính. Lập trình di truyền được phân loại thuộc về tìm kiếm tuyến
tính bởi vì nó duy trì tập hợp các lời giải có sẵn và thường được xem
như là một giải thuật tìm kiếm yếu vì không chứa đựng các kiến thức cụ
thể. Lập trình di truyền chỉ tìm được vùng chứa lời giải tối ưu trong khi
các thuật toán tìm kiếm cục bộ xác định đúng lời giải tối ưu.
- Lập trình di truyền tiếp cận lời giải khác so với trí tuệ nhân tạo, máy
học, mạng neuron, hệ thống thích nghi, học tăng cường hoặc automat
logic ở 7 điểm sau:
 Cách biểu diễn:
- Lập trình di truyền biểu diễn thông qua các cấu trúc đặc biệt như
các luật nếu-thì, các mệnh đề, các cây quyết định, mạng Bayesian,
mạng logic, văn phạm hình thức, sơ đồ nhị phân quyết định, khung,
tập các nhóm khái niệm, vector trọng số, vector hệ số của đa thức
hoặc các biểu thức cố định, hệ thống các luật di truyền, bảng giá trị
hoặc chuỗi tuyến tính các nhiễm sắc thể
 Tìm kiếm điểm điểm:
Tìm hiểu về lập trình di truyền – Genetic Programming
- Sự khác biệt giữa lập trình di truyền và các kỹ thuật tự động khác
ở việc chọn không gian tìm kiếm lời giải. Trong khi tất cả các
phương thức khác thực hiện theo chiến lược điểm điểm đó là việc
chuyển từ 1 điểm trong không gian tìm kiếm tới 1 điểm khác thì lập
trình di truyền thực hiện trao đổi đa dạng các lời giải được xem như
là không phù hợp hoặc thường mâu thuẫn với bài toán và tìm kiếm
tuyến tính lời giải trong không gian các chương trình bằng cách bằng

cách lặp đi lặp lại việc chuyển một tập các chương trình có khả năng
là lời giải tới một tập các chương trình mới.
 Tìm kiếm “leo đồi”:
- Lập trình di truyền không dựa vào chiến lược tìm kiếm điểm
điểm nên không bị hội tụ cục bộ như trong tìm kiếm “leo đồi”. Lập
trình di truyền dựa vào số đo các lần thử nghiệp để xác định điểm đó
là kém hơn.
 Yếu tố quyết định trong tìm kiếm:
- Lập trình di truyền tìm kiếm dựa trên tìm kiếm xác suất trong khi
những kỹ thuật tự động khác dựa trên xác định
 Cơ sở tri thức rõ ràng: không có
- Lập trình di truyền không dựa trên cơ sổ tri thức rõ ràng để đạt
được mục tiêu tạp ra những chương trình máy tính tự động. Lập
trình di truyền có nhiều lựa chọn khác nhau để chạy chương trình
nên không nhất thiết phải sử dụng cơ sở tri thức rõ ràng để tìm kiếm
lời giải
 Logic hình thức trong tìm kiếm: không có
- Lập trình di truyền không sử dụng phương thức logic hình thức
trong việc tìm kiếm chương trình máy tính để giải quyết vấn đề được
đưa ra
Tìm hiểu về lập trình di truyền – Genetic Programming
 Nền tảng kỹ thuật: cảm hứng từ sinh học
- Sinh học là cơ sở của lập trình di truyền để thực hiện mục đích
tạo ra một cỗ máy tự động, là cơ sở giúp máy tính giải quyết những
vấn đề mà không cần phải lập trình rõ ràng.
I. 2. Đặc trƣng của lập trình di truyền:
- Mỗi lời giải của lập trình di truyền là tập hợp gồm có 2 tập nút cơ bản là
tập kết thúc và tập hàm.
 Tập kết thúc: chứa các nút có giá trị đầu vào cho hệ thống
 Tập hàm: chứa các nút có giá trị đã xử lý trong hệ thống

- Khi bắt đầu hệ thống sẽ chọn ngẫu nhiên các nút từ 1 trong 2 tập do đó
không có sử dụng hết tất cả các nút có sẵn
I. 2. 1. Toán tử di truyền:
- Có 3 toán tử di truyền chính trong hệ thống lập trình di truyền là:
• Chọn lọc: chọn những cá thể trong thế hệ hiện tại và sao chép vào
trong thế hệ con và có nhiều cách để chọn cá thể bao gồm “dựa vào
độ thích nghi”, “xếp hạng”, “cạnh tranh”
• Lai ghép: Tương tự sinh sản như trong tự nhiên, chọn ra 2 cá thể
lời giải cha mẹ sau đó hoán đổi một phần cây con thuộc 2 cá thể lời
giải cha mẹ. Bởi vì mỗi nút hàm thể hiện thuộc tính “đóng” (mỗi cây
con có thể xử lý tất cả các giá trị đối số thuộc cây con đó) nên sau
khi lai ghép sẽ tạo ra cá thể đúng quy định
• Đột biến: Không giống như lai ghép, đột biến giống như sinh sản
vô tính vì vậy chỉ thực hiện trên 1 cá thể. Trong suốt quá trình đột
biến hoặc tất cả các nút hàm hoặc nút kết thúc sẽ được dời chỗ bên
dưới các nút được xác định tùy ý và cá thể mới sẽ được tạo ngẫu
nhiên hoặc một nút được hoán đổi với một nút khác
Tìm hiểu về lập trình di truyền – Genetic Programming
I. 2. 2. Các thế hệ của lập trình di truyền:
- Lập trình di truyền có 2 phương pháp chính để phân loại thế hệ là
thế hệ và trạng thái ổn định. Thế hệ trong lập trình di truyền là sự tồn
tại của các thế hệ được xác định rõ ràng và mỗi thế hệ khác biệt nhau
được biểu diễn bằng 1 quần thể đầy đủ các cá thể . Vì vậy mỗi lần
một quần thể mới được tạo từ một quần thể cũ thì nó sẽ thay thế
quần thể cũ. Trạng thái ổn định trong lập trình di truyền không duy
trì những thế hệ rời rạc mà tiếp tục tiến hóa từ thế hệ hiện tại bằng
cách sử dụng những toán tử di truyền
I. 2. 3. Cây cở sở của lập trình di truyền:
- Cơ sở của lập trình di truyền là tập nút hàm và tập nút kết thúc
phải được kết nối lại trước khi thực hiện chương trình. Ba dạng cấu

trúc chính tồn tại bao gồm: cây, đường thẳng và đồ thị. Trong khi
thực thi chương trình, tập đầu vào (cấu trúc được tối ưu hay được
thiết kế) có dạng mô hình mạng. Tuy nhiên bằng cách lặp lại việc kết
nối dữ liệu đồ thị mạng sẽ được chuyển đổi thành cấu trúc cây nghĩa
là cùng 1 nút kết nối có thể tồn tại trên cùng 1 cây nhiều lần
I. 2. 4. Biểu diễn lập trình di truyền:
- Bài toán biểu diễn là việc tìm kiếm cách biểu diễn tốt hơn trong
tính toán di truyền và trong trí tuệ nhân tạo. Lập trình di truyền có 2
dạng biểu diễn là biến thể và thế hệ. Biểu diễn biến thể mô tả
chương trình và sự tiến hóa của chương trình. Các yêu cầu hính của
biểu diễn biến thể là sự phát triển độ thích hợp của chương trình trên
thế hệ cơ sở khi mà bài toán thực hiện biến đổi di truyền. Biểu diễn
thế hệ là biểu diễn kết quả của các biến đổi và diễn tả trạng thái động
của chương trình. Đó là chức năng chính mà nó phải thực hiện. Tuy
nhiên bất chấp những yêu cầu khác nhau của biểu diễn cá thể và biểu
Tìm hiểu về lập trình di truyền – Genetic Programming
diễn thế hệ, hầu hết những hệ thống lập trình di truyền không phân
biệt giữa 2 phần này
I. 2. 4. 1. Biểu diễn di sinh học
- Sinh học không phân biệt giữa các biểu diễn biến thể và thế hệ.
Chúng được gọi theo thứ tự là di truyền và kiểu hình. Trình bày di
truyền từ một quan điểm đơn giản là một không gian tuyến tính sắp
xếp thứ tự thuộc tính di truyền. Mỗi thuộc tính di truyền mô tả các
thứ tự axit amin trong protein. Mô tả thể hiện sự phát triển các và
sinh ra các protein, các thành phần cơ bản biểu diễn kiểu hình.
- Một nhóm các protein làm nhiệm vụ bình thường được gọi là một
con đường sinh hóa. Các nhiệm vụ thực hiện bởi con đường sinh hóa
rơi vào ba nhóm chính: trao đổi chất, báo hiệu và biểu hiện gen.
Trong số này, con đường trao đổi chất là xem xét khái niệm cho việc
thực hiện trạng thái xử lý của tế bào, trong khi con đường tín hiệu và

biểu hiện gen dựa trên vai trò cấu hình. Số lượng lớn các thao tác xử
lý sinh hóa của các tế bào thông qua hệ thống các phản ứng hóa học.
Con đường chuyển hóa bao gồm các vi-zymes, một nhóm các
protein thực hiện các xúc tác, tạo điều kiện cho các phản ứng mà
không thể khác được trong nhiệt độ tương đối thấp của tế bào.
Enzym xúc tác đạt được trạng thái bằng cách liên kết với các hóa
chất cụ thể, của enzyme phụ và hướng đến phản ứng. Hợp tác trong
các con đường trao đổi chất nổi lên từ bề mặt sản phẩm chia sẻ giữa
các enzym, nơi mà các sản phẩm của một enzyme trở thành chất nền
khác.
I. 2. 4. 2. Biểu diễn mô phỏng sinh học
- Mô phỏng sinh học trong lập trình di truyền là biểu diễn số lượng
các cá thể có chất lượng, hiệu quả nhưng thường là không tìm thấy.
Tìm hiểu về lập trình di truyền – Genetic Programming
Bao gồm: các chuyên môn của hình thức tiến hóa và kiểu thực thi;
biểu diễn suy luận, "thiết kế" cho sự tiến hóa, trung lập, tăng tính đa
dạng di truyền và độ thích nghi; không bị hạn chế xử lý, nhiều tự do
hơn để phát triển và vị trí độc lập, không hạn chế chức năng của gen
đến vị trí gen. Nghĩa đen của hệ thống lập trình di truyền là bắt
chước sự biểu diễn di truyền của sinh học. Mở đầu giai đoạn phát
triển, cho phép biểu diễn di truyền độc lập với biểu diễn thực thi.
Điều này cho thấy tính đa dạng di truyền tăng và khuyến khích tính
trung lập. Một số phương pháp tiếp cận này cũng cho phép vị trí các
gen độc lập trong hệ gen.
- Việc bắt chước biểu diễn kiểu ít gặp hơn. Tuy nhiên, máy tính
diễn đạt đã được sử dụng để mô tả hành động của các enzym và các
con đường sinh hóa. Hoạt động tương tự của enzyme đã được sử
dụng cho mục đích tính toán trong lĩnh vực nhân tạo, phát triển các
mô hình tiến hóa cũng đã được thử
I. 2. 4. 3. Biểu diễn lập trình di truyền enzim

- Enzyme lập trình di truyền là một hệ thống mô phỏng sinh học ở
biểu diễn di truyền và kiểu hình. Biểu diễn kiểu hình dựa trên
trừu tượng của con đường chuyển hóa. Mục đích của hệ thống là
để phát triển tương tự các con đường trao đổi chất trong mạch
logic tổ hợp.
- Hình 6.1 cho thấy mối quan hệ giữa các biểu diễn của enzyme
bằng lập trình di truyền.
- Trong quá trình tiến hóa, các mạch được mã hoá như trình tự
tuyến tính của các "gen", nơi mỗi gen mô tả như các tham chiếu
đầu vào, các đặc điểm riêng của một cổng logic cụ thể hoặc đầu
ra kết thúc. Đặc trưng là một giá trị dấu chấm động giữa số không
Tìm hiểu về lập trình di truyền – Genetic Programming
và một trong những tham số chỉ định liên quan đầu vào (chất
nền). Mỗi hoạt động đầu vào, được xác định cho các sản phẩm
của tất cả các hoạt động đầu ra.
- Biểu diễn kiểu hình tạo ra bởi các kiểu gen được hình dung trong
trung tâm của hình. 1. Trọng số của đường thẳng cho biết đặc
điểm riêng liên quan. Trong thực tế, mạng lưới phải đầy đủ kết
nối. Tuy nhiên, cho rõ ràng chỉ có ưu thế và một vài trong số
những đặc điểm riêng lặn được hiển thị. Khi mạch điện được thực
hiện, các chi phối chỉ định nên bản đồ các kết nối mạch. Tuy
nhiên, tổ hợp các mạch phải không truy hồi và do đó sẽ không
phải luôn luôn được thể hiện kết nối một phần tử của mạch ưa.
Cách tiếp cận này được thay cho phép các mạch không hợp lệ
hoặc bắt buộc các biểu diễn di truyền.
- Nếu không có nghi ngờ gì, chương trình có thể được xem như là
chuỗi. Tuy nhiên, hai hạn chế quan trọng mà không thể sử dụng
biểu diễn và hoạt động từ đơn giản thuật giải di truyền là:

Hình 1 - Biểu diễn mạch

1. Chủ yếu là không phù hợp với giả thuyết một chiều dài cố định
của chương trình.
2. Xác suất để có được chương trình cú pháp chính xác khi áp
dụng khởi tạo đơn giản, lai ghép, và đột biến là vô cùng thấp.
Tìm hiểu về lập trình di truyền – Genetic Programming
- Do đó, cần thiết để thay đổi cách biểu diễn dữ liệu và các hoạt
động mà cú pháp chính xác là dễ dàng hơn bảo đảm. Phương
pháp phổ biến để biểu diễn các chương trình trong lập trình di
truyền là xem xét các chương trình như là cây. Bằng cách làm
như vậy, khởi tạo có thể được thực hiện đệ quy, lai ghép có thể
được thực hiện trao đổi cây con và ngẫu nhiên thay thế cây con
như là toán tử đột biến.
- Kể từ khi xây dựng được các danh sách lồng, chương trình bằng
các ngôn ngữ như LISP đã có một loại cấu trúc cây giống. HÌnh 2
cho ví dụ làm thế nào để hàm 3x + sin(x+1) có thể được thực
hiện trong LISP giống như ngôn ngữ và như thế nào như một
chức năng giống như LISP có thể được chia thành cây. Rõ ràng,
biểu diễn cây trực tiếp tương ứng với các danh sách lồng nhau
bao gồm các chương trình, các biểu thức nguyên tử, giống như
các biến và hằng số là nút lá, trong khi hàm tương ứng với các
nút không phải nút là
- Có một bất lợi quan trọng của cách tiếp cận LISP đó là khó khăn
để kiểm tra kiểu ban đầu. Trong trường hợp một hàm toàn là số
như trong ví dụ trên, không có vấn đề gì. Tuy nhiên, nó khó có
thể để xử lý dữ liệu số, chuỗi, và các biểu thức hợp lý đồng thời.
Tìm hiểu về lập trình di truyền – Genetic Programming
Đây là khó khăn để xử lý nếu chúng ta sử dụng một đại diện cây
như trong hình. 2.
- A. Geyer-Schulz đã đề xuất một phương pháp tiếp cận rất chung
mà khắc phục vấn đề cho phép sự linh hoạt tối đa. Ông đề nghị

biểu diễn các chương trình bằng cây dẫn xuất cú pháp với một
định nghĩa đệ quy của ngôn ngữ cơ bản trong Backus-Naur Form
(BNF). Điều này đúng cho bất kỳ ngôn ngữ nào. Nó vượt xa
phạm vi của bài giảng này đi vào chi tiết nhiều về ngôn ngữ
chính thức. Chúng tôi sẽ giải thích những vấn đề cơ bản với sự
trợ giúp của một ví dụ đơn giản. Xem xét các ngôn ngữ sau đây,
phù hợp để thực hiện các biểu thức nhị phân hợp lý:
- Mô tả BNF gồm cái gọi là quy tắc cú pháp. Biểu tượng trong góc
dấu ngoặc <> được gọi là ký hiệu không kết thúc, tức là ký hiệu
được dẫn xuất tiếp tục. Ký hiệu giữa dấu ngoặc kép được gọi là
ký hiệu kết thúc, tức là ký hiệu không được dẫn xuất tiếp tục.
Luật đầu tiên S:= <exp> định nghĩa ký hiệu bắt đầu. Một nguyên
tắc chung của BNF

non-terminal

: =

deriv
1
|

deriv
2
|

|

deriv
n


;
Tìm hiểu về lập trình di truyền – Genetic Programming

Hình 2 – Cây biểu diễn của (+(*3 X) (SIN (+ X 1)))
- Định nghĩa tập không kết thúc có thể được mở rộng, nơi mà các
biến thể khác nhau được ngăn cách bởi các dấu thẳng đứng. Để
có được một cảm giác như thế nào để làm việc với các mô tả ngữ
pháp BNF, chúng tôi sẽ hiển thị từng bước làm thế nào biểu thức
(KHÔNG (x hoặc y)) có thể được derivated từ các ngôn ngữ trên.
Để đơn giản, chúng ta bỏ đi dấu ngoặc kép đối với những biểu
tượng thiết bị đầu cuối:
Tìm hiểu về lập trình di truyền – Genetic Programming

Hình 3 – Cây phân tích của (NOT (x OR y))
1. Chúng ta phải bắt đầu với các ký hiệu bắt đầu: <exp>
2. Chúng ta thay thế <exp> với các dẫn xuất có thể thứ hai:
<
exp
> → (<neg>< exp
>)

3. Các ký hiệu <neg> chỉ có thể được mở rộng với các tập kết
thúc NOT
(<neg><
exp
>) → (NOT < exp
>)

4. Tiếp theo, chúng ta thay thế <exp> với dẫn xuất thứ ba có thể

(NOT < exp >) → (NOT (< exp ><bin><
exp
>))

5. Chúng ta mở rộng các dẫn xuất thứ hai có thể cho <bin>
(NOT (<
exp
><bin>< exp >)) → (NOT (< exp > OR < exp
>)
)

6. Sự xuất hiện đầu tiên của <exp> được mở rộng với các dẫn
xuất đầu tiên
Tìm hiểu về lập trình di truyền – Genetic Programming
(NOT (<
exp
> OR < exp >)) → (NOT (<var> OR <
exp
>))

7. Sự xuất hiện thứ hai của hexpi được mở rộng với các dẫn xuất
đầu tiên
(NOT (<var> OR < exp >)) → (NOT (<var> OR
<
var
>)
)

8. Bây giờ chúng tôi thay thế hvari đầu tiên với sự thay thế tương
ứng đầu tiên

(NOT (< var > OR <var>)) → (NOT (x OR
<
var
>))

9. Cuối cùng, ký hiệu không kết thúc cuối cùng là mở rộng với sự
lựa chọn thứ hai
(NOT (x OR <var>)) → (NOT (x OR
y
))

- Như một dẫn xuất đệ quy có cấu trúc cây. Đối với các ví dụ trên, cây
dẫn xuất đã được hình dung như trong hình 3
I. 3. Tính chất của lập trình di truyền
- Lập trình di truyền có tổng cộng 16 tính chất sau:
 Thuộc tính 1: Bắt đầu với câu hỏi “Làm gì để giải quyết vấn đề”
 Thuộc tính 2: “Làm việc đó như thế nào”
 Thuộc tính 3: Kết quả là một chương trình máy tính
 Thuộc tính 4: Tự động xác định kích thước của chương trình
 Thuộc tính 5: Sử dụng lại mã
 Thuộc tính 6: Sử dụng lại tham số
 Thuộc tính 7: Lưu trữ nội bộ
 Thuộc tính 8: Kế thừa, lặp và đệ qui
 Thuộc tính 9: Tự tổ chức phân cấp
 Thuộc tính 10: Tự động xác định kiến trúc chương trình
 Thuộc tính 11: Phạm vi rộng lớn của ý tưởng chương trình
 Thuộc tính 12: Mô tả rõ ràng
 Thuộc tính 13: Xử lý vấn đề độc lập
Tìm hiểu về lập trình di truyền – Genetic Programming
 Thuộc tính 14: Ứng dụng rộng lớn

 Thuộc tính 15: Chia nhỏ bài toán
 Thuộc tính 16: Cạnh tranh với kết quả do con người thực hiện
I. 4. Các bƣớc của lập trình di truyền
- Lập trình di truyền bao gồm 2 bước là bước chuẩn bị và bước thực thi
I. 4. 1. Bƣớc chuẩn bị của lập trình di truyền
- Có 5 điểm chính trong bước chuẩn bị của lậo trình di truyền mà
người dùng phải xác định như sau:
(1) Tập các kết thúc cho mỗi nhánh của cây lập trình di truyền (VD:
các giá trị độc lập của bái toán, các hàm có biến số zero và các
giá trị hằng số ngẫu nhiên )
(2) Tập các hàm ban đầu cho mỗi nhánh của cây lập trình di truyền
(3) Độ thích nghi (tăng lên hoặc giảm đi độ thích nghi của các cá thể
trong quần thể)
(4) Các tham số cho việc điều khiển hoạt động
(5) Tiêu chí kết thúc và phương thức miêu tả kết quả
- Bước chuẩn là bước người sử dụng chỉ ra miền và bài toán cụ thể sẽ
được thực hiện trước khi chương trình tự động thực hiện việc giải
quyết bài toán

Hình 4 - Bước chuẩn bị của lập trình di truyền
- Hình 4 cho thấy năm bước quan trọng chuẩn bị cho cơ bản của lập
trình di truyền. Các bước chuẩn bị (được hiển thị ở phía trên của
Độ thích nghi
Tham số
Tiêu chí kết thúc và
biểu diễn kết quả
GP
Tập hàm
Tập kết thúc
Tìm hiểu về lập trình di truyền – Genetic Programming

hình) là đầu vào cho hệ thống lập trình di truyền. Một chương trình
máy tính (được hiển thị ở phía dưới) là đầu ra của hệ thống lập trình
di truyền. Chương trình cũng được tạo ra lời giải tự động bằng lập
trình di truyền, hoặc gần như lời giải, các vấn đề của người sử dụng.
Di truyền lập trình đòi hỏi một tập hợp các thành phần ban đầu để
bắt đầu
I. 4. 2. Bƣớc thực thi của lập trình di truyền
- Lập trình di truyền thường bắt đầu bằng việc khởi tạo ngẫu nhiên
một quần thể các chương trình máy tính gồm các chương trình có
thành phần thích hợp. Lập trình di truyền lặp đi lặp lại biến đổi quần
thể các chương trình máy tính thành một quần thể các thế hệ mới
bằng cách áp dụng các toán tử di truyền. Những toán tử được áp
dụng trong việc lựa chọn cá thể từ quần thể. Các cá thể có xác suất
được chọn thực hiện thuật toán di truyền dựa trên độ thích nghi
(thước đo độ thích nghi được cung cấp bởi người sử dụng trong phần
3 của bước chuẩn 3). Việc chuyển đổi lặp đi lặp lại của quần thể
được thực hiện bên trong vòng lặp các thế hệ chính của chương trình
di truyền.
- Bước thực thi của lập trình di truyền (sơ đồ của lập trình di truyền)
như sau:
(1) tạo ngẫu nhiên một quần thể ban đầu (thế hệ 0) của chương trình
máy tính bao gồm các hàm và kết thúc có sẵn
(2) lặp đi lặp lại thực hiện các bước sau đây (được gọi là một thế hệ)
trên quần thể cho đến khi các tiêu chí kết thúc được thỏa mãn:
a. Thực hiện từng chương trình trong quần thể và xác định độ thích
nghi của chương trình (một cách rõ ràng hoặc không rõ ràng) sử
dụng thước đo độ thích nghi của vấn đề
Tìm hiểu về lập trình di truyền – Genetic Programming
b. Chọn một hoặc hai chương trình riêng từ quần thể với xác suất
dựa vào tập thích nghi (với việc chọn lặp lại được phép) để thực

hiện các toán tử di truyền trong (c)
c. Tạo mới chương trình cho quần thể bằng cách áp dụng theo
những toán tử di truyền với xác suất quy định sau:
i. Sao chép: Sao chép những chương trình được lựa chọn để
tạo quần thể mới
ii. Lai ghép: Tạo chương trình con mới cho quần thể mới bằng
cách kết hợp ngẫu nhiên các phần được lựa chọn từ hai
chương trình đã chọn
iii. Đột biến: Tạo chương trình con mới cho quần thể mới bằng
cách đột biến ngẫu nhiên các phần được lựa chọn từ hai
chương trình đã chọn
iv. Thay đổi kiến trúc: Chọn một toán tử làm thay đổi kiến trúc
từ các cấu trúc có sẵn của toán tử và tạo ra một chương trình
con mới cho quần thể mới bằng cách áp dụng lựa chọn toán
tử thay đổi kiến trúc cho chương trình lựa chọn
(3) Sau khi các tiêu chí kết thúc được thỏa mãn, duy nhất chương trình
tốt nhất trong quần thể sẽ được xem là kết quả trong quá trình chạy
(tốt nhất so với cá thể) được sử dụng và thiết kế như là kết quả của
quá trình xử lý. Nếu chạy thành công, kết quả có thể là một lời giải
(hoặc lời giải gần đúng) cho vấn đề
I. 4. 2. 1. Tạo quần thể ban đầu của chƣơng trình máy tính
- Lập trình di truyền bắt đầu với giả thiết ban đầu của hàng ngàn
chương trình máy tính được sinh ra ngẫu nhiên. Các tập hàm có thể
xuất hiện tại các điểm bên trong của cây chương trình bao gồm các
hàm số học thông thường và các toán tử điều kiện. Các tập kết thúc
Tìm hiểu về lập trình di truyền – Genetic Programming
xuất hiện tại các điểm bên ngoài thường bao gồm các yếu tố đầu vào
bên ngoài của chương trình (chẳng hạn như các biến độc lập X và Y)
và các hằng số ngẫu nhiên (như 3.2 và 0.4). Các chương trình được
tạo ngẫu nhiên có kích thước và hình dạng khác nhau

I. 4. 2. 2. Hàm thích nghi
- Các khái niệm khó khăn nhất và quan trọng nhất của lập trình di
truyền là hàm thích nghi. Các hàm thích nghi xác định một chương
trình có khả năng giải quyết vấn đề tốt như thế nào. Nó thay đổi rất
nhiều từ một dạng chương trình kế tiếp. Ví dụ, nếu tạo ra một
chương trình di truyền để đặt thời gian của đồng hồ, các hàm thích
nghi đơn giản là số lần mà đồng hồ là chạy sai. Thật không may, có
vài vấn đề thì hàm thích nghi dễ dàng, hầu hết trường hợp cần sửa
đổi nhỏ vấn đề để tìm các hàm thích nghi
I. 4. 2. 3. Hàm và kết thúc
- Các tập kết thúc và tập hàm là các thành phần quan trọng của lập
trình di truyền. Các tập kết thúc và tập hàm là thành phần cơ bản của
các chương trình được thực hiện. Các tập kết thúc bao gồm các biến
và các hằng số của chương trình. Trong ví dụ mê cung, các tập kết
thúc sẽ có ba lệnh: phía trước, bên phải và trái. Các tập hàm bao gồm
các hàm của chương trình. Trong ví dụ mê cung các tập hàm sẽ có:
Nếu "chấm", sau đó làm x ngược lại làm y. Các hàm là một số chức
năng toán học, chẳng hạn như cộng trừ nhân chia và các chức năng
phức tạp khác
I. 4. 2. 4. Toán tử lai ghép
- Hai toán tử chính tồn tại để thay đổi cấu trúc trong lập trình di
truyền. Điều quan trọng nhất là toán tử lai ghép. Trong toán tử lai
ghép, hai lời giải được kết hợp lai ghép để tạo thành hai lời giải mới
Tìm hiểu về lập trình di truyền – Genetic Programming
hoặc lời giải con. Các lời giải cha mẹ được lựa chọn từ quần thể
bằng hàm thích nghi của những lời giải. Ba phương pháp tồn tại để
lựa chọn các lời giải cho toán tử lai ghép. Phương pháp đầu tiên sử
dụng xác suất dựa trên độ thích nghi của lời giải. Nếu f (si (t)) là độ
thích nghi của lời giải Si và
M




f (s
j
(
t
))

j
=
1

là tổng của tất cả các thành viên trong quần thể, sau đó xác suất mà
các lời giải Si sẽ được sao chép vào các thế hệ tiếp theo là:
f (s
i
(
t
))


M



f (s
j
(
t

))

j
=
1
- Một phương pháp để lựa chọn các lời giải được sao chép là lựa chọn
cạnh tranh. Thông thường lập trình di truyền chọn hai lời giải ngẫu
nhiên. Các lời giải pháp với độ thích nghi cao hơn sẽ giành chiến
thắng. Phương pháp này mô phỏng các mô hình giao phối sinh học,
trong đó, hai thành viên của cùng một giới tính sẽ cạnh tranh để giao
phối với một thành viên thứ ba của một giới tính khác. Phương pháp
cuối cùng là phương pháp được thực hiện theo thứ hạng. Trong lựa
chọn xếp hạng, lựa chọn được dựa trên xếp hạng (không phải là giá
trị số) của độ thích nghi của lời giảitrong quần thể. Việc tạo ra các
con từ toán tử lai ghép hoàn thành bằng cách xóa các đoạn giao nhau
của cha mẹ đầu tiên và sau đó chèn các đoạn giao nhau của cha mẹ
thứ hai. Các con thứ hai được lập theo một cách đối xứng. Ví dụ
xem xét hai biểu thức S trong hình. 6,6, được viết bằng một ngôn
ngữ lập trình sửa đổi mô hình và biểu diễn bằng cây
Tìm hiểu về lập trình di truyền – Genetic Programming
- Một cải tiến quan trọng thể hiện các lập trình di truyền trên di truyền
hơn thuật toán di truyền là khả năng tạo ra hai giải pháp mới từ các
giải pháp tương tự. Trong hình. 6,7 cùng một cha mẹ được sử dụng
hai lần để tạo ra hai con mới
I. 4. 2. 5. Toán tử đột biến
- Đột biến là một tính năng quan trọng của lập trình di truyền. Hai loại
đột biến có thể xảy ra. Loại đầu tiên là dạng hàm có thể thay thế một
hàm hoặc kết thúc bởi một kết thúc. Loại thứ hai là một cây con có
thể thay thế toàn bộ cây con khác. Hình 6.8 giải thích các khái niệm
về đột biến

I. 5. Đặc điểm của lập trình di truyền
- Lập trình di truyền hiện nay cung cấp máy có khả năng cạnh tranh với
con người. Dựa vào những diểm này nên lập trình di truyền có 4 đặc
điểm chính:
 Cạnh tranh với con người
 Kết quả tốt
 Thường xuyên
 Máy thông minh
I. 5. 1. Thế nào là “Cạnh tranh với con ngƣời”

- Trong cố gắng đánh giá một phương pháp tự động giải quyết bài
toán, câu hỏi được đặt ra là liệu có phải bất kỳ bài toán nào cũng
được chứng minh. Vấn đề luận chứng trong trí tuệ nhân tạo và máy
học thông thường là cái vấn đề giả tạo, được lưu hành bên trong các
nhóm học thuật đó là phương pháp nghiên cứu cụ thể. Những vấn đề
này thường liên quan đến vấn đề đang đeo đuổi của của bất kỳ nhà
khoa học hay kỹ sư bên ngoài lĩnh vực trí tuệ nhân tạo và máy học
Tìm hiểu về lập trình di truyền – Genetic Programming

Hình 6 - Phép lai ghép cho lập trình di truyền. Phần được tô đậm trên 2
cây cha mẹ được hoán đổi để tạo con cháu hoặc cây con. (cây con bên
phải biểu diễn cây phân tích cú pháp cho phương trình bậc 2)
- Đòi hỏi là có máy thể hiện hành vi như con người sẽ được tổng kết
từ việc sử dụng trí tuệ nhân tạo
Tìm hiểu về lập trình di truyền – Genetic Programming

Hình 7 - Minh họa những thuận lợi chính của lập trình di truyền so
với thuật giải di truyền. Trong lập trình di truyền cha mẹ giống nhau
có thể có con khác nhau, trong khi trong thuật giải di truyền cha mẹ
giống nhau sẽ có con giống nhau. Phần to đậm diễn tả cây con được

hoán đổi
- Tuyên bố của Smuel minh họa cho mục đích thông thường của
những người đi tiên phong trong năm 1950 của lĩnh vực trí tuệ nhân
tạo và học máy. Thật vậy, việc tạo ra máy móc để xử lý các kết quả
giống như của con người là lý do cho sự tồn tại của các lĩnh vực trí
tuệ nhân tạo và máy học. Để thực hiện mục tiêu này cụ thể hơn,
chúng ta nói rằng kết quả là "cạnh tranh với con người" nếu đáp ứng
một hoặc nhiều tám tiêu chuẩn trong bảng 1.
- Tám tiêu chuẩn trong Bảng 1 là các thuộc tính mong muốn được
trang bị cho lĩnh vực trí tuệ nhân tạo, máy học và lập trình di truyền.
Tìm hiểu về lập trình di truyền – Genetic Programming
Đó là, một kết quả được đánh giá "cạnh tranh với con người" vì xác
nhận bởi các nhà nghiên cứu trong các lĩnh vực chuyên ngành đang
cố gắng để tạo ra máy thông minh. Thay vào đó, một kết quả xử lý
bởi phương pháp tự động hóa phải dành được sự đánh giá của "cạnh
tranh với con người" thực tế độc lập được tạo ra bởi phương pháp tự
động.

Hình 8 - Hai dạng khác nhau của đột biến. Cây phân tích bên trên là cây
gốc. Cây phân tích phía dưới bên trái minh họa cho đột biến của nút kết
thúc đơn (2) với những nút kết thúc đơn khác (a), cho đột biến của hàm
chức năng đơn (-) cho hàm chức năng đơn khác (+). Cây phân tích phía
trên bên phải minh họa thay thế của cây con bởi cây con khác
Bảng 1 – 8 tiêu chuẩn kết quả tự động là “cạnh tranh với con người”

×