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

news2024/11/24 22:32:05

目录

1 概述

1.1简介

1.2 遗传算法及其基本步骤

2 部分运行结果

3 Matlab代码实现

4 参考文献



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

2.1.2 案例1非线性

 2.2.1 案例2 

 2.2.2 案例2非线性

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 

部分理论来源于网络,如有侵权请联系删除。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/68848.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【AI学习笔记】Error: ffmpeg error (see stderr output for detail)

报错: 原因: 我询问了一下大佬,大佬说让我调试一下ffmpeg库,看本地能不能用,然后又结合了我查看的一些博文及本地环境,推论出我很可能没有配置环境。 由于我conda一个环境,本地一个python3.9环…

Vue按钮(Button)

可自定义设置以下属性: 按钮默认文本(name),默认不设置时显示为按钮 按钮类型(type),默认default,另外可选primary danger 按钮悬浮变化效果(effect),只有t…

TokenFusion 代码

只看语义分割。 # --------------------------------------------------------------- # Copyright (c) 2021, NVIDIA Corporation. All rights reserved. # # This work is licensed under the NVIDIA Source Code License # ----------------------------------------------…

UNIAPP实战项目笔记48 确认支付页面的布局

UNIAPP实战项目笔记48 确认支付页面的布局 实际案例图片 显示确认支付页面布局 具体内容图片自己替换哈&#xff0c;随便找了个图片的做示例 具体位置见目录结构 完善布局页面和样式 代码 payment.vue部分 payment.vue 确认订单页面布局和渲染 <template><view>…

(六) Docker容器数据卷

Docker容器数据卷一、概述二、作用三、宿主与容器之间映射添加容器卷四、读写规则映射添加五、卷的继承和共享注意点 容器卷记得加入 --privilegedtrueDocker挂载主机目录访问如果出现错误信息&#xff1a;cannot open directory .: Permission denied 解决办法&#xff1a;在…

日本掀起“淘金热”!亚马逊、Ebay、Shopee、Starday先后开炮,卖家如何分食跨境新蓝海?

众所周知&#xff0c;日本电商较欧美等国发展较晚&#xff0c;但日本凭借全球第三经济总量&#xff0c;极高的网络覆盖率、国土面积小、人口集中、物流基础设施成熟等优势&#xff0c;给日本消费者网购创造了完美的环境&#xff0c;近年来网络购物增长极为迅速。路透社报道称&a…

Python——基础知识(1)

前面主要讲解了javaEE的基础知识&#xff0c;基本上可以用servlet写一些简单的网页程序&#xff0c;后续的博客将围绕spring进行讲解&#xff0c;并且其中穿插一些python的知识 变量 命名 和其他的编程语言一样&#xff0c;java的变量命名需要遵循下面几个原则 由数字&…

HCI OPCDE

HCI控制命令由两个字节的OpCode定义&#xff0c;每个OpCode由一个字节的OGF&#xff08;OpCode Group Field&#xff09;和一个字节的OCF&#xff08;OpCode Command Field&#xff09;组成。参考&#xff1a; HCI Command Packet Command的数据包格式如下图&#xff1a; 其中…

GoWeb 进阶的实战项目,基于 Iris 框架实现 JWT 认证(附案例全代码)

1、前言 我们知道&#xff0c;http协议本身是一种无状态的协议&#xff0c;而这就意味着如果用户向我们的应用提供了用户名和密码来进行用户认证&#xff0c;那么下一次请求时&#xff0c;用户还要再一次进行用户认证才行&#xff0c;因为根据http协议&#xff0c;我们并不能知…

【强化学习论文合集】七.2017神经信息处理系统大会论文(NIPS2017)

