遗传算法简介
• 遗传算法(Genetic Algorithms)是基于生物进化理论的原理发展起来的一种广为
应用的、高效的随机搜索与优化的方法。其主要特点是群体搜索策略和群体中个体之
间的信息交换,搜索不依赖于梯度信息。它是20世纪70年代初期由美国密执根
(Michigan)大学的霍兰(Holland)教授发展起来的。迄今为止,遗传算法是进
化算法中最广为人知的算法。
• 遗传算法主要在复杂优化问题求解和工业工程领域应用,取得了一些令人信服的成果,
所以引起了很多人的关注。遗传算法成功的应用包括:作业调度与排序、可靠性设计、
车辆路径选择与调度、成组技术、设备布置与分配、交通问题,等等。
遗传算法的特点
• 遗传算法的处理对象不是参数本身,而是对参数集进行了编码的个体。此操作使得遗传算法可以直接对结构对象
进行操作。
• 许多传统搜索算法都是单点搜索算法,容易陷入局部的最优解。遗传算法同时处理群体中的多个个体,即对搜索
空间中的多个解进行评估,减少了陷入局部最优解的风险,同时算法本身易于实现并行化。
• 遗传算法基本上不用搜索空间的知识或其他辅助信息,而仅用适应度函数值来评估个体,在此基础上进行遗传操
作。适应度函数不仅不受连续可微的限制,而且其定义域可以任意设定。这一特点使得遗传算法的应用范围大大
扩展了。
• 遗传算法不是采用确定性规则,而是采用概率的变迁规则来指导搜索的方向。
• 具有自组织、自适应和自学习性。遗传算法利用进化过程获得的信息自行组织搜索,适应度大的个体具有较高的
生存概率,并能获得更适应环境的基因结构

遗传算法中的基本概念
群体(population):又称种群、染色体群,是个体(individual)的集合,代表问题的解空间子集。
串(string)及串空间:串是个体的表达形式,对应着遗传学中的染色体,对应实际问题的一个解。
群体规模(population size):染色体群中个体的数目称为群体的大小或群体规模。
基因(gene):是指染色体的一个片段,可以是一个数值、一组数或一串字符。
交换(crossover):指在一定条件下两条染色体上的一个或几个基因相互交换位置。
交换概率:判断是否满足交换条件的一个小于1的阈值。
变异(mutation):指在一定条件下随机改变一条染色体上的一个或几个基因值。
变异概率:判断是否满足变异条件的一个小于1的阈值。
后代:染色体经过交换或变异后形成的新的个体。
适应度(fittness):用来度量种群中个体优劣(符合条件的程度)的指标值,它通常表现为数值形式。
选择(selection):根据染色体对应的适应值和问题的要求,筛选种群中的染色体,染色体的适应度越高,保存下来的概率越大,反之则越小,甚至被淘汰。
遗传算法终止规则
给定一个最大的遗传代数MAXGEN,算法迭代在达到MAXGEN时停止。
当进化中两代最优个体小于要求的偏差x时,算法终止。
所有个体或者指定比例以上个体趋同,此时停止计算。
达到最大计算时间限制。
相关函数的语法
工具箱实现:

%plotobjective(@shufcn,[-2,2;-2,2]);
%目标函数
fun = @lincontest6;
%需要优化的函数变量的个数
number = 2;
%不等式约束
A = [1 1;-1 2;2 1];%线性不等式的约束条件
b = [2;2;3];%线性不等式的约束条件
%等式约束
Aeq = [];%系数
beq = [];%边界值
%边界约束
lb = zeros(2,1);%下边界
ub = [];%上边界
%非线性约束
%nonlcon
% % 定义约束函数
% function [c, ceq] = nonlcon(x)
%     c = [-(x(1) + x(2) - 1)]; % 不等式约束 x1 + x2 ≥ 1
%     ceq = []; % 没有等式约束,设为空
% end
[x,fval,exitflag,output] = ga(@lincontest6,2,A,b,Aeq,beq,lb,ub);
disp("最优的参数");
disp(x)
disp("最优值");
disp(fval)
disp("显示遗传代数");
disp(output.generations)
disp("显示调用目标函数的次数");
disp(output.funccount)

效果
Optimization terminated: average change in the fitness value less than options.FunctionTolerance.
最有的参数
0.6670 1.3340

Optimization terminated: maximum number of generations exceeded.
最优的参数
0.6670 1.3340

最优值
-8.2258

显示遗传代数
200

显示调用目标函数的次数
9453

