python:六種算法(DBO、RFO、WOA、GWO、PSO、GA)求解23個測試函數(python代碼)

一、六種算法簡介

1、蜣螂優化算法DBO

2、紅狐優化算法RFO

3、鯨魚優化算法WOA

4、灰狼優化算法GWO

5、粒子群優化算法PSO

6、遺傳算法GA

二、6種算法求解23個函數

(1)23個函數簡介

參考文獻:

[1] Yao X, Liu Y, Lin G M. Evolutionary programming made faster[J]. IEEE transactions on evolutionary computation, 1999, 3(2):82-102.

(2)部分python代碼

from FunInfo import Get_Functions_details
from WOA import WOA
from GWO import GWO
from PSO import PSO
from GA import GA
from DBO import DBO
from RFO import RFO
import matplotlib.pyplot as plt
from func_plot import func_plot
plt.rcParams['font.sans-serif']=['Microsoft YaHei']
#主程序
function_name =12 #測試函數1-23
SearchAgents_no = 50#種群大小
Max_iter = 100#迭代次數
lb,ub,dim,fobj=Get_Functions_details(function_name)#獲取問題信息
BestX1,BestF1,curve1 = WOA(SearchAgents_no, Max_iter,lb,ub,dim,fobj)#問題求解
BestX2,BestF2,curve2 = GWO(SearchAgents_no, Max_iter,lb,ub,dim,fobj)#問題求解
BestX3,BestF3,curve3 = PSO(SearchAgents_no, Max_iter,lb,ub,dim,fobj)#問題求解
BestX4,BestF4,curve4 = GA(SearchAgents_no, Max_iter,lb,ub,dim,fobj)#問題求解
BestX5,BestF5,curve5 = DBO(SearchAgents_no, Max_iter,lb,ub,dim,fobj)#問題求解
BestX6,BestF6,curve6 = RFO(SearchAgents_no, Max_iter,lb,ub,dim,fobj)#問題求解
#畫函數圖
func_plot(lb,ub,dim,fobj,function_name)#畫函數圖
#畫收斂曲線圖
Labelstr=['WOA','GWO','PSO','GA','DBO','RFO']
Colorstr=['r','g','b','k','c','m']
if BestF1>0:plt.semilogy(curve1,color=Colorstr[0],linewidth=2,label=Labelstr[0])plt.semilogy(curve2,color=Colorstr[1],linewidth=2,label=Labelstr[1])plt.semilogy(curve3,color=Colorstr[2],linewidth=2,label=Labelstr[2])plt.semilogy(curve4,color=Colorstr[3],linewidth=2,label=Labelstr[3])plt.semilogy(curve5,color=Colorstr[4],linewidth=2,label=Labelstr[4])plt.semilogy(curve6,color=Colorstr[5],linewidth=2,label=Labelstr[5])
else:plt.plot(curve1,color=Colorstr[0],linewidth=2,label=Labelstr[0])plt.plot(curve2,color=Colorstr[1],linewidth=2,label=Labelstr[1])plt.plot(curve3,color=Colorstr[2],linewidth=2,label=Labelstr[2])plt.plot(curve4,color=Colorstr[3],linewidth=2,label=Labelstr[3])plt.plot(curve5,color=Colorstr[4],linewidth=2,label=Labelstr[4])plt.plot(curve5,color=Colorstr[5],linewidth=2,label=Labelstr[5])plt.xlabel("Iteration")
plt.ylabel("Fitness")
plt.xlim(0,Max_iter)
plt.title("F"+str(function_name))
plt.legend()
plt.savefig(str(function_name)+'.png')
plt.show()
#

(3)部分結果

三、完整python代碼

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/214416.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/214416.shtml
英文地址,請注明出處:http://en.pswp.cn/news/214416.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

讀書筆記 | 自我管理的關鍵是提高執行力

