欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python scipy實現(xiàn)差分進(jìn)化算法

 更新時間:2023年08月11日 09:42:25   作者:微小冷  
差分進(jìn)化算法是廣義的遺傳算法的一種,核心思想是變異,這篇文章主要為大家介紹的則是著名的scipy庫中對差分進(jìn)化算法的實現(xiàn),希望對大家有所幫助

差分進(jìn)化算法

差分進(jìn)化算法是廣義的遺傳算法的一種,核心思想是變異,具體原理可見:Python實現(xiàn)差分進(jìn)化算法,本文將要介紹的則是著名的scipy庫中對差分進(jìn)化算法的實現(xiàn)。

在scipy.optimize中實現(xiàn)了差分進(jìn)化算法,其函數(shù)的封裝形式為

scipy.optimize.differential_evolution(func, bounds, args=(), 
strategy='best1bin', maxiter=1000, popsize=15, tol=0.01, mutation=(0.5, 1), 
recombination=0.7, seed=None, callback=None, disp=False, polish=True, 
init='latinhypercube', atol=0, updating='immediate', workers=1, constraints=(), 
x0=None, *, integrality=None, vectorized=False)

其中,只有func和bound為必選參數(shù),代表將要優(yōu)化的函數(shù)和解的范圍。由于differential_evolution太長,后文統(tǒng)一用加粗的de表示。

func:格式為func(x, *args)的函數(shù),其中args即為de中輸入的args

bounds為隨機(jī)數(shù)的生成范圍

strategy為變異策略

maxiter 最大代數(shù)

popsize 總體大小

tol 容忍度

atol 絕對容忍度

mutation 突變常數(shù),當(dāng)為元組**(a,b)時,表示突變常數(shù)是a,b**之間的隨機(jī)數(shù)

recombination 交叉常數(shù)

seed 隨機(jī)數(shù)種子,設(shè)置之后可保證結(jié)果的可復(fù)現(xiàn)性

disp 為True時可輸出迭代信息

callback 算法執(zhí)行完成后的迭代函數(shù)

polish 為True時,在迭代的最后,會調(diào)用L-BFGS-B算法對最優(yōu)參數(shù)進(jìn)一步優(yōu)化

變異策略是差分進(jìn)化算法的核心,在de函數(shù)中,共提供了12種方案:

向量選擇方式binexp
bestbest1bin,best2binbest2exp, best1exp
randrand1bin,rand2binrand1exp, rand2exp
randtobestrandtobest1binrandtobest1exp,
currenttobestcurrenttobest1bincurrenttobest1exp

向量選擇方式,選擇的是在哪個向量的基礎(chǔ)上進(jìn)行變異,best表示在當(dāng)前最佳樣本上變異;rand表示隨機(jī)選擇個體進(jìn)行變異;current-to-best表示對父個體進(jìn)行偏向最佳值的修正,然后在此基礎(chǔ)上進(jìn)行變異;同理,rand-to-best表示在隨機(jī)個體上進(jìn)行偏向最佳值的修正,然后再變異。

bin和exp為隨機(jī)數(shù)的生成方案,前者表示生成二項分布隨機(jī)數(shù),后者表示指數(shù)分布隨機(jī)數(shù)。

中間的數(shù)字表示用于產(chǎn)生突變的個體數(shù)。

測試

接下來,測試一下

import numpy as np
from scipy.optimize import differential_evolution as de
def test(xs):
    _sum = 0.0
    for i in range(len(xs)):
        _sum = _sum + np.cos((xs[i]*i)/5)*(i+1)
    return _sum
bounds = [[-15,15] for _ in range(5)]
ret = de(test, bounds)
msg = f"全局最小值" + ", ".join([f"{x:.4f}" for x in ret.x])
msg += f"\nf(x)={ret.fun:.4f}"
print(msg)

結(jié)果為

全局最小值-1.6584, -15.0000, -7.8540, -5.2360, -3.9270
f(x)=-12.9800

到此這篇關(guān)于Python scipy實現(xiàn)差分進(jìn)化算法的文章就介紹到這了,更多相關(guān)Python scipy內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • anaconda python3.8安裝后降級

    anaconda python3.8安裝后降級

    想給新的環(huán)境安裝pip install tensorflow,結(jié)果報錯了。網(wǎng)上了解可以降級為3.6,本文就詳細(xì)的介紹一下,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Flask wtforms實現(xiàn)表單驗證使用

    Flask wtforms實現(xiàn)表單驗證使用

    本文主要介紹了Flask wtforms實現(xiàn)表單驗證使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • python multiprocessing多進(jìn)程變量共享與加鎖的實現(xiàn)

    python multiprocessing多進(jìn)程變量共享與加鎖的實現(xiàn)

    這篇文章主要介紹了python multiprocessing多進(jìn)程變量共享與加鎖的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • python實現(xiàn)簡單聊天室功能 可以私聊

    python實現(xiàn)簡單聊天室功能 可以私聊

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)簡單聊天室功能,可以進(jìn)行私聊,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Python pip安裝如何切換國內(nèi)源

    Python pip安裝如何切換國內(nèi)源

    在Python開發(fā)中,pip是一個非常重要的工具,它允許我們安裝和管理Python包,本文將介紹如何切換pip的國內(nèi)源,并推薦幾個常用的國內(nèi)源,感興趣的朋友一起看看吧
    2024-04-04
  • python利用Excel讀取和存儲測試數(shù)據(jù)完成接口自動化教程

    python利用Excel讀取和存儲測試數(shù)據(jù)完成接口自動化教程

    這篇文章主要介紹了python利用Excel讀取和存儲測試數(shù)據(jù)完成接口自動化教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python3.0 模擬用戶登錄,三次錯誤鎖定的實例

    python3.0 模擬用戶登錄,三次錯誤鎖定的實例

    下面小編就為大家?guī)硪黄猵ython3.0 模擬用戶登錄,三次錯誤鎖定的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • python求兩個時間的時間差(實例代碼)

    python求兩個時間的時間差(實例代碼)

    我們在用python進(jìn)行分析的時候,可能會碰到計算兩個日期的時間差。下面為大家介紹一下如何計算兩個時間的時間差,需要的朋友可以參考下
    2022-11-11
  • Django Rest framework權(quán)限的詳細(xì)用法

    Django Rest framework權(quán)限的詳細(xì)用法

    這篇文章主要介紹了Django Rest framework權(quán)限的詳細(xì)用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • Python猴子補(bǔ)丁知識點(diǎn)總結(jié)

    Python猴子補(bǔ)丁知識點(diǎn)總結(jié)

    在本篇文章里小編給大家分享的是關(guān)于Python猴子補(bǔ)丁知識點(diǎn)總結(jié),需要的朋友們學(xué)習(xí)下。
    2020-01-01

最新評論