加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 搜索优化 > 正文

基于遗传算法和非线性规划的函数寻优算法(Matlab代码实现)

发布时间:2022-10-30 16:32:44 所属栏目:搜索优化 来源:转载
导读: 目录
1 概述 1.1简介
现实生活中很多科学计算和工程问题都可以通过建模转化成求函数的优化问题,并求出函数模型在可行域内的最优解,给决策者提供参考。非线性规划是20世纪50年代形成的一门

目录

1 概述 1.1简介

现实生活中很多科学计算和工程问题都可以通过建模转化成求函数的优化问题,并求出函数模型在可行域内的最优解,给决策者提供参考。非线性规划是20世纪50年代形成的一门新兴学科,研究一个n元实函数在一组等式或者不等式约束条件下的优化问题,主要包括坐标轮换法、共轭梯度法和拟牛顿法等。遗传算法是一类借鉴生物界自然选择和自然遗传机制的随机搜索算法,被广泛应用于组合优化、机器学习等领域,适合解决不依赖梯度信息,且不要求目标函数连续及可导等传统解法(如解析法、单纯形法等)难以解决的复杂的和非线性的优化问题。

针对遗传算法求解复杂非线性函数寻优出现早熟, 陷入最优解这一问题, 将非线性规划和遗传算法相结合, 通过对典型复杂函数的仿真, 并与遗传算法比较, 表明基于遗传算法和非线性规划的函数寻优算法具有明显的优势, 收敛速度快, 寻找到的极值非常接近最优解。

1.2遗传算法及其基本步骤

1.2.1 遗传算法

遗传算法是一种进化算法,基本原理是仿效生物界中的“物竞天择,适者生存”的演化规则。遗传算法将问题参数编码为染色体,再利用迭代方式进行选择、交叉和变异等运算来变换种群中染色体的信息,最终生成符合优化目标的染色体。在遗传算法中,染色体对应的是数据或数组,通常由一维的串结构数据来表示,串上各个位置对应基因的取值。基因组成的串就是染色体,也称为基因型个体,一定数量的个体构成了群体。群体中个体数目称为种群大小,也称为群体规模。各个个体对环境的适应程度称为适应度。

1.2.2 基本步骤

遗传算法主要涉及的基本步骤如下。

1.2.2.1 编码

遗传算法在进行搜索之前,需要将解空间的数据表示成遗传空间的基因型串结构数据,这些串结构数据的不同组合便构成了不同的点。常用的编码方式主要有位串编码、Grey编码、实数(浮点法)编码、多级参数编码等。其中,实数编码不需要进行数值转换,可以直接在解的表现形式上进行遗传算法操作,因此本文采用该方法编码,每一个染色体为一个实数向量。

1.2.2.2初始种群形成

随机产生N个初始串结构数据,每个串结构数据称为一个个体,N个个体构成了一个群体。遗传算法以这N个串结构数据作为初始点开始进化。

1.2.2.3适应度函数

适应度表明个体或者解的优劣性,是进行自然选择的唯一依据,一般是由目标函数加以变换得到。

1.2.2.4选择

选择的目的是从当前的群体中选出优良的个体组成一个新的群体,使它们有机会作为父代繁殖出下一代。个体被选中的概率和适应度值有关基于遗传算法的随机优化搜索,个体适应度值越大,被选中的概率越大。常见的选择操作主要有轮盘赌法、锦标赛法等,本文采取的是轮盘赌法,即基于适应度比例的选择策略。

1.2.2.5 交叉

交叉操作是遗传算法中最主要的遗传操作,体现了信息交换的思想。通过交叉操作可以得到新一代优秀个体,新个体组合了父辈个体的特性。本文主要采取的是实数交叉法。

1.2.2.6 变异

变异主要是为了维持种群多样性。变异首先在群体中随机选择一个个体,对于选中的个体以一定的概率随机地改变串结构数据中的某个串的值。同生物界一样,遗传算法中变异概率很低,通常取很小的值,本文选取变异概率为0.01。

2 部分运行结果

2.1.1 案例1

基于fft的高精度频率估计算法研究_淘宝seo搜索优化怎么优化_基于遗传算法的随机优化搜索

2.1.2 案例1非线性

基于遗传算法的随机优化搜索_基于fft的高精度频率估计算法研究_淘宝seo搜索优化怎么优化

2.2.1 案例2

基于遗传算法的随机优化搜索_淘宝seo搜索优化怎么优化_基于fft的高精度频率估计算法研究

2.2.2案例2非线性

淘宝seo搜索优化怎么优化_基于遗传算法的随机优化搜索_基于fft的高精度频率估计算法研究

3 Matlab代码实现

%% 清空环境
clc
clear
%% 遗传算法参数
maxgen=30;                         %进化代数
sizepop=100;                       %种群规模
pcross=[0.6];                      %交叉概率
pmutation=[0.01];                  %变异概率
lenchrom=[1 1 1 1 1];              %变量字串长度
bound=[0 0.9*pi;0 0.9*pi;0 0.9*pi;0 0.9*pi;0 0.9*pi];  %变量范围
%% 个体初始化
individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]);  %种群结构体
avgfitness=[];                                               %种群平均适应度
bestfitness=[];                                              %种群最佳适应度
bestchrom=[];                                                %适应度最好染色体
% 初始化种群
for i=1:sizepop
    individuals.chrom(i,:)=Code(lenchrom,bound);       %随机产生个体
    x=individuals.chrom(i,:);
    individuals.fitness(i)=fun(x);                     %个体适应度
end
完整代码见:链接:https://pan.baidu.com/s/12ug1JElcB3nO33oJoWsUvQ 
提取码:2gg9 

4 参考文献

[1]王荣亮.基于非线性规划和遗传算法的函数寻优[J].科技与创新,2019,(15):47-48+50.DOI:10.15913/j.cnki.kjycx.2019.15.016

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!