Pemrograman Genetika

6. Pemrograman Genetika




6.1 Pengenalan Pemrograman Genetika
Salah satu tantangan utama ilmu komputer adalah untuk menjadikan komputer mampu melakukan apa
yang ingin kita lakukan, tanpa memberitahu itu bagaimana melakukannya. Pemrograman genetik (GP)
membahas tantangan ini dengan menyediakan sebuah metode yang secara otomatis mampu menciptakan
sebuah program komputer yang bekerja dari pernyataan masalah yang kita berikan. Pemrograman
genetik mencapai tujuan ini dengan pemrograman otomatis ( disebut juga sintesis program atau
induksi program) oleh genetik pemrograman dengan memanfaatkan populasi program komputer 
menggunakan prinsip-prinsip seleksi alam Darwin dan operasi terinspirasi secara biologis. 
Operasi yang termasuk didalamnya adalah reproduksi, crossover (rekombinasi seksual), mutasi,
dan operasi arsitektur-mengubah berpola setelah duplikasi gen dan penghapusan gen di alam.
Misalnya, unsur populasi mungkin sesuai dengan penempatan delapan ratu pada papan catur, dan
fungsi fitness fi mungkin menghitung jumlah ratu yang tidak diserang oleh ratu lainnya.
Mengingat perhitungan yang sesuai dari operator genetik dimana populasi awal penempatan ratu
dapat menelurkan koleksi baru dari penempatan ratu ini, sebuah sistem yang dirancang sesuai bisa
memecahkan  masalah delapan ratu. Keunikan GP berasal dari fakta bahwa sistem ini memanipulasi
populasi program-in terstruktur berbeda dengan banyak sistem dalam perhitungan evolusi lainnya
di mana unsur-unsur populasi yang diwakili menggunakan fl di string lebih dari beberapa abjad.
Dalam bab ini, konsep-konsep dasar, kerja, representasi dan aplikasi dari program GP genetik
akan dibahas secara rinci. 

6.2 Perbandingan GP dengan Pendekatan lain
               Pemrograman genetik (GP) adalah pemrograman yang bersifat  independen, pendekatan pada
pemecahan masalah domain di lakukan pada program komputer yang berkembang untuk solusi
mendapati masalah. Teknik solusi didasarkan pada prinsip Darwin dari "survival of the fi ttest" dan
hal ini sangat berkaitan erat dengan algoritma genetika (GA).
Terdapat tiga perbedaan penting antara GA dan GP :
·         Struktur: GP biasanya menggunakan struktur pohon sementara GA ini berevolusi biner atau 
real string number.
·         Aktif Vs Pasif: Karena GP biasanya berkembang dengan  program komputer, solusi yang 
dapat dijalankan tanpa pengolahan pasca yaitu struktur aktif, sementara GA ini biasanya beroperasi
 pada string kode biner yaitu struktur pasif, yang membutuhkan pengolahan pasca. 
·         Variable Vs fi panjang yang tetap: Dalam GA versi lama, panjang string biner adalah  tetap 
sebelum prosedur solusi dimulai. Namun pohon parsing GP dapat bervariasi dalam panjang seluruh 
jalankan. Meskipun diakui bahwa pemrograman GA lebih baik dari pada GP karena menggunakan
variabel string panjang.
 
               Kemampuan untuk mencari ruang solusi dan menemukan daerah yang berpotensi 
mengandung solusi optimal untuk masalah yang diberikan adalah salah satu komponen fundamental
dari yang paling arti fi cial intelligence (AI) sistem. Ada tiga jenis utama dari pencarian; buta pencarian,
mendaki bukit dan pencarian balok. GP adalah diklasifikasikan sebagai pencari balok karena
mempertahankan populasi solusi yang lebih kecil dari semua solusi yang tersedia. GP juga biasanya
diimplementasikan sebagai algoritma pencarian yang lemah karena tidak mengandung masalah spesifik
pengetahuan, meskipun beberapa penelitian telah diarahkan "stronglytypedgeneticprogramming"
ndregions fi .HoweverwhileGPcan mengandung solusi optimal, algoritma pencarian lokal tambahan
biasanya diperlukan untuk mencari optima tersebut. algoritma memetika dapat memenuhi tanggung
peran ini, dengan menggabungkan algoritma evolusioner dengan masalah spesifik algoritma c pencari
untuk menemukan solusi optimal. pemrograman genetik juga berbeda dari semua pendekatan lain
untuk Arti fi cial kecerdasan, pembelajaran mesin, jaringan saraf, sistem adaptif, pembelajaran
penguatan, atau logika otomatis di semua (atau sebagian besar) dari tujuh cara berikut: 
(1) Representasi: pemrograman genetik terang-terangan melakukan pencari untuk solusi untuk
masalah yang diberikan dalam program ruang.
(2) Peran point-to-point transformasi dalam pencarian: pemrograman genetik tidak melakukan
pencarian dengan mengubah satu titik dalam ruang pencarian ke titik lain, melainkan mengubah satu
set poin ke satu set poin. 
(3) Peran mendaki bukit dalam pencarian: pemrograman genetik tidak bergantung secara eksklusif
pada mendaki bukit serakah untuk melakukan pencarian, melainkan mengalokasikan sejumlah
percobaan, dengan cara berprinsip, untuk pilihan yang dikenal rendah.
(4) Peran determinisme dalam pencarian: pemrograman genetik melakukan pencarian probabilistik. 
(5) Peran basis pengetahuan eksplisit: Tidak ada
(6) Peran logika formal dalam pencarian: Tidak ada.
(7) dasar-dasar teknik: biologis terinspirasi.

