Evolusi Diferensial SciPy

Evolusi Diferensial Scipy



Artikel ini adalah tentang SciPy Differential Evolution (DE). SciPy adalah library dari bahasa Python, dan Differential Evolution adalah metode atau fungsi dari library SciPy. Kebanyakan orang telah mempelajari Python, apakah mereka pengembang atau bukan, karena banyak pustaka dan fungsi Python membuatnya sangat aman dan andal. SciPy sering digunakan untuk menyelesaikan persamaan diferensial dan aljabar, interpolasi, optimisasi, dll. Di sini, kami membahas penggunaan SciPy DE untuk membantu Anda memahami cara mengimplementasikan fungsi evolusi diferensial SciPy dalam aplikasi Python.

Apa itu Evolusi Diferensial SciPy dalam Bahasa Python?

Scipy adalah perpustakaan yang dangkal, gratis, dan mudah dipahami yang digunakan untuk menyelesaikan masalah ilmiah dan matematika. SciPy adalah kotak harta bagi pengembang karena perpustakaannya penuh dengan modul berharga. SciPy memperluas fungsionalitas NumPy dengan sekelompok algoritme yang berharga. Pustaka SciPy memiliki sub-paket yang dapat digunakan untuk kalkulasi, seperti scipy.io, scipy.optimize, dll. SciPy menghasilkan fungsi 'evolusi diferensial' dan banyak fungsi canggih dalam paket scipy.optimize. scipy.optimize digunakan untuk pengoptimalan dalam aplikasi Python.

Fungsi Evolusi Diferensial adalah fungsi global yang diperoleh oleh paket pengoptimalan SciPy yang digunakan untuk menemukan minimum global dari fungsi multivariat. Itu dapat mengelola fungsi tujuan multidimensi yang tidak linier dan tidak dapat dibedakan. Ini adalah algoritma pencarian yang digunakan untuk mencari area fungsi ruang kontinu. Fungsi ini bekerja pada nilai riil.







Sintaks Fungsi Evolusi Diferensial

Fungsi evolusi diferensial hadir dalam Python menggunakan fungsi differential_evolution (). Sintaks fungsi evolusi diferensial ditunjukkan di bawah ini:





Mari kita membahas parameter fungsi:





Fungsi harus dapat dipanggil dengan f(x,*args); batas mengacu pada urutan variabel yang dapat ditentukan dalam dua cara: strategi opsional atau string dengan nilai default 'best1bin'; maxiter adalah opsional atau nilai int; popsize adalah int atau opsional; tol adalah int atau opsional; nilai mutasi bersifat float atau opsional; nilai rekombinasi dalam float atau opsional; benihnya adalah none, int, NumPy, dan Random.

Pada bagian selanjutnya, kita akan membahas fungsi evolusi diferensial dengan bantuan contoh mudah.



Contoh 1

Mari kita mulai dengan contoh langsung yang akan mengembangkan minat Anda dalam memahami konsep fungsi evolusi diferensial. Kami menggunakan fungsi differential_evolution() untuk menemukan nilai minimum. Namun, untuk menemukan nilai minimum, fungsi tersebut memerlukan batas pencarian dan fungsi tujuan yang dapat dipanggil yang ditentukan. Akibatnya, kami mendefinisikan fungsi sebelum menggunakan fungsi differential_evolution dalam program. Kode referensi program disebutkan di bawah ini:

impor numpy sebagai misalnya
dari scipy impor mengoptimalkan
dari scipy. mengoptimalkan impor differential_evolution
impor matplotlib. pyplot sebagai py
dari matplotlib impor cm

def fungsi ( p ) :

dengan , x = p

h = misalnya persegi ( dengan ** 4 + x ** 4 )

kembali misalnya persegi ( h )


DE_bounds = [ [ - 6 , 6 ] , [ - 6 , 6 ] ]

res = differential_evolution ( fungsi , DE_bounds )

mencetak ( res )

Kami mengimpor perpustakaan seperti SciPy dan NumPy untuk perhitungan numerik array. Kami mengimpor fungsi differential_evolution dari modul scipy.optimize. Kemudian, dengan kata kunci 'def', kami mendefinisikan fungsi tujuan yang dapat dipanggil dan meneruskan parameter 'p'. Kami berhasil mendefinisikan fungsi yang menemukan akar kuadrat dari penambahan variabel NumPy, yaitu z, x. Nilai akar kuadrat disimpan dalam variabel 'h'. Kami mengembalikan nilai akar kuadrat dalam fungsi yang ditentukan. Itu dikembalikan sebagai argumen.

