遗传算法计算函数最小值(多维)
函数
仿真过程
君主方案
代码实现
1、函数
的最小值,其中x的维数n=10,这是一个简单平方和函数,只有一个极小点 =(0,0,...,0),理论最小值
2、仿真过程:
(1)初始化种群数目NP=100,染色体基因维数为D=10,最大进化代数G=1000,交叉概率Pc=0.8,变异概率Pm=0.1
(2)产生初始种群,计算个体适应度值,进行实数编码的选择以及交叉和变异操作。选择和交叉操作采用“君主方案”,即在对群体根据适应度值高低进行排序的基础上,用最优个体与其他偶数的所有个体进行交叉,每次交叉产生两个新的个体。在交叉过后,对新产生的群体进行多点变异产生子群体,再计算其适应度值,然后和父群体合并,并且根据适应度值进行排序,取前NP个个体为新群体,进行下一步遗传操作。
(3)判断是否满足终止条件:若满足,则结束搜索过程,输出优化值,若不满足,则继续进迭代优化。
优化结束后,其适应度进化曲线如图所示,优化结果,函数的最小值为
3、君主方案
与轮盘赌的区别是:轮盘赌的父母方染色体都是根据适应度越大越容易被选中的原理随机筛选出来的。而君主方案是父方染色体全部是本代最占优的一条,母方是按一定顺序(升序)排列的一群染色体。
4、 代码部分
%%实值遗传算法求函数极值%%%%
%%%%%初始化参数%%%%%
clear all; %清除所有变量
close all; %清图
clc; %清屏
NP=50; %染色体数目
D=10; %基因数目
Pc=0.8; %交叉率,一般取0.25~1
Pm=0.1; %变异率,一般取0.001~0.1
G=1000; %最大遗传代数,一般100~1000
Xs=20; %定义域上限
Xx=-20; %定义域下限
f=rand(D,NP)*(Xs-Xx)+Xx; %随机获得初始种群
trace=zeros(1,G); %预先分配内存
Fit=zeros(1,NP); %预先分配内存
%%%%%遗传算法循环%%%%%
for gen=1:G%%%%%按适应度升序排列%%%%%for np=1:NPFit(np)=func2(f(:,np));end[SortFit,Index]=sort(Fit);Sortf=f(:,Index);%%%%%采用君主方案进行选择交叉操作%%%%%Emper=Sortf(:,1);NoPoint=round(D*Pc);PoPoint=randi([1 D],NoPoint,NP/2);nf=Sortf;for i=1:NP/2nf(:,2*i-1)=Emper;nf(:,2*i)=Sortf(:,2*i);for k=1:NoPointnf(PoPoint(k,i),2*i-1)=nf(PoPoint(k,i),2*i);nf(PoPoint(k,i),2*i)=Emper(PoPoint(k,i));endend%%%%%变异操作%%%%%for m=1:NPfor n=1:Dr=rand(1,1);if r<Pmnf(n,m)=rand(1,1)*(Xs-Xx)+Xx;endendendf=nf;trace(gen)=SortFit(1);
end
Bestf=Sortf(:,1)
summ=func2(Bestf)
trace(end);
figure
plot(trace)
xlabel('迭代次数')
ylabel('目标函数值')
title('适应度进化曲线')
function result=func2(x)
result=sum(x.^2);
end
遗传算法计算函数最小值(多维)相关推荐
- 基于遗传算法求函数最小值
一.遗传算法概述 遗传算法( genetic algorithm,GA)是一种进化算法,其基本原理是仿效生物界中的"物竞天择.适者生存"的演化法则.遗传算法是把问题参数编码为染色体 ...
- 人工智能 遗传算法 计算函数极值问题
人工智能 遗传算法 计算函数极值问题 系列文章 人工智能 倒啤酒问题 python解法 人工智能 水壶问题 python解法 A*算法之八数码问题 python解法 A*算法之野人传教士问题 pyth ...
- 遗传算法求解函数最小值问题
遗传算法求解函数最小值问题 继上一次用遗传算法求解TSP问题问题以后,万万没有想到,实验的时候,老师居然改了题目,改成了求解函数的最小值问题(有点坑哈),而且要求结果尽量的稳定,可以确定得到最小值,并 ...
- 遗传算法求函数最小值(多维)1
目标函数: 代码: %%实值遗传算法求函数极值%%%% %%%%%初始化参数%%%%% clear all; %清除所有变量 close all; %清图 clc; %清屏 NP=100; %染色 ...
- 遗传算法求函数最小值(多维)2
目标函数: 代码: function o=func21(x) o=sum(x.^2-10*cos(2*pi.*x)+10); end %%实值遗传算法求函数极值%%%% %%%%%初始化参数%%% ...
- matlab遗传算法求多元函数最小值,matlab遗传算法求函数最小值
function obj=yichuan(lb,ub,px,pm) %lb,ub为自变量的下界与上界,px为杂交概率,pm为变异概率 popsize=40; %设定种群大小为40 maxgen=500 ...
- 【遗传算法GA】--计算函数最值(Python)
文章目录 1.遗传算法概述 2.分步实现过程 3.完整Python代码 4.结果截图 1.遗传算法概述 对于遗传算法:遗传算法是一种用于解决最优化的搜索算法,也是进化算法的一种.取名遗传就是因为它借鉴 ...
- python二元函数如何编写,Nelder_Mead算法的简介和用作求解二维函数最小值的Python实现...
一.Nelder-Mead算法介绍 Nelder-Mead算法主要应用于求解一些非线性(nonliner).导函数未知的最大值或最小值问题.本文利用Nelder-Mead算法求解函数最小值问题. 当应 ...
- Nelder_Mead算法的简介和用作求解二维函数最小值的Python实现
一.Nelder-Mead算法介绍 Nelder-Mead算法主要应用于求解一些非线性(nonliner).导函数未知的最大值或最小值问题.本文利用Nelder-Mead算法求解函数最小值问题. 当应 ...
最新文章
- 两段用来启动/重启Linux下Tomcat的Perl脚本
- archlinux php imagemagick,Arch Linux服务器启用Imagemagick PHP扩展
- 安装后改中文界面_非常详尽图文KVM安装CentOS
- 基于JAVA实现的排序算法总结
- float排版c语言,如何解决因float带来的排版问题?
- 10 分钟入门 Less 和 Sass
- 解决在phpmyadmin中执行sql语句出现的错误:Unknown storage engine 'InnoDB'
- matlab怎么画二维热力图_Tableau画日历热力图
- http,tcp的长连接和短连接
- access h3c交换机光口_华为交换机的配置及:access、trunk、hybird端口详解
- ArcGIS+Fragstats软件进行景观格局指数分析(附练习数据下载)
- java文件恢复软件,误删文件恢复-误删文件恢复大师 v1.1.0 最新版
- Java面试题:单核CPU支持多线程吗?
- zjs-my-diary-20200609
- RUOYI 框架教程 1 |小白都能学会的 3 分钟搭建框架教程
- linux NUMA技术
- JAVA和H5的优势有哪些
- composer 安装laravel 5.5 苹果终端
- 开源私有云盘python_使用Seafile搭建个人专属私有云盘
- matlab中保存文件为excel文件