·         Pertama, mempertimbangkan masalah representation. Sebagian besar teknik kecerdasan buatan, pembelajaran mesin, jaringan saraf, sistem adaptif, pembelajaran penguatan, atau logika otomatis mempekerjakan secara khusus struktur sebagai pengganti program komputer biasa. Struktur pengganti termasuk jika-maka aturan produksi, Horn klausa, pohon keputusan, jaringan Bayesian, logika proporsional, tata bahasa formal, diagram keputusan biner, frame, cluster konseptual, konsep set, vektor berat numerik (untuk jaring saraf), vektor koefisien numerik koefisien fi untuk polinomial atau fi xed ekspresi lain (untuk sistem adaptif), aturan sistem fi er genetik klasifikasi, fi xed tabel nilai (seperti dalam pembelajaran penguatan), atau string kromosom linear (seperti dalam algoritma genetika konvensional). Terkecuali situasi yang tidak biasa, beberapa programmer juta komputer tidak menggunakan salah satu struktur pengganti untuk menulis program komputer. Sebaliknya, selama lima dekade, programmer manusia telah bertahan dalam menulis program komputer yang mencampurkan banyaknya jenis perhitungan (misalnya, aritmatika dan logis) yang beroperasi pada bermacam jenis variabel (misalnya, integer, terapung-point, dan Boolean). Programmer telah bertahan dalam menggunakan memori internal untuk menyimpan hasil perhitungan antara untuk menghindari mengulangi perhitungan pada setiap kesempatan ketika hasilnya diperlukan. Terlebih lagi, mereka telah bertahan dalam melewati parameter untuk subrutin sehingga mereka dapat menggunakan kembali subrutin mereka dengan instantiations berbeda nilai. Dan mereka telah bertahan dalam mengatur subrutin mereka ke hirarki. Semua alat di atas pemrograman komputer biasa telah digunakan sejak awal era komputer elektronik di l940s. Secara signifikan, tidak ada telah jatuh ke dalam tidak digunakan oleh programmer manusia.
Namun, terlepas dari utilitas nyata dari alat-alat setiap hari dari pemrograman komputer, alat-alat ini sebagian besar absen dari teknik yang ada otomatis mesin belajar, jaringan saraf, arti fi cial intelligence, sistem adaptif, pembelajaran penguatan, dan logika otomatis. Kami percaya bahwa pencarian solusi untuk tantangan untuk mendapatkan computersto memecahkan masalah tanpa secara eksplisit programmingthem harus dilakukan di ruang program komputer. Tentu saja, setelah Anda menyadari bahwa pencarian harus dilakukan program ruang, Anda langsung dihadapkan dengan tugas dari fi nding program yang diinginkan dalam ruang yang sangat besar dari program mungkin. Seperti yang akan terlihat, pemrograman genetik melakukan tugas ini penemuan Program. Ini menyediakan cara masalah-independen untuk produktif mencari ruang mungkin program komputer untuk fi nd program yang memuaskan memecahkan masalah yang diberikan.
·         Kedua, perbedaan lain antara pemrograman genetik dan teknik hampir setiap otomatis menyangkut sifat dari pencarian yang dilakukan di ruang pencarian yang dipilih teknik ini. Hampir semua metode non-genetik ini menggunakan strategi point-to point yang mengubah satu titik dalam ruang pencarian ke lain programmings point.Genetic tunggal berbeda karena beroperasi dengan secara eksplisit budidaya populasi yang beragam dari sering-tidak konsisten dan sering bertentangan pendekatan untuk memecahkan masalah. pemrograman genetik melakukan pencarian berkas di ruang program dengan iterasi mengubah satu populasi program komputer calon ke populasi baru program.
·         Ketiga, mempertimbangkan peran mendaki bukit. Ketika lintasan melalui ruang pencarian adalah dari satu titik tunggal untuk titik lain, ada godaan hampir tak tertahankan untuk memperpanjang pencarian hanya dengan memindahkan ke titik yang dikenal superior ke titik saat ini. Akibatnya, teknik hampir semua otomatis bergantung secara eksklusif pada mendaki bukit serakah untuk membuat transformasi dari titik saat ini di ruang pencarian ke titik berikutnya. Godaan untuk mengandalkan mendaki bukit diperkuat karena banyak masalah mainan dalam literatur dari ladang pembelajaran mesin dan arti fi intelijen resmi sangat sederhana yang mendaki bukit sebenarnya bisa, memecahkan mereka. Namun, popularitas tidak bisa menyembuhkan kecenderungan bawaan mendaki bukit untuk menjadi terjebak pada optimum lokal yang tidak optimal global. masalah yang menarik dan trivial umumnya memiliki poin tinggi hasil yang tidak dapat diakses untuk mendaki bukit serakah. Bahkan, keberadaan titik-titik dalam ruang pencarian yang tidak dapat diakses untuk mendaki bukit adalah kerja yang baik definisi dari non-kesia. Fakta bahwa pemrograman genetik tidak bergantung pada strategi pencarian point-to-point membantu liberateit dari miopia mendaki bukit. pemrograman genetik bebas untuk mengalokasikan sejumlah terukur tertentu percobaan untuk poin yang dikenal rendah. Alokasi ini cobaan untuk individu dikenal-rendah tidak termotivasi oleh badan amal, tetapi dengan harapan bahwa itu akan sering menggali lintasan unobvious melalui ruang pencarian yang mengarah ke poin dengan hasil akhirnya lebih tinggi. Fakta bahwa pemrograman genetik beroperasi dari populasi memungkinkan untuk membuat sejumlah kecil bergerak petualang sekaligus mengejar jalan lebih segera memuaskan dari muka melalui ruang pencarian.
·         Keempat, perbedaan lain antara pemrograman genetik dan hampir setiap teknik lain dari arti kecerdasan fi resmi dan pembelajaran mesin adalah bahwa pemrograman genetik melakukan pencarian probabilistik. Sekali lagi, pemrograman genetik tidak unik dalam hal ini. Misalnya, simulasi annealing dan algoritma genetika juga probabilistik. Namun, sebagian besar teknik otomatis yang ada adalah deterministik.
·         Kelima, mempertimbangkan peran basis pengetahuan dalam mengejar tujuan secara otomatis membuat program komputer. Banyak ilmuwan komputer tanpa bertanya menganggap bahwa logika formal harus memainkan peran terkemuka dalam sistem untuk secara otomatis membuat program komputer. Demikian pula, sebagian besar peneliti kontemporer dalam arti kecerdasan fi cial percaya bahwa sistem untuk secara otomatis menciptakan program komputer harus menggunakan basis pengetahuan eksplisit. Memang, selama empat dekade terakhir, lapangan dari arti fi intelijen resmi telah didominasi oleh keyakinan kuat menegaskan bahwa tujuan mendapatkan komputer untuk memecahkan masalah secara otomatis dapat dicapai hanya melalui metode logika inferensi formal dan pengetahuan. Pendekatan ini biasanya memerlukan pemilihan representasi pengetahuan, akuisisi pengetahuan, yang codi fi kasi pengetahuan ke dalam basis pengetahuan, penitipan basis pengetahuan ke dalam komputer, dan manipulasi pengetahuan di komputer menggunakan metode inferensi logika formal. Mencolok, pemrograman genetik tidak bergantung pada basis pengetahuan eksplisit untuk mencapai tujuan secara otomatis membuat program komputer. Meskipun ada banyak cara opsional untuk menggabungkan pengetahuan domain menjadi lari dari pemrograman genetik, pemrograman genetik tidak memerlukan (atau biasanya menggunakan) basis pengetahuan eksplisit untuk memandu pencarian.
·         Keenam, mempertimbangkan peran metode inferensi logika formal. Banyak ilmuwan komputer tanpa bertanya menganggap bahwa setiap teknik pemecahan masalah harus logis suara, deterministik, logis konsisten, dan pelit. Dengan demikian, metode yang paling konvensional arti fi intelijen resmi dan mesin pembelajaran memiliki karakteristik ini. Namun, logika tidak mengatur dua jenis yang paling penting dari proses pemecahan masalah yang kompleks, yaitu, proses penemuan yang dilakukan oleh manusia kreatif dan evolusi proses occurringin alam. Sebuah ide baru yang dapat secara logis disimpulkan dari fakta-fakta yang diketahui dalam lapangan, menggunakan transformasi yang mengetahui lapangan, tidak dianggap sebagai penemuan. Harus ada apa hukum paten mengacu sebagai "langkah logis" (yaitu, sebuah fi unjusti ed langkah) untuk membedakan penemuan diduga dari apa yang mudah deducible dari yang sudah dikenal.