强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。 本专栏整理了近几年国际顶级会议中,涉及强化学习(Rein…

如何制作Docker镜像

一般有两种方式来制作自己的 Docker 镜像 基于现有的 Docker 镜像&#xff0c;安装自己的软件环境后&#xff0c;完成制作从零开始用 Dockerfile 来制作 宿主机环境 Ubuntu 18.04 x86_64 基于现有Docker镜像来制作 首先要获得一个基本的 Docker 镜像 使用 ”docker pull“…

【C++笔试强训】第三天

选择题 1.以下程序的输出结果是&#xff08;&#xff09; #include <stdio.h> int main() {char a[10] {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, *p;int i;i 8;p a i;printf("%s\n", p - 3); }A 6 B 6789 C ‘6’ D 789 a是数组名&#xff0c;所以指向数组首元…

p4实现负载均衡

实验要求 基于简单版本的等成本多路径转发实现一种负载平衡。实现的交换机将使用两个表将数据包随机转发到两个目标主机之一第一个表将使用哈希函数&#xff08;应用于由源和目标IP地址、IP协议以及源和目标TCP端口组成的5元组&#xff09;来选择两个主机中的一个第二个表将使…

gnn神经网络是什么,gnn神经网络代码

1、gnn什么意思? 指图形神经网络。 生物神经网络主要是指人脑的神经网络&#xff0c;它是人工神经网络的技术原型。人脑是人类思维的物质基础&#xff0c;思维的功能定位在大脑皮层&#xff0c;后者含有大约10^11个神经元。 每个神经元又通过神经突触与大约103个其它神经元…

永磁同步电机(PMSM)磁场定向控制(FOC)及Matlab/Simulink仿真分析

文章目录前言一、FOC的基本原理二、坐标变换2.1.Clark坐标变换2.2.Park坐标变换三、永磁同步电机在同步旋转坐标系下的数学模型四、永磁同步电机磁场定向控制Matlab/Simulink仿真分析4.1.电压开环控制4.1.1.仿真电路分析4.1.2.仿真结果分析4.2.电流闭环控制4.2.1.仿真电路分析4…

两个月吃透阿里P9推荐260页SpringBoot2企业应用实战pdf入职定P6+

前言 都说程序员工资高、待遇好&#xff0c; 2022 金九银十到了&#xff0c;你的小目标是 30K、40K&#xff0c;还是 16薪的 20K&#xff1f;作为一名 Java 开发工程师&#xff0c;当能力可以满足公司业务需求时&#xff0c;拿到超预期的 Offer 并不算难。然而&#xff0c;提升…

Ansys Zemax | 使用OpticStudio进行闪光激光雷达系统建模(下)

在消费类电子产品领域&#xff0c;工程师可利用激光雷达实现众多功能&#xff0c;如面部识别和3D映射等。尽管激光雷达系统的应用非常广泛而且截然不同&#xff0c;而“闪存激光雷达”解决方案适用于在使用固态光学元件的目标场景中生成可检测的点阵列。 凭借在针对小型封装获…

「Redis」08 主从复制

笔记整理自【尚硅谷】Redis 6 入门到精通 超详细 教程 Redis——主从复制 1. 简介 主机数据更新后根据配置和策略&#xff0c; 自动同步到备机的 master/slaver 机制&#xff0c;Master 以写为主&#xff0c;Slaver 以读为主。 主从复制的好处 读写分离&#xff0c;性能扩展…

利用styleSheet,避免js手动频繁修改样式

styleSheet是一个样式表&#xff0c;记录了一个html文件中<style>标签中的样式 &#x1f5a8;️体感styleSheet 对于下面一个html文件 <!DOCTYPE html> <html lang"en"><head><style>h1 {color: red;}div {color: green; }</styl…

VMware替换难?听听ZStack 的这3家制造业客户怎么说……

随着国家对信创转型的持续扶持&#xff0c;加之VMware原有的产品与客户云建设需求的契合度不高&#xff0c;越来越多的用户选择将自身的IT系统替换为国产化的信创产品&#xff0c;且已经在金融、交通、制造业、教育、房地产等领域落地出现从VMware迁移转型的成功案例。在此趋势…