日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python主要智能优化算法库汇总

發布時間:2025/4/16 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python主要智能优化算法库汇总 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近幾年簡單瀏覽和對比了一些智能算法的庫。現將各種庫的主要信息、相關優缺點簡單整理如下,各位同學可根據自己的需求和喜好進行選擇。

文章目錄

          • 1、DEAP
        • 2、mealpy
          • 3、scikit-opt (國產良心)
          • 4、Geatpy2(國產用心)
          • 5、pygmo2
          • 6、pyswarms
          • 7、SciPy(想不到吧)
          • 小結

1、DEAP

項目地址:https://github.com/DEAP/deap

安裝

pip install deap

優點

  • 起點高,發表在Journal of Machine Learning Research
  • 用法靈活,所有模塊均可自定義

缺點

  • 上手麻煩比較麻煩

比如它是這樣設置參數然后完成一個簡單的函數最大優化的:

import random from deap import creator, base, tools, algorithmscreator.create("FitnessMax", base.Fitness, weights=(1.0,)) creator.create("Individual", list, fitness=creator.FitnessMax)toolbox = base.Toolbox()toolbox.register("attr_bool", random.randint, 0, 1) toolbox.register("individual", tools.initRepeat, creator.Individual, toolbox.attr_bool, n=100) toolbox.register("population", tools.initRepeat, list, toolbox.individual)def evalOneMax(individual):return sum(individual),toolbox.register("evaluate", evalOneMax) toolbox.register("mate", tools.cxTwoPoint) toolbox.register("mutate", tools.mutFlipBit, indpb=0.05) toolbox.register("select", tools.selTournament, tournsize=3)population = toolbox.population(n=300)NGEN=40 for gen in range(NGEN):offspring = algorithms.varAnd(population, toolbox, cxpb=0.5, mutpb=0.1)fits = toolbox.map(toolbox.evaluate, offspring)for fit, ind in zip(fits, offspring):ind.fitness.values = fitpopulation = toolbox.select(offspring, k=len(population)) top10 = tools.selBest(population, k=10)
  • 速度慢(許多人都反應有這個問題)

  • 集成的算法少(當然也可以通過自定義來修改,但這樣和完全自寫沒多大區別)

  • 超過半年沒有更新(最近更新也只是安裝上的修改)

2、mealpy

項目地址:https://github.com/thieunguyen5991/mealpy

安裝

pip install meaply

優點

  • 算法豐富,集成了現有的62種算法,目測應該還在繼續更新添加
  • 上手容易,代碼簡單,比如對標準函數庫的函數進行優化:
from opfunu.type_based.uni_modal import Functionsfrom mealpy.evolutionary_based.GA import BaseGAt1 = Functions()## Setting parametersobjective_func = t1._sum_squres__problem_size = 30domain_range = [-15, 15]log = Trueepoch = 100pop_size = 50pc = 0.95pm = 0.025md = BaseGA(objective_func, problem_size, domain_range, log, epoch, pop_size, pc, pm)best_position, best_fit, list_loss = md._train__()print(best_fit)

缺點

  • 整體設計似乎不太規范,文檔解釋不夠
  • 語言上似乎還存在一點小問題,英語應用不夠規范(這可能也是作者沒有發表很好的雜志的原因之一)
  • 集成了多種算法但未列舉參考文獻,不方便論文引用
3、scikit-opt (國產良心)

項目地址:https://github.com/guofei9987/scikit-opt

官文文檔地址:https://scikit-opt.github.io/scikit-opt/#/zh/README

安裝

pip install scikit-opt

優點

  • 上手容易,代碼簡單,尤其許多用法很像Matlab。比如官方文檔就提供了一些例子:使用遺傳算法進行曲線擬合

  • 中文文檔,并且文檔很全。大佬的CSDN主頁。(作者自稱是京東算法工程師,這個庫也的確感覺得到一些情懷,方便實用的感覺)

  • 在使用方便的基礎上,也提供了不少接口用于自行修改。尤其可以自定義算子。

  • 一些較好玩的特性:GPU加速、斷點運行等。

缺點

  • 目前似乎還沒有集成足夠多的方法。大類有3類,共7種算法。

  • 算法本身的優化似乎還不足(未仔細測試)

4、Geatpy2(國產用心)

項目地址:https://github.com/geatpy-dev/geatpy

官網地址:http://geatpy.com/

安裝:

pip install geatpy

或者強制版本

pip install geatpy==2.5.1

優點

  • 上手容易,實現簡單
  • 文檔完整,示例豐富(中文文檔)
  • 功能齊全,除算法以外也封裝了許多實用的功能,比如數據可視化等

缺點

  • 代碼風格詭異,比如
  • 英文用語不規范,變量命名相對隨意,比如入門文檔中,將目標函數翻譯成"aimFunc",變量名稱XM?等。