Desain entitas kompleks oleh proses evolusi di alam adalah jenis penting dari pemecahan masalah yang tidak diatur oleh logika. Di alam, solusi untuk masalah desain yang ditemukan oleh proses probabilistik evolusi dan seleksi alam. Ini bukan proses logis. Memang, alternatif yang tidak konsisten dan kontradiktif berlimpah. Bahkan, keragaman genetik tersebut diperlukan untuk proses evolusi untuk berhasil. Secara signifikan, solusi yang dibuat oleh evolusi dan seleksi alam hampir selalu berbeda dari yang dibuat dengan metode konvensional arti fi kecerdasan dan mesin resmi pembelajaran dalam satu hal yang sangat penting. solusi Evolved tidak rapuh; mereka biasanya mampu bergulat dengan kebaruan abadi lingkungan nyata. Demikian pula, pemrograman genetik tidak dipandu oleh metode inferensi logika formal dalam pencarian untuk sebuah program komputer untuk memecahkan masalah yang diberikan. Ketika tujuannya adalah penciptaan otomatis dari program komputer, semua pengalaman kami telah membawa kita untuk menyimpulkan bahwa pendekatan non-logis yang digunakan dalam proses penemuan dan evolusi alam jauh lebih bermanfaat daripada prinsip-prinsip logika-driven dan pengetahuan berbasis konvensional arti fi intelijen resmi. Singkatnya, "logika dianggap berbahaya.

·         Ketujuh, metafora biologis yang mendasari pemrograman genetik sangat berbeda dari pinnings bawah dari semua teknik lain yang sebelumnya telah mencoba dalam mengejar tujuan secara otomatis membuat program komputer. Banyak ilmuwan komputer dan matematika yang baf fl ed oleh saran bahwa biologi mungkin relevan dengan medan mereka. Sebaliknya, kita tidak melihat biologi sebagai juga tidak mungkin dari yang menarik solusi untuk tantangan untuk mendapatkan komputer untuk memecahkan masalah tanpa secara eksplisit pemrograman itu. Genetik pemrograman pekerjaan con fi rms pandangan Turing bahwa memang ada "hubungan" antara mesin kecerdasan dan evolusi dengan menggambarkan implementasi kami dari jalan ketiga Turing untuk mencapai kecerdasan mesin.

6.3 Primitif Pemrograman Genetik
Setiap solusi berevolusi dengan GP dirakit dari dua set node primitif; terminal dan terminal functions.The set berisi node yang providean masukan untuk sistem GP sedangkan fungsi set berisi node yang memproses nilai-nilai yang sudah dalam sistem. Konstanta dapat digunakan di GP dengan memasukkan mereka di set terminal. Setelah proses evolusi dimulai, sistem GP secara acak memilih node dari salah mengatur atau sehingga tidak dapat memanfaatkan semua node yang tersedia. Namun peningkatan ukuran setiap set simpul memperbesar ruang pencarian. Oleh karena itu hanya satu set simpul relatif sederhana pada awalnya disediakan dan node biasanya ditambahkan hanya jika diperlukan.

6.3.1 Operator Genetik
Ada tiga operator evolusi besar dalam sistem GP:
·         Reproduksi: memilih individu dari dalam populasi saat ini akan disalin persis ke generation.There berikutnya beberapa cara memilih yang individu akan disalin termasuk "fi fitness proporsional" seleksi, "peringkat" seleksi dan "turnamen" pilihan.
·         Crossover: meniru rekombinasi seksual di alam, di mana dua solusi orangtua dipilih dan bagian dari subtree mereka bertukar dan karena masing-masing fungsi pameran properti "penutupan" (masing-masing anggota pohon mampu memproses semua nilai argumen mungkin), setiap Crossover operasi harus menghasilkan dalam pembentukan struktur hukum.
·         Mutasi: menyebabkan perubahan acak dalam individu sebelum diperkenalkan ke populasi berikutnya. Tidak seperti menyeberang, mutasi adalah aseksual dan dengan demikian hanya beroperasi pada satu individu. Selama mutasi baik semua fungsi atau terminal dikeluarkan di bawah node sewenang-wenang ditentukan dan cabang baru secara acak dibuat, atau node tunggal ditukarkan lain.

6.3.2 Pemrograman Genetik Generasi
GP telah mengembangkan dua approachesto utama berurusan dengan isu generasi tersebut; generasi dan steady state. Di GP generasi, terdapat juga-de fi generasi ned dan berbeda, dengan setiap generasi yang diwakili oleh populasi lengkap individu. Oleh karena itu setiap penduduk baru dibuat dari populasi yang lebih tua, yang kemudian menggantikan. Mapan GP tidak mempertahankan ini generasi diskrit tapi terus berkembang generasi sekarang menggunakan operator genetik yang tersedia.
Programming