数学建模学习(10):遗传算法相关推荐

  1. 数学建模学习视频及资料集(2022.08.10)

    2021高中数学建模(应用)能力展示活动细则详解(上) 2021高中数学建模(应用)能力展示活动细则详解(上)_哔哩哔哩_bilibili 2021高中数学建模(应用)能力展示活动细则详解(下) 20 ...

  2. 【数学建模学习笔记【集训十天】之第六天】

    数模学习目录 Matplotlib 学习 Matplotlib简介 Matplotlib 散点图 运行效果如下: Matplotlib Pyplot 运行效果如下: 关于plot() 运行效果如下: ...

  3. 数学建模学习笔记之评价问题聚类分析法

    数学建模学习笔记之评价问题聚类分析法 物以类聚.人以群分. 聚类分析是一个很大的概念,显然根据分类的依据不同会出现很多很多聚类的方法.例如K-Means .Sequential Leader.Mode ...

  4. Python小白的数学建模课-10.微分方程边值问题

    小白往往听到微分方程就觉得害怕,其实数学建模中的微分方程模型不仅没那么复杂,而且很容易写出高水平的数模论文. 本文介绍微分方程模型边值问题的建模与求解,不涉及算法推导和编程,只探讨如何使用 Pytho ...

  5. 数学建模学习交流论文写作课件

    数学建模学习交流论文写作课件 参考资料:数学建模清风:论文写作方法课程 https://www.bilibili.com/video/BV1Na411w7c2

  6. 数学建模学习思维导图

    数学建模学习 建模方法框架总结

  7. 数学建模学习记录——数学规划模型

    数学建模学习记录--数学规划模型 一.线性规划问题 MatLab中线性规划的标准型 MatLab中求解线性规划的命令 二.整数线性规划问题 三.非线性规划问题 MatLab中非线性规划的标准型 Mat ...

  8. 数学建模学习——回归分析

    1.多元线性回归 回归分为:解释型回归.预测型回归 解释型回归:只需知道相对重要程度 预测型回归:关注预测出来有多准 需要考虑异方差 BP检验相应的Stata命令:estat hettest,rhs, ...

  9. 数学建模学习笔记(2.3)lingo软件求解线性规划问题

    数学建模学习笔记(2.3)lingo软件求解线性规划问题 lingo软件的优势在于体积小,专注于解决优化问题 且编程语言通俗易懂,没有门槛 对于刚刚接触数学建模同学比较友善 当然对于已经参与建模很久的 ...

  10. 关于投篮的数学建模模型_投篮问题的数学建模[共10页]

    投篮问题的数学建模[共10页] 摘 要如今全民大爱篮球运动,投球的命中率是一场比赛输赢的关键所在,能否投入篮筐与投球时运动员所处的位置.投球时的角度和投球时的出手速度有很大关系,该论文主要以罚球为出发 ...

最新文章

  1. 第一方Cookie和第三方Cookie
  2. 怎么把series变为datamate_如何把时间序列问题转化为监督学习问题?通俗易懂的 Python 教程...
  3. jar包冲突常用的解决方法
  4. 小白开学Asp.Net Core 《六》 —— 探究.Net Core 跨平台的奥秘
  5. 低秩矩阵分解 matlab,低秩分解的matlab代码看不懂,分解的两个矩阵在哪呀??...
  6. Zabbix 3.0 部署监控 [二]
  7. ReportViewer教程(12)-按组折叠
  8. Android之自定义checkbox样式
  9. php 复制文件夹并压缩到最小_php实现对文件压缩简单的方法
  10. HDU 5943 2016CCPC杭州 K: Kingdom of Obsession(二分匹配)
  11. Matlab二维曲线之fplot函数
  12. dcopserver出错解决办法
  13. HCIE理论-IPV6
  14. 天津农学院计算机科学与技术在那个校区,天津农学院有几个校区及校区地址
  15. 数学分析教程(科大)——4.3笔记+习题
  16. SQL插入数据时让ID从指定值自增
  17. poi在Excel中创建折线图
  18. 第5章第16节:案例:制作一份漂亮的翻页动画 [PowerPoint精美幻灯片实战教程]
  19. openstack搭建问题
  20. 神经网络应用较多的算法,图卷积神经网络应用

热门文章

  1. 编写程序一个求x的y次方的函数 要求使用递归
  2. linux rdesktop 远程,使用rdesktop实现从Ubuntu远程访问Windows桌面
  3. 第一篇献给你:Block的回调
  4. 面试了近百人,我是这样招程序员的
  5. 计算机教育二级难吗,计算机二级考试到底难不难 好通过吗
  6. 杂项-职位-DBA:DBA
  7. 杨红春没有“雷军”,良品铺子“高端”之路焦虑
  8. 在windows下使用MSVC编译ffmpeg
  9. Unity UGUI实现3D旋转循环菜单
  10. TED原文翻译——Why domestic violence victims don‘t leave