Setelah itu, kami menyelesaikan batasan variabel yang dapat dirinci dengan menjelaskan nilai min dan maks dari fungsi tersebut. Kami menjalankan fungsi differential_evolution dengan 'DE_bounds'' sebagai argumen. Kami memanggil nilai fungsi dengan variabel bernama res. Pada akhirnya, kami menggunakan pernyataan cetak untuk menampilkan hasilnya. Hasilnya ditampilkan setelah menjalankan program. Tangkapan layar keluaran yang diharapkan ditunjukkan di bawah ini:

Differential_evolution() menunjukkan bahwa nilai minimum dari fungsi ditampilkan pada titik (0, 0).

Contoh 2

Ini adalah contoh lain dari fungsi evolusi diferensial. Dalam hal ini, kami mengambil array dan menerapkan operasi yang berbeda di antara mereka. Kode referensi program disebutkan di bawah ini:

impor numpy sebagai misalnya
dari scipy impor mengoptimalkan
dari scipy. mengoptimalkan impor differential_evolution

def fungsi_objektif ( d ) :
kembali ( d [ 1 ] - 1.2 ) / 2 + 0,5 * d [ 0 ] * 1.3 * ( d [ 1 ] + 0,5 ) ** 3

_batas = [ ( - 0,3 , 0,3 ) , ( - 0,3 , 0,3 ) ]

tampilan = differential_evolution ( fungsi_objektif , _batas , popsize = 80 , Polandia = PALSU )

mencetak ( tampilan )

Seperti yang ditunjukkan pada tangkapan layar sebelumnya, kami berhasil mengimpor pustaka SciPy.optimize.differential_evolution dan pustaka NumPy ke dalam program. Sekarang, kami mendefinisikan fungsi tujuan yang kami temukan nilai minimumnya. Kami meneruskan ekspresi matematis dalam fungsi tujuan dan mengembalikan nilai sebagai argumen ke fungsi yang ditentukan. Batas antara nilai fungsi adalah suatu keharusan. Jadi, setelah mendefinisikan fungsi, kami menetapkan kedua nilai (maksimum dan minimum).

Setelah mendefinisikan semua variabel penting, kami memanggil fungsi differential_evolution untuk menemukan nilai minimum dari suatu fungsi. Kami menyimpan nilai pengembalian minimum fungsi dalam variabel yang disebut disp. Di akhir program, kami melewatkan variabel disp di pernyataan cetak untuk menampilkan hasilnya. Setelah menjalankan program, nilai minimum dari fungsi yang ditentukan ditampilkan di layar dengan batasan. Berikut ini adalah outputnya:

Contoh 3

Seperti yang dapat kita lihat, evolusi diferensial mengembalikan nilai minimum yang berbeda dari fungsi tujuan berdasarkan definisinya. Di sini, kami mengambil contoh lain yang terkait dengan differential_evolution(). Kode referensi untuk program ini ditunjukkan di bawah ini:

impor numpy sebagai misalnya
dari scipy impor mengoptimalkan
dari scipy. mengoptimalkan impor differential_evolution

def fungsi_obj ( oper ) :
kembali 3 ** 9 / 0,2 + 6 / 3 * 2 ** dua puluh

batas = [ ( - 0,5 , 0,5 ) , ( - 0,5 , 0,5 ) ]

keluar = differential_evolution ( fungsi_obj , batas , Polandia = BENAR )

mencetak ( 'Keluarannya adalah:' , keluar )

Pustaka berhasil diimpor ke program ini karena kami tidak dapat melakukan operasi yang kami inginkan tanpanya. Sebagai hasilnya, kami menyertakan perpustakaan SciPy dalam program ini. Setelah itu, tentukan fungsi tujuan dengan operasi yang diperlukan. Kami menemukan nilai minimum dari fungsi yang ditentukan itu. Setelah menyesuaikan batas fungsi, kami memanggil fungsi yang ditentukan dalam evolusi diferensial untuk menemukan nilai minimum fungsi. Ini kemudian disimpan dalam variabel. Kami menampilkan ini dengan memanggil variabel ini dalam pernyataan cetak. Output dari program ini ditunjukkan di bawah ini:

Seperti pada tangkapan layar sebelumnya, nilai minimum fungsi adalah [0,29236931, 0,16808904]. Anda juga dapat menjalankan contoh ini di lingkungan Anda untuk lebih memahami konsep fungsi differential_evolution.

Kesimpulan

Mari kita rekap singkat artikel ini. Kami memahami fungsionalitas dasar dari metode evolusi diferensial yang dimiliki oleh pustaka SciPy dengan Python. Python adalah bahasa terbaru, dengan banyak perpustakaan fleksibel. Sebagian besar pengembang dibantu dalam memecahkan struktur kode yang rumit dengan fungsi dan pustaka yang telah ditentukan sebelumnya. Evolusi diferensial adalah fungsi atau metode optimasi paket SciPy yang digunakan untuk minimisasi. Saat Anda menggunakan contoh-contoh sebelumnya dalam kode, Anda lebih memahami konsep evolusi diferensial dengan lebih jelas.