6.3.3 Pohon Berbasis Genetik
Primitif dari GP, fungsi dan terminal node, harus dirakit menjadi struktur sebelum mereka dapat dieksekusi. Tiga jenis utama dari struktur yang ada: pohon, linear dan grafik. Dalam karya ini, input (struktur dioptimalkan atau dirancang) benar-benar membentuk jaringan grafik. Namun dengan duplikasi data sendi yaitu sama "simpul bersama" bisa ada di pohon yang sama pada lebih dari satu kesempatan, jaringan grafik ini diubah menjadi struktur pohon.

6.3.4 Representasi Pemrograman Genetik
Kebutuhan representasi yang baik dalam perhitungan evolusi, dan dalam arti fi intelijen resmi lebih umum, disebut masalah representasi. pemrograman genetik memiliki dua bentuk representasi; yang variational dan generatif. Representasi variational adalah deskripsi statis dari sebuah program dan tunduk pada variasi evolusi. Syarat utama untuk representasi variational adalah evolvability: evolusi program peningkatan fi fitness secara generasi ketika mengalami variasi genetik. Representasi generatif adalah produk dari representasi variasional, dan menggambarkan bentuk dinamis dari sebuah program. Persyaratan utamanya adalah bahwa hal itu dapat dijalankan. Namun, meskipun kebutuhan yang berbeda dari representasi variasional dan generatif, kebanyakan sistem GP tidak membedakan antara keduanya.

6.3.4.1 Representasi Biologi
Biologi tidak membedakan antara variational dan representasi generatif. Mereka disebut, masing-masing, genetik dan representasi genetik phenotypic.The, dari sudut pandang reduksionis, adalah linear, didistribusikan secara spasial, urutan atribut diwariskan. Setiap atribut diwariskan menggambarkan urutan asam amino dari protein. Pembangunan menafsirkan deskripsi ini dan menghasilkan protein; fundamental componentsof presentasi phenotypicre. Sekelompok protein kerja setelah tugas umum disebut jalur biokimia. Tugas-tugas yang dilakukan oleh jalur biokimia jatuh ke dalam tiga kelas yang luas: metabolik, sinyal dan ekspresi gen. Dari jumlah tersebut, jalur metabolisme yang dianggap paling mendasar bagi mereka menerapkan perilaku pengolahan sel, sementara sinyal dan jalur ekspresi gen mengambil peran gurational con fi. pengolahan biokimia sebesar manipulasi negara kimia sel melalui sistem reaksi kimia. jalur metabolisme terdiri dari enzim, suatu kelompok protein yang melaksanakan perilaku katalitik; memungkinkan reaksi yang akan bijak lain tidak mungkin dalam suhu selular relatif rendah. Enzim mencapai perilaku katalitik mereka dengan mengikat Speci fi c kimia, substrat enzim, dan membimbing reaksi mereka. Kerjasama dalam cara jalan metabolik muncul dari berbagi produk-substrat antara enzim, di mana produk dari satu enzim menjadi substrat lain.

6.3.4.2 Biomimetic Representasi
Representasi biologi memiliki sejumlah kualitas dibayangkan berguna, tapi biasanya tidak ditemukan, dalam representasi pemrograman genetik. Ini, meliputi: spesialisasi bentuk evolusi dan eksekusi; representasi evolvable, "dirancang" untuk evolusi; netralitas, meningkatkan keragaman genetik dan adaptasi; perilaku kurang dibatasi, sehingga lebih bebas untuk evolusi; dan posisi kemerdekaan, tidak membatasi fungsi gen ke posisi gen. Sebuah Banyaknya sistem GP meniru representasi genetik biologi. Banyak dari telah memperkenalkan tahap perkembangan, yang memungkinkan representasi genetik untuk menjadi independen dari representasi executable. Ini telah terbukti untuk meningkatkan keragaman genetik dan mendorong netralitas. Sejumlah pendekatan ini juga memungkinkan unit genic kedudukan independen dalam genom. Mimikri representasi fenotipik kurang umum. Namun, idiom komputasi telah digunakan untuk menggambarkan aksi enzim dan jalur biokimia. Analoginya aktivitas enzim telah digunakan untuk tujuan komputasi dalam domain arti fi cial. model evolusi pembangunan jalur juga telah dicoba.

6.3.4.3 Enzim Genetik Pemrograman Representasi
Enzim pemrograman genetik adalah sistem yang meniru biologi di kedua representasi genetik dan fenotipik. representasi fenotipik didasarkan pada sebuah abstraksi dari jalur metabolik. Tujuan dari sistem ini adalah untuk berevolusi analog dari jalur metabolisme dalam sirkuit logika kombinasional. Gambar 6.1 menunjukkan hubungan antara representasi dari GP enzim. Selama evolusi, sirkuit dikodekan sebagai urutan linear dari "gen"; dimana setiap gen menggambarkan preferensi masukan, kota-kota spesifisitas, dari gerbang logika tertentu atau terminal output.



Sebuah spesifisitas adalah nilai titik mengambang fl antara nol dan satu yang menunjukkan preferensi relatif untuk input (substrat). Setiap kegiatan masukan memakan memiliki spesifik kota fi didefinisikan untuk produk dari setiap kegiatan output. Representasi fenotip yang dihasilkan oleh genotipe divisualisasikan di pusat Gambar. 6.1. ketebalan garis menunjukkan relatif kota spesifik. Dalam prakteknya, jaringan harus terhubung sepenuhnya. Namun, untuk kejelasan hanya dominan dan beberapa kota spesifisitas resesif ditampilkan. Ketika sirkuit terealisasi, specicities dominan harus peta untuk koneksi sirkuit. Namun, sirkuit kombinasional harus non-berulang dan akibatnya tidak akan selalu mungkin untuk mengekspresikan koneksi paling disukai sirkuit elemen. Pendekatan ini diambil daripada membiarkan sirkuit valid atau menghambat representasi genetik.