def aimFunc(self, pop): # 目標函數Vars = pop.Phen # 得到決策變量矩陣XM = Vars[:,(self.M-1):]g = 100 * (self.Dim - self.M + 1 + np.sum(((XM - 0.5)**2 - np.cos(20 * np.pi * (XM - 0.5))), 1, keepdims = True))ones_metrix = np.ones((Vars.shape[0], 1))f = 0.5 * np.fliplr(np.cumprod(np.hstack([ones_metrix, Vars[:,:self.M-1]]), 1)) * np.hstack([ones_metrix, 1 - Vars[:, range(self.M - 2, -1, -1)]]) * np.tile(1 + g, (1, self.M))pop.ObjV = f # 把求得的目標函數值賦值給種群pop的ObjV
  • 文檔開展還顯得比較稚嫩,比如主頁文檔就用插件顯示,官網體驗還欠些火候

:這個項目得多補充幾句,目測應該是碩士生寫的。總體的設計、DEMO、文檔上給人感覺都遠不如上面幾個老練(尤其和DEAP相比)。但幾個學生跨校合作,在不長的時間內能夠完成如此完整的一個工作也實非易事。也希望他們能夠繼續進步。綜合來看,這個項目個人認為屬于國產良心

5、pygmo2

項目地址:https://github.com/esa/pygmo2

安裝

pip install pygmo

:安裝還依賴如下環境

  • the pagmo C++ library, 2.13 +;the Boost serialization library,1.60+;NumPy;cloudpickle.

其它可能會用到的環境:

  • dill;Matplotlib;NetworkX

優點

  • 功能豐富
  • 支持并行和分布式計算(本身運行效率也很高)
  • 用法靈活
  • 感覺測試相對穩定(未仔細測試)

缺點

  • 上手相對麻煩
  • 依賴項較多,尤其要求對應C++版的軟件環境
  • 算法有限

注:這個庫也吐槽一句,網傳很厲害,但真沒看出來除了看起來專業以外有何厲害之處。當然通常以C++為底層的東西有可能在大量級問題上的處理更加容易部署,但一般的用戶也用不到。

6、pyswarms

項目地址:https://github.com/ljvmiranda921/pyswarms

安裝

pip install pyswarms

優點

  • 簡單,易上手,基本上也屬于幾行代碼入門型
  • 可視化,尤其動態可視化做得好。(亮點),比如畫出圖形,基本上就是一句代碼:
plot_contour(pos_history=optimizer.pos_history, mesher=m, designer=d, mark=(0,0))

pos_history_3d = m.compute_history_3d(optimizer.pos_history) # preprocessing animation3d = plot_surface(pos_history=pos_history_3d,mesher=m, designer=d,mark=(0,0,0))

缺點

  • 算法少。只有基于PSO的各類問題的算法(本質上其實就只是一個算法)
  • 靈活度不夠。
  • 起點低。發表的論文既沒進入CCF推薦,也沒進入SCI。同時雖然號稱有許多研究論文用過,但仔細看級別都不高(基本都屬于三無型)
7、SciPy(想不到吧)

項目地址:https://github.com/scipy/scipy

官網:https://www.scipy.org/

官方文檔: https://docs.scipy.org/doc/

安裝(當然其實當你裝上Python的時候它就在了):

pip install scipy

特別說明: scipy作為一個相對嚴謹和‘傳統’的數值計算庫,基本上常用的數值計算方法都有涉及。當然數值計算型的庫通常都不會把智能優化(啟發式算法)作為重點。它集成了十分有限的幾種優化算法:差分進化、模擬退火等。但它仍然有不少優點:

優點:

  • 作為嚴謹的數值計算庫,它的正確性和穩定性值得信賴(超過800個contributor,其中有不少是名校的教師、博士等)
  • 使用方便、簡單
  • scipy也可以自定義優化算法

缺點:

  • 自然就是算法太少了
  • 雖然可以自定義,但麻煩程度幾乎相當于完全自己造輪子
小結

經過一番調研,發現在Python的包庫里面有質量的智能算法庫還真是非常有限(除上述庫以外,還有不少幾個算法就成一個庫的庫,實在不敢恭維,簡單玩玩就行了)。這里個人認為可能有以下幾個方面:

  • 智能算法本身實現并不太難
  • 在當前的大環境下,大規模的問題下智能算法并不具有明顯的優勢
  • 專業做算法的通常仍然還是以Matlab為主(尤其數學類的)
  • 智能算法,尤其進化算法,本質上差異并不大

或許就是以上原因導致現在我們看不到特別驚艷的庫,目前稍做得好一些的也就是在輔助功能上集成得較好而已。

當然,不管怎樣,目前有這些庫的話,對于不是完全專業從事相關算法研究的人員而言也完全夠用了。就個人目前體驗而言,綜合來看最推薦的庫為scikit-opt。當然終歸到底,自己用著好就是最好。

總結

以上是生活随笔為你收集整理的Python主要智能优化算法库汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。