遗传算法与粒子群算法的Python实现

news/2024/11/30 1:48:22/

  • 遗传算法本文应用的是 python geatpy module
  • 粒子群算法本文应用的是 python pyswarm module

遗传算法 

  • 它的不等约束是...<=0
import geatpy as ea
import numpy as np@ea.Problem.single
def evalVars(Vars): x1 = Vars[0]x2 = Vars[1]x3 = Vars[2]x4 = Vars[3]f = (x1 + 2)**2 +\(x2 - 3)**2 +\(x3 + 2)**2 +\x4CV = np.array([ - x2 + x1 ,-0.001 + (x4-3)**2])   return f, CVproblem = ea.Problem(name='test',M=1,  maxormins=[1], Dim=4,                         varTypes=[0, 0, 0, 0],lb=[-5, -5, -5, -5],ub=[ 5,  5,  5,  5],evalVars=evalVars)algorithm = ea.soea_SEGA_templet(problem,ea.Population(Encoding='RI', NIND=20),MAXGEN=500,              logTras=1,              trappedValue=1e-8,   maxTrappedCount=10)     res = ea.optimize(algorithm, seed=1, verbose=True, \drawing=1, outputMsg=True, drawLog=True, \saveFlag=True, dirName='result')
==================================================================================
gen|  eval  |    f_opt    |    f_max    |    f_avg    |    f_min    |    f_std    
----------------------------------------------------------------------------------34|  700   | 1.02093E+01 | 1.02093E+01 | 1.02093E+01 | 1.02093E+01 | 0.00000E+00 35|  720   | 1.02093E+01 | 1.02093E+01 | 1.02093E+01 | 1.02093E+01 | 0.00000E+00 36|  740   | 1.01760E+01 | 2.07075E+01 | 1.15175E+01 | 1.01760E+01 | 3.47351E+00 37|  760   | 1.01760E+01 | 2.07636E+01 | 1.24590E+01 | 1.01760E+01 | 3.94129E+00 38|  780   | 3.07598E+00 | 1.02096E+01 | 9.84393E+00 | 3.07598E+00 | 1.55274E+00 39|  800   | 3.07497E+00 | 1.02093E+01 | 8.79644E+00 | 3.07497E+00 | 2.70962E+00 40|  820   | 3.07497E+00 | 1.01723E+01 | 6.33722E+00 | 3.07497E+00 | 3.20984E+00 41|  840   | 3.05616E+00 | 3.72432E+00 | 3.30975E+00 | 3.05616E+00 | 2.94966E-01 42|  860   | 3.03355E+00 | 3.07598E+00 | 3.07030E+00 | 3.03355E+00 | 1.05715E-02 43|  880   | 3.03355E+00 | 3.07497E+00 | 3.06473E+00 | 3.03355E+00 | 1.05250E-02 44|  900   | 3.03354E+00 | 3.06010E+00 | 3.05215E+00 | 3.03354E+00 | 9.52747E-03 45|  920   | 3.03236E+00 | 3.05616E+00 | 3.04503E+00 | 3.03236E+00 | 1.05466E-02 46|  940   | 3.03236E+00 | 3.05163E+00 | 3.03547E+00 | 3.03236E+00 | 5.48001E-03 47|  960   | 3.03078E+00 | 3.03355E+00 | 3.03308E+00 | 3.03078E+00 | 7.69107E-04 48|  980   | 3.03078E+00 | 3.03354E+00 | 3.03243E+00 | 3.03078E+00 | 8.50674E-04 49|  1000  | 3.03060E+00 | 3.03236E+00 | 3.03177E+00 | 3.03060E+00 | 6.64341E-04 50|  1020  | 3.03060E+00 | 3.03187E+00 | 3.03109E+00 | 3.03060E+00 | 5.18200E-04 51|  1040  | 3.03034E+00 | 3.03080E+00 | 3.03069E+00 | 3.03034E+00 | 1.24733E-04 52|  1060  | 3.02960E+00 | 3.03074E+00 | 3.03050E+00 | 3.02960E+00 | 3.41333E-04 53|  1080  | 3.02931E+00 | 3.03060E+00 | 3.03028E+00 | 3.02931E+00 | 4.18144E-04 54|  1100  | 3.02931E+00 | 3.03056E+00 | 3.02998E+00 | 3.02931E+00 | 4.08041E-04 55|  1120  | 3.02931E+00 | 3.03001E+00 | 3.02960E+00 | 3.02931E+00 | 2.06836E-04 56|  1140  | 3.02910E+00 | 3.02960E+00 | 3.02942E+00 | 3.02910E+00 | 1.40018E-04 57|  1160  | 3.00978E+00 | 3.02951E+00 | 3.02829E+00 | 3.00978E+00 | 4.24883E-03 58|  1180  | 3.00978E+00 | 3.02931E+00 | 3.02719E+00 | 3.00978E+00 | 5.80743E-03 59|  1200  | 3.00978E+00 | 3.02910E+00 | 3.02684E+00 | 3.00978E+00 | 5.71712E-03 60|  1220  | 3.00977E+00 | 3.02876E+00 | 3.02437E+00 | 3.00977E+00 | 7.36375E-03 61|  1240  | 3.00913E+00 | 3.02828E+00 | 3.01725E+00 | 3.00913E+00 | 8.26062E-03 62|  1260  | 3.00913E+00 | 3.01029E+00 | 3.00973E+00 | 3.00913E+00 | 2.63957E-04 
Execution time: 0.03466796875 s
Evaluation number: 1260
The best objective value is: 3.009134825271758
The best variables are: 
-1.9990825653076172	3.0016613006591797	-2.030458450317383	3.0082035064697266