Tanpa ragu, program dapat dianggap sebagai string. Namun demikian, dua keterbatasan penting yang membuat tidak mungkin untuk menggunakan representasi dan operasi dari GA sederhana kami:
1. Hal ini sebagian besar di tepat untuk mengasumsikan panjang yang tetap dari program.
2. Probabilitas untuk memperoleh program sintaksis benar ketika menerapkan inisialisasi sederhana kami, menyeberang, dan prosedur mutasi putus asa rendah.
Oleh karena itu, sangat diperlukan untuk memodifikasi representasi data dan operasi sehingga kebenaran sintaksis lebih mudah untuk menjamin. Pendekatan umum untuk mewakili program dalam pemrograman genetik adalah untuk mempertimbangkan program yang strees. Dengan demikian, inisialisasi dapat dilakukan secara rekursif, menyeberang dapat dilakukan dengan bertukar sub pohon, dan penggantian acak sub pohon dapat berfungsi sebagai operasi mutasi. Karena konstruksi adalah daftar bersarang, program dalam bahasa LISP-seperti sudah memiliki semacam struktur seperti pohon. Gambar 6.2 menunjukkan contoh bagaimana fungsi 3x + sin (x + 1) dapat dilaksanakan dalam LISP seperti bahasa dan bagaimana seperti fungsi LISPlike dapat dibagi menjadi pohon. Jelas, representasi pohon langsung sesuai dengan daftar bersarang program ini terdiri dari; ekspresi atom, seperti variabel dan konstanta, daun sedangkan fungsi sesuai dengan node non-cuti.
Ada satu dis penting keuntungan dari LISP pendekatan-itu sulit untuk memperkenalkan jenis kasus checking.In dari fungsi murni numerik seperti dalam contoh di atas, tidak ada masalah sama sekali. Namun, dapat diinginkan untuk memproses data numerik, string, dan ekspresi logis secara bersamaan. Ini adalah sulit untuk menangani jika kita menggunakan representasi pohon seperti pada Gambar. 6.2.

Dalam rangka untuk mendapatkan perasaan bagaimana bekerja dengan BNF keterangan tata bahasa, kita sekarang akan menunjukkan langkah demi langkah bagaimana ekspresi (TIDAK (x OR y)) dapat turunan dari bahasa di atas. Untuk mempermudah, kita menghilangkan tanda kutip untuk simbol terminal:
1. Kita harus mulai dengan simbol awal:  <exp>
2. Kami mengganti <exp> dengan derivasi kedua mungkin:
<exp> → (<neg><exp>)
3. Simbol <neg> hanya dapat diperluas dengan simbol terminal TIDAK:
(<Neg> <exp>) → (TIDAK <exp>)
4. Selanjutnya, kita ganti <exp> dengan derivasi ketiga mungkin:
(TIDAK <exp>) → (TIDAK (<exp> <bin> <exp>))
5. Kami memperluas derivasi kedua mungkin untuk <bin>:
(TIDAK (<exp> <bin> <exp>)) → (TIDAK (<exp> ATAU <exp>))


6. pertama terjadinya <exp> diperluas dengan derivasi pertama:
(NOT (<exp> ATAU <exp>)) → (TIDAK (<var> ATAU <exp>))
7. Terjadinya kedua hexpi diperluas dengan pertama derivasi, terlalu: (NOT (<var> ATAU
<exp>)) → (TIDAK (<var> ATAU <var>))
8. Sekarang kita ganti hvari pertama dengan alternatif pertama yang sesuai: (NOT (<var> ATAU <var>)) → (TIDAK (x OR <var>))
9. Akhirnya, simbol non-terminal lalu diperluas dengan alternatif kedua:
(NOT (x OR <var>)) → (TIDAK (x OR y))


6.4 Atribut di Pemrograman Genetik
Pemrograman genetik memiliki 16 atribut apa yang kadang-kadang disebut pemrograman otomatis atau sintesis program atau induksi program).
·         Atribut No 1 (Mulai dengan "Apa yang perlu dilakukan"): Dimulai dari pernyataan tingkat tinggi menentukan persyaratan dari masalah.
·         Atribut No 2 (Menceritakan kami "Bagaimana melakukannya"): Ini menghasilkan hasil dalam bentuk urutan langkah-langkah yang dapat dijalankan pada komputer.
·         Atribut No 3 (Menghasilkan program komputer): Ini menghasilkan anentity yang dapat dijalankan pada komputer.
Atribut No 4 (penentuan otomatis ukuran program): Memiliki kemampuan untuk secara otomatis menentukan jumlah yang tepat dari langkah-langkah yang harus dilakukan sehingga tidak memerlukan pengguna untuk prespecify ukuran dari solusi.
·         Atribut No 5 (Kode reuse): Memiliki kemampuan untuk secara otomatis mengatur kelompok yang berguna dari langkah-langkah sehingga mereka dapat digunakan kembali.
·         Atribut No 6 (penggunaan Parameterizedre): Memiliki kemampuan untuk menggunakan kembali kelompok langkah dengan instantiations yang berbeda nilai (parameter formal atau variabel dummy).
·         Atribut No 7 (storage internal): Memiliki kemampuan untuk menggunakan penyimpanan internal dalam bentuk variabel tunggal, vektor, matriks, array, tumpukan, antrian, daftar, memori relasional, dan struktur data lainnya.
·         Atribut No 8 (Iterasi, loop, dan recursions): Memiliki kemampuan untuk menerapkan iterasi, loop, dan recursions.
·         Atribut No 9 (Self-organisasi hierarki): Memiliki kemampuan untuk secara otomatis mengatur kelompok langkah menjadi sebuah hirarki.
·         Atribut No 10 (penentuan Automatic arsitektur program): Memiliki kemampuan untuk secara otomatis menentukan apakah akan menggunakan subrutin, iterasi, loop, recursions, dan penyimpanan internal, dan jumlah argumen yang dimiliki oleh masing-masing subroutine, iterasi, lingkaran, rekursi .
·         Atribut No 11 (Wide berbagai konstruksi pemrograman): Memiliki kemampuan untuk menerapkan analog dari pemrograman konstruksi yang pemrogram komputer manusia fi nd berguna, termasuk macro, perpustakaan, mengetik, pointer, operasi bersyarat, fungsi logis, fungsi integer, terapung fungsi-titik, fungsi bernilai kompleks, beberapa masukan, beberapa output, dan instruksi kode mesin.
·         Atribut No 12 (Well-de fi ned): Ini beroperasi dengan cara ned fi baik-de. Ini salah lagi membedakan antara apa yang pengguna harus menyediakan dan apa sistem memberikan.
·         Atribut No 13 (Soal-independent): Ini adalah masalah-independen dalam arti bahwa pengguna tidak harus memodifikasi langkah executable sistem untuk setiap masalah baru.
·         Atribut No 14 (Wide penerapan): Ini menghasilkan solusi yang memuaskan untuk berbagai macam masalah dari berbagai medan yang berbeda.
·         Atribut No 15 (Skalabilitas): Ini skala baik untuk versi yang lebih besar dari masalah yang sama.
·         Atribut No. 16 (Kompetitif dengan hasil yang dihasilkan manusia): Ini menghasilkan hasil yang kompetitif dengan yang dihasilkan oleh programmer manusia, insinyur, matematikawan, dan desainer.
6.5 Langkah Pemrograman Genetik

6.5.1 Persiapan Langkah Pemrograman Genetik
Figure6.4 showsthe lima langkah persiapan utama untuk versi dasar pemrograman genetik. Langkah-langkah persiapan (ditampilkan di atas angka) adalah input ke sistem pemrograman genetik. Sebuah program komputer (ditampilkan di bagian bawah) adalah output dari sistem pemrograman genetik. Program yang secara otomatis dibuat oleh pemrograman genetik dapat mengatasi, atau sekitar memecahkan, masalah theuser ini. pemrograman genetik membutuhkan satu set bahan primitif untuk memulai.



6.5.2 Pelaksanaan Langkah Pemrograman Genetik

6.5.2.1. Penciptaan Populasi inisial dari Program Komputer
pemrograman genetik dimulai dengan ribuan cairan primordial program komputer secara acak. Set fungsi yang mungkin muncul pada titik-titik internal pohon program dapat mencakup fungsi aritmatika biasa dan kondisional operator. Set terminal muncul pada titik-titik eksternal biasanya meliputi input eksternal program (seperti variabel independen X dan Y) dan acak konstanta (seperti 3,2 dan 0,4). Program-program secara acak dibuat biasanya memiliki berbagai ukuran dan bentuk.


6.6.2.2. Fungsi kecocokkan
Yang paling sulit dan konsep yang paling penting dari pemrograman genetik adalah fungsi kecocokkan. Fungsi kecocokkan menentukan seberapa baik program ini mampu memecahkan masalah. Hal ini sangat bervariasi dari satu jenis program ke jenis selanjutnya. Misalnya, jika satu adalah untuk membuat program genetik untuk mengatur waktu dari jam, fungsi kecocokkan akan hanya memperbaiki waktu pada jam yang salah. Sayangnya, beberapa masalah memiliki fungsi kecocokkan yang mudah; kebanyakan kasus memerlukan sedikit modifikasi dari masalah untuk menemukan kecocokkan.

6.5.2.3. Fungsi dan Terminal
Terminal dan fungsi set juga merupakan komponen penting dari pemrograman genetik. Pengaturan terminal dan fungsi adalah alfabet dari program yang akan dibuat. Set terminal terdiri dari variabel dan konstanta dari program. Dalam labirin misalnya, terminal set akan berisi tiga perintah: maju, kanan dan kiri. Fungsi set terdiri dari fungsi program. Dalam contoh labirin fungsi set akan berisi: Jika "dot" maka lakukan x yang lain lakukan y. Fungsi-fungsi tersebut adalah beberapa fungsi matematika, seperti penambahan, pengurangan, pembagian, perkalian dan fungsi yang lebih kompleks lainnya.

6.5.2.4. Operasi Crossover
Dua operasi utama ada untuk memodifikasi struktur dalam pemrograman genetik. Itu paling yang penting adalah operasi crossover. Dalam operasi crossover dua solusi digabungkan seksual untuk membentuk dua solusi baru atau keturunan. Orang tua dipilih dari populasi dengan fungsi dari ecocokkan dari solusi. tiga metode ada untuk memilih solusi untuk operasi crossover. Metode pertama menggunakan probabilitas didasarkan pada kecocokkan dari solusi. Jika f (s(T)) adalah kecocokkan dari solusi Si dan

adalah jumlah total dari semua anggota populasi, maka probabilitas solusi Si yang akan disalin ke generasi berikutnya adalah:


6.5.2.5. Mutasi
Mutasi merupakan fitur penting dari pemrograman genetik. Dua jenis mutasi yang mungkin. Jenis pertama adalah semacam fungsi yang hanya dapat menggantikan fungsi atau terminal hanya dapat menggantikan terminal. Pada jenis kedua seluruh cabang dapat menggantikan cabang lain.

6.6. Karakteristik Pemrograman Genetik
Pemrograman genetik sekarang memberikan Mesin cerdas pemasukan tinggi berkompetisi dengan umat manusia.
Berdasarkan kalimat ini, dapat dicatat bahwa empat karakteristik utama pemrograman genetik adalah:
• manusia-kompetitif
• keuntungan tinggi
• rutin
• mesin cerdas.

6.6.1. Apa yang dimaksud dengan "Manusia-Kompetitif"
Dalam upaya untuk mengevaluasi metode pemecahan masalah otomatis, muncul pertanyaan apakah ada zat nyata untuk masalah demonstratif yang diterbitkan sehubungan dengan metode ini. masalah demonstratif di lapangan dari kecerdasan buatan dan mesin pembelajaran sering dibuat masalah mainan yang beredar secara eksklusif di dalam kelompok akademis yang mempelajari metodologi tertentu. Masalah-masalah ini biasanya memiliki sedikit relevansi dengan masalah apapun yang dikejar oleh setiap ilmuwan atau insinyur luar lapangan dari kecerdasan buatan dan mesin belajar.

Gambar : operasi Crossover untuk pemrograman genetik. Yang ditebalkan pada kedua orang tua bertukar untuk menciptakan keturunan atau anak-anak. (Anak di sebelah kanan adalah representasi pohon parse untuk persamaan kuadrat.)


Gambar : Mengilustrasikan salah satu keuntungan utama dari pemrograman genetik lebih algoritma genetika. Dalam pemrograman genetik orang tua identik dapat menghasilkan keturunan yang berbeda, sedangkan dalam algoritma genetika orang tua identik akan menghasilkan keturunan yang identik. Yang ditebalkan menunjukkan percabangan untuk ditukarkan.


Gambar : Dua jenis mutasi. Pohon parse teratas adalah agen asli. Bagian bawah kiri cabang menggambarkan mutasi dari satu terminal (2) untuk terminal tunggal lain (a). Juga menggambarkan mutasi dari fungsi tunggal (-) untuk fungsi lain tunggal (+). Parse pohon di kanan bawah menggambarkan penggantian subtree dengan subtree lain.

Delapan kriteria untuk mengatakan bahwa hasil otomatis dibuat adalah human-competitive
A Hasil itu dipatenkan sebagai penemuan di masa lalu, merupakan perbaikan atas penemuan yang sudah dipetankan, atau akan memenuhi syarat hari ini sebagai penemuan baru yang dipatenkan
B Hasilnya adalah sama atau lebih baik dari hasil yang diterima sebagai ilmiah hasil baru di saat itu diterbitkan dalam ulasan tajam ilmiah jurnal.
C Hasilnya adalah sama atau lebih baik daripada hasil yang ditempatkan ke dalam database atau arsip hasil yang dikelola oleh sebuah panel yang diakui secara ahli peneliti ilmiah internasional.
D Hasilnya diterbitkan dalam dirinya sendiri sebagai ilmiah baru hasil-independen dari fakta c yang hasilnya diciptakan secara mekanik.
E Hasilnya adalah sama atau lebih baik daripada solusi manusia diciptakan terbaru ke lama masalah yang telah terjadi suksesi semakin baik solusi manusia-dibuat.
F Hasilnya adalah sama atau lebih baik dari hasil yang dianggap sebagai prestasi di lapangan yang pada saat itu pertama ditemukan.
G Hasilnya memecahkan masalah terbantahkan sulit di lapangan tersebut.
H Hasilnya memegang sendiri atau memenangkan kompetisi yang diatur melibatkan kontestan manusia (dibentuk baik pemain manusia hidup atau program komputer yang dituis manusia).

6.6.2. Apa yang dimaksud dengan "High-Return"
Apa yang sudah disampaikan oleh operasi otomatis sebenarnya metode resmi yang berarti dibandingkan untuk jumlah pengetahuan, informasi, analisis, dan kecerdasan yang akan diberikan oleh penggunaan metode manusia?
Kami mendefinisikan rasio AI ("artificial-to-intelligence" rasio) dari pemecahan masalah Metode sebagai rasio yang yang disampaikan oleh operasi otomatis dari artificial metode untuk jumlah kecerdasan yang disediakan oleh manusia menerapkan metode untuk masalah tertentu.
Rasio AI ini terutama berhubungan dengan metode untuk mendapatkan komputer untuk secara otomatis memecahkan masalah karena mengukur nilai tambah dengan metode pemecahan masalah artificial. Nyatanya, tujuan dari ladang dari arti fi intelijen resmi dan pembelajaran mesin adalah untuk menghasilkan manusia yang kompetitif dengan rasio AI tinggi.

6.2.3. Apa yang dimaksud dengan "Rutinitas"
Secara umum merupakan prasyarat untuk apa yang kita maksudkan ketika kita mengatakan bahwa metode pemecahan masalah otomatis adalah "rutinitas." Setelah keumuman dari metode didirikan, "kerutinan" berarti bahwa usaha manusia relatif sedikit yang diperlukan untuk mendapatkan metode untuk berhasil menangani masalah baru dalam domain tertentu dan untuk berhasil menangani masalah baru dari domain yang berbeda. Kemudahan membuat transisi ke masalah baru terletak di jantung apa yang kita maksud dengan "rutinitas."
Sebuah metode pemecahan masalah tidak dapat dianggap rutinitas jika langkah-langkah pelaksanaan harus ditambah, dihapus, disusun ulang, dikerjakan ulang, atau disesuaikan oleh pengguna manusia untuk setiap masalah baru.

6.2.4. Apa yang dimaksud dengan "Machine Intelligence"
Istilah "artificial intelligence" saat ini terutama terkait dengan upaya untuk mendapatkan komputer untuk memecahkan masalah dengan menggunakan metode yang mengandalkan pengetahuan, logika, dan berbagai metode analisis dan matematika. Istilah "machine learning" saat ini terutama terkait dengan upaya untuk mendapatkan komputer untuk memecahkan masalah yang menggunakan satu set kecil daN dipilih dari metodologi tertentu (banyak dari statistik alam).

6.7. Aplikasi dari Program Genetika

6.7.1. Aplikasi Pemrograman Genetik Teknik Sipil
Berbagai bidang aplikasi dari GP di teknik sipil adalah sebagai berikut:
• kekuatan prediksi pencukuran dari dalam RC balok
• Pemodelan pabrik pengolahan air limbah menggunakan pemrograman genetik untuk model kinerja dinamis dari instalasi pengolahan lumpur air limbah kota diaktifkan.
• Deteksi lalu lintas kecelakaan kecelakaan di jalan raya, kondisi kecepatan tinggi yaitu larut malam berdasarkan tiga tahun data lalu lintas sementara menghasilkan tingkat alarm palsu mendekati nol.
• Aliran melalui cekungan-Konstruksi perkotaan model jaringan limbah untuk menghitung risiko yang ditimbulkan oleh hujan untuk cekungan dan dengan demikian memberikan peringatan sebelum banjir.
• Prediksi pejalan kaki GP untuk meramalkan kali jalan tol perjalanan.
• Estimasi desain menggunakan GP untuk secara otomatis memperkirakan maksud desain berdasarkan informasi  operasional dan produk-spesifik dipantau selama proses desain.
• Pemodelan aset pasokan air untuk menentukan risiko ledakan pipa, GP  berevolusi untuk "tambang data" informasi database yang berisi tentang semburan pipa berkala.
• Identi fi kasi retak pro fi les retak dalam ratusan penukar panas tabung di pembangkit listrik tenaga nuklir pembangkit uap melalui analisis dari data yang diukur melalui pengujian non-destruktif kuantitatif.
• Pemodelan limpasan hujan-Discovery hubungan curah hujan-limpasan dalam dua tangkapan yang berbeda.
• Prediksi permintaan tenaga listrik jangka panjang
• Evolusi kontrol lampu lalu lintasnya hukum-Evolusi dari jenis baru kontrol adaptif sistem jaringan lalu lintasnya sinyal  tergantung pada variasi aliran lalu lintas.