哈嘍啊,你好,我是雷工! 有句話說,能管好自己才是真的本事。 自我管理,管好自己很重要。 我們之所以懂得這么多的道理,卻依然過不好這一生? 很大部分原因是因為管不住自己,做不到。 …

性能測試基礎

性能測試分類 客戶端性能:測試APP自身的性能,例如CPU、內存消耗;web頁面元素渲染速度 服務端性能:測試服務端項目程序的支持的并發、處理能力、響應時間等,主要通過接口來做性能測試 性能測試指標 并發 同時向服務…

大一作業習題

第一題&#xff1a;答案&#xff1a; #include <stdio.h> void sort(int a[], int m) //將數組a的前m個元素(從小到大)排序 {int i 0;for (i 0; i < m - 1; i){int j 0;int flag 1;for (j 0; j < m - 1 - i; j){if (a[j] > a[j 1]){int t 0;t a[j];…

Java八股文面試全套真題【含答案】- Servlet篇

以下是一些關于Servlet的經典面試題以及它們的答案&#xff1a; 什么是 Servlet&#xff1f; 答案&#xff1a;Servlet 是運行在服務器上&#xff0c;用于處理客戶端請求并生成響應的 Java 類。 Servlet 和 JSP 之間的區別是什么&#xff1f; 答案&#xff1a;Servlet 是基于…

1.鴻蒙應用程序開發app_hap開發環境搭建

1.下載Node.js, Javascipts的運行環境 node.js版本下載v12.18.3/https://www.cnblogs.com/txwtech/p/17865780.html 2.下載并安裝DevEco Studio DevEco Studio 3.1 DevEco Studio 3.1配套支持HarmonyOS 3.1版本及以上的應用及服務開發&#xff0c;提供了代碼智能編輯、低代…

Docker筆記:Docker中簡單配置Mysql/Redis/Mongodb容器

Docker 配置 Mysql 容器 1 &#xff09;方案1&#xff1a;基于centos等linux操作系統 啟動centos鏡像&#xff0c;在里面安裝 mysql這樣比較麻煩&#xff0c;配置的東西很多 … 2 &#xff09;方案2&#xff1a;直接用 mysql 鏡像 (推薦) $ docker pull mysql 下載鏡像$ do…

589. N 叉樹的前序遍歷

589. N 叉樹的前序遍歷 java1&#xff1a;stack棧&#xff1a;沒看懂 class Solution {public List<Integer> preorder(Node root) {List<Integer> res new ArrayList<Integer>();if (root null) {return res;}Map<Node, Integer> map new HashMa…

C盤瘦身,C盤清理

以下只是我的C盤清理經驗~ 一.【用軟件簡單清理C盤】 使用一些垃圾清理軟件&#xff0c;簡單的初步把C盤先清理一遍。&#xff08;這種軟件太多我就不推薦了……&#xff09; 二.【WPS清理大師】 因為我電腦裝了WPS&#xff0c;發現右鍵單擊C盤有個選項【釋放C盤空間】&#xf…

接口自動化框架(Pytest+request+Allure)

前言&#xff1a; 接口自動化是指模擬程序接口層面的自動化&#xff0c;由于接口不易變更&#xff0c;維護成本更小&#xff0c;所以深受各大公司的喜愛。 接口自動化包含2個部分&#xff0c;功能性的接口自動化測試和并發接口自動化測試。 本次文章著重介紹第一種&#xff0c…

Vue3.3.4中watch無法監測props的更改

背景 網上說了很多解決方案&#xff0c;都是通過watch(() > props.value, (newValue, oldValue) > {})解決&#xff0c;或者是加上{deep: true}附加屬性。但是我在Vue3.3.4中&#xff0c;還是無法解決。 下面說一下我的解決方案。 解決方案 通過父組件調用子組件defineE…

點云/Mesh 常見處理庫和軟件匯總

注&#xff1a;參考 網址1、網址2 文章目錄 軟件通用點云/Mesh處理庫通用幾何處理庫專用功能庫 軟件 Processing MeshLabCloudCompareTrimeshPyVistaVedo Visualization Simple-3dvizPlotOptiX (Requires CUDA-enabled GPU)PolyscopePyrender 通用點云/Mesh處理庫 PCL &am…

【開發問題】vue的前端和java的后臺,用sm4,實現前臺加密,后臺解密

sm4加密 vue引入的包代碼加密解密 javamaven代碼運行結果 vue 引入的包 npm install sm-crypto代碼加密解密 加密&#xff1a; key &#xff1a;代表著密鑰&#xff0c;必須是16 字節的十六進制密鑰 password &#xff1a;加密前的密碼 sm4Password &#xff1a;代表sm4加密…

Python之格式化保存數據點

功能&#xff1a;將平面點集存儲為格式化txt文檔&#xff0c;每個坐標值為5位整數&#xff0c;前三位為整數&#xff0c;后2位為小數 輸入&#xff1a;平面點坐標&#xff0c;用列表存儲&#xff0c;列表的元素為點坐標元組 輸出&#xff1a;txt文件&#xff0c;每行一個點坐…

【計算機網絡】應用層電子郵件協議

一、電子郵件系統架構 電子郵件是一個典型的異步通信系統&#xff0c;發送方從UA&#xff0c;也就是郵件客戶端&#xff0c;通過應用層SMTP協議&#xff0c;傳輸層tcp協議&#xff0c;發送給發送方的郵件服務器&#xff0c;比如使用的是163郵箱&#xff0c;163提供的SMTP服務器…

python中實現yaml文件管理參數

yaml參數管理器 這是文件目錄關系&#xff0c;其中config存放.yaml文件&#xff0c;scripts存放py文件 然后就可以自由使用了&#xff1a; import yaml import os#獲取路徑 script_directory os.path.dirname(os.path.abspath(__file__)) # 相對于腳本文件的路徑 image_relat…

Swift “黑魔法”之動態獲取類實例隱藏屬性的值

概覽 在 Swift 代碼的調試中,我們時常驚嘆調試器的無所不能:對于大部分“黑盒”類實例的內容,調試器也都能探查的一清二楚。 想要自己在運行時也能輕松找到 Thread 實例“私有”屬性的值嗎(比如 seqNum)? 在本篇博文中您將學到如下內容: 概覽1. 借我,借我,一雙慧眼吧…

字符統計[c]

#include<stdio.h> #include<string.h> int main() {int a,b,c;abc0;char s[100];int i0;while(1){i;scanf("%c",&s[i]);if(s[i]?)break;}for(int k1;k<i;k){if(s[k]>48&&s[k]<57){a;//數字}else if((s[k]>65&&s[k]<…

Altair Radioss碰撞 安全與沖擊 衡祖仿真

Altair Radioss是解決瞬態加載工況下非線性問題的領先的結構分析求解器。其具備高擴展性、高品質、高魯棒性&#xff0c;以及諸多功能&#xff1a;多域求解技術、高級材料功能(復合材料)等。Radioss求解器被廣泛應用于汽車、航空航天、電子/家電、包裝、軌道機車、生物醫療、能…

前端項目有關面試

目錄 [TOC](目錄) 1. MVC、MVP、MVVM2.大文件上傳、多文件上傳和斷點續傳的區別3. 前端存儲4.什么是前端自適應5.瀏覽器原理5.1 從輸入url到看到界面的過程5.2 跨域 1. MVC、MVP、MVVM MVC、MVP、MVVM 是常見的軟件架構設計模式。MVVM&#xff1a;是一種軟件架構設計模式&…

c語言實現鏈表

鏈表是一種常見的數據結構&#xff0c;用于存儲一系列的元素。它由一系列的節點&#xff08;Node&#xff09;組成&#xff0c;每個節點包含數據和指向下一個節點的指針。不同于數組需要連續的內存空間來存儲元素&#xff0c;鏈表使用指針將節點按照某種邏輯順序連接起來。 每…