粒子群算法

  • 它的不等约束是...>=0
from pyswarm import pso
import numpy as npdef opt(x):x1 = x[0]x2 = x[1]x3 = x[2]x4 = x[3]return (x1 + 2)**2 +\(x2 - 3)**2 +\(x3 + 2)**2 +\x4def con(x):x1 = x[0]x2 = x[1]x3 = x[2]x4 = x[3]return [ x2 - x1 ,0.001-(x4-3)**2]lb = [-5, -5, -5, -5]
ub = [ 5,  5,  5,  5]xopt, fopt = pso(opt, lb, ub, f_ieqcons=con)
print("xopt:", xopt)
print("fopt:", fopt)
Stopping search: Swarm best objective change less than 1e-08
xopt: [-2.00094176  3.00064191 -1.99431492  2.96837868]
fopt: 2.9684122988614785


http://www.ppmy.cn/news/1112886.html

相关文章

泛化误差,训练误差,偏差,方差,偏置

泛化误差&#xff1a;就是把新用到模型上&#xff0c;比如说测试集体现的是一种泛化能力&#xff0c;也可以叫做测试误差 训练误差&#xff1a;也可以叫做经验误差 偏差&#xff08;距离远近&#xff09;&#xff1a;描述的是预测值的期望与真实值之间的差距&#xff0c;偏差…

【C刷题】day2

一、选择题 1、以下程序段的输出结果是&#xff08; &#xff09; #include<stdio.h> int main() { char s[] "\\123456\123456\t"; printf("%d\n", strlen(s)); return 0; } A: 12 B: 13 C: 16 D: 以上都不对【答案】&#xff1a; A 【解析】…

写一篇nginx配置指南

nginx.conf配置 找到Nginx的安装目录下的nginx.conf文件&#xff0c;该文件负责Nginx的基础功能配置。 配置文件概述 Nginx的主配置文件(conf/nginx.conf)按以下结构组织&#xff1a; 配置块功能描述全局块与Nginx运行相关的全局设置events块与网络连接有关的设置http块代理…

计算机竞赛 机器视觉的试卷批改系统 - opencv python 视觉识别

文章目录 0 简介1 项目背景2 项目目的3 系统设计3.1 目标对象3.2 系统架构3.3 软件设计方案 4 图像预处理4.1 灰度二值化4.2 形态学处理4.3 算式提取4.4 倾斜校正4.5 字符分割 5 字符识别5.1 支持向量机原理5.2 基于SVM的字符识别5.3 SVM算法实现 6 算法测试7 系统实现8 最后 0…

elementUI elfrom表单验证无效、不起作用常见原因

今天遇到一个变态的问题&#xff0c;因页面比较复杂&#xff0c;出现几组条件判断&#xff0c;每个template内部又包含很多表单&#xff01;&#xff01; <template v-if"transformTypeValue 1"></template><template v-else-if"transformTypeV…

[面试] k8s面试题 2

文章目录 核心组件1.什么是 Kubernetes 中的控制器&#xff08;Controller&#xff09;&#xff1f;请提供一些常见的控制器类型。2.请解释一下 Kubernetes 中的 Ingress 是什么&#xff0c;以及它的作用。3.如何通过命令行在 Kubernetes 中创建一个 Pod&#xff1f;4.Stateful…

CC2530中文数据手册

分享一下cc2530的中文数据手册 下载地址&#xff1a;【免费】CC2530中文数据手册完全版资源-CSDN文库 最近在学习ZigBee的开发&#xff0c;使用的是cc2530芯片&#xff0c;在网上找参考手册的时候&#xff0c;发现就各种收费&#xff0c;找到一个免费的太难了&#xff0c;就在这…

MediaPipe+OpenCV 实现实时手势识别(附Python源码)

MediaPipe官网&#xff1a;https://developers.google.com/mediapipe MediaPipe仓库&#xff1a;https://github.com/google/mediapipe 一、MediaPipe介绍 MediaPipe 是一个由 Google 开发的开源跨平台机器学习框架&#xff0c;用于构建视觉和感知应用程序。它提供了一系列预训…