6.8. Haploid Pemrograman Genetik dengan Dominasi
Dominasi crossover mirip dengan penggunaan dominasi di alam. Di alam, dominasi digunakan sebagai genotipe untuk fenotipik pemetaan ketika suatu organisme membawa pasangan (atau lebih dari satu) kromosom, tetapi di sini kita menggunakan dominasi pada struktur haploid. Bentuk haploid berisi semua informasi yang relevan dengan masalah, dan struktur yang banyak digunakan dalam algoritma evolusioner. Dominasi crossover digunakan sebagai cara untuk mempertahankan dan mempromosikan gen sukses (orang-orang yang meningkatkan individu kecocokkan di generasi sekarang) ke generasi berikutnya. operator crossover yang saat ini gagal untuk mengeksploitasi pengetahuan yang diperoleh di generasi sebelumnya dan sangat mengandalkan pada tekanan seleksi. Dominasi Crossover dalam teori memungkinkan eksploitasi ini terjadi selama Crossover tapi kami menyoroti masalah dengan penerapan dominasi Crossover dengan pemrograman genetik.


Gambar :
(C) dan (y) yang dipilih untuk Crossover
(Y) memiliki nilai dominasi besar dari (c)
(D) memiliki dominasi besar dari (w)
(E) memiliki dominasi besar dari (v)
(S), (r) yang dominan atas (f), (g)

Single-Node Dominasi Crossover
Dalam single-node dominasi Crossover dua orang tua membuat anak tunggal. Sebuah titik crossover dipilih secara acak seperti biasa. Dalam sub pohon yang dipilih untuk crossover nilai dominasi node atas dibandingkan. Node yang memiliki nilai dominasi tinggi menggantikan lainnya.


Gambar :
(C) dan (y) yang dipilih untuk Crossover
(Y) memiliki nilai dominasi besar dari (c)
Sub-Tree Dominasi Crossover
Sub-pohon dominasi crossover sangat banyak seperti SNDC. Perbedaan adalah bahwa dalam STDC node teratas dengan nilai dominasi tinggi menggantikan pohon lainnya.
Dominasi crossover bukanlah operator crossover yang tepat untuk digunakan dengan struktur GP saat ini. Karena fungsi mengambil nomor yang berbeda dari argumen mereka merusak bentuk pohon GP sehingga teknik luasnya pertama yang dipekerjakan oleh dominasi Crossover gagal ditemukan sesuai crossover yang berintegritas. Jalan alternatif promosi yang sudah digunakan dalam single-node dominasi crossover dan sub-pohon dominasi Crossover namun kedua operator gagal untuk meningkatkan kinerja GP. Yang pertama tidak memungkinkan pohon tumbuh sehingga mengurangi eksplorasi dan kedua pohon-pohon dieksploitasi daripada gen, sehingga menyebabkan pertumbuhan yang berlebihan.


(C) dan (y) yang dipilih untuk Crossover
(Y) memiliki nilai dominasi besar dari (c)

Ringkasan

Pemrograman genetik jauh lebih kuat daripada algoritma genetika. Output dari algoritma genetika adalah kuantitas, sementara output dari program genetik adalah program komputer lain. Pada dasarnya, ini adalah awal dari program komputer yang memprogram dirinya sendiri. pemrograman genetik yang terbaik bagi beberapa jenis masalah.  Jenis pertama adalah di mana tidak ada solusi yang ideal, (misalnya, sebuah program yang mendorong mobil). Tidak ada satu solusi untuk mengendarai mobil. Beberapa solusi berkendara aman dengan mengorbankan waktu, sementara yang lain melaju cepat pada risiko keamanan yang tinggi. Oleh karena itu, mengendarai mobil terdiri dari membuat fokus pada kecepatan dibandingkan keselamatan, serta banyak variabel lainnya. Dalam hal ini pemrograman genetik akan ditemukan sebagai solusi yang mencoba untuk berkompromi dan menjadi solusi yang efisien dari daftar besar variabel. Selanjutnya, pemrograman genetik berguna dalam mencari solusi di mana variabel yang terus berubah. Pada contoh mobil sebelumnya, program ini akan menemukan salah satu solusi untuk jalan raya beton halus, sementara itu akan menemukan solusi yang sama sekali berbeda untuk jalan beraspal kasar. Netralitas, hierarki dominasi dan keragaman semua aspek evolusi alam dan produk-produknya.
Pemrograman genetik telah digunakan untuk model dan mengontrol banyak proses dan untuk mengatur perilaku mereka sesuai dengan berbasis kecocokkan algoritma secara otomatis. Kebanyakan aplikasi ini ditandai dengan salah satu fitur berikut:
• solusi analitis tidak ada atau tidak dapat diturunkan
• variabel yang relevan yang kurang dipahami
• Kompleksitas solusi tidak diketahui
• Solusi Perkiraan semua yang dapat diharapkan
• Sejumlah besar data yang tersedia untuk pertambangan
• Besar marjinal manfaat yang ada untuk perbaikan kecil dalam kontrol atau pemodelan dan prediksi
Teori Pemrograman Genetik saat ini sangat terbelakang dan perlu untuk kemajuan cepat untuk mengejar ketinggalan dengan paradigma algoritma evolusioner lainnya. Sebagian besar hambatan berasal dari kenyataan kompleksitas variabel solusi berkembang di Pemrograman Genetik. Pelaksanaan Pemrograman Genetik akan diuntungkan dalam tahun-tahun mendatang dari pendekatan baru, yang meliputi penelitian dari biologi perkembangan. Selain itu, akan diperlukan untuk belajar menangani redundansi membentuk tekanan dalam evolusi kode. Aplikasi Programming genetik akan terus memperluas. Banyak aplikasi fokus pada pengendalian perilaku agen nyata atau maya. Dalam perannya ini, Programming genetik mungkin berkontribusi cukup untuk lapangan berkembang dari simulasi sosial dan perilaku.
Algoritma genetik telah ditemukan manfaat resmi dalam mengoptimalkan strategi agen sosial. Dengan kemampuannya untuk menyesuaikan kompleksitas strategi untuk lingkungan dan untuk memungkinkan persaingan antara agen Pemrograman Genetik posisi yang baik untuk memainkan peran penting dalam studi dan simulasi masyarakat dan evolusi mereka.

Download HTML disini