根据科学松鼠会的 文章《遗传算法:内存中的进化》设计下面的实现步骤。

文章地址:http://songshuhui.net/archives/10462

目标:

100个同一物种的生物[A0,A99],设计一个约束条件进化步骤,使得他们经过N代的演化之后、生物个体的外貌如下变化:

从随机的外貌 变成 和 长得像Firefox图标。

物种A的个体特征:

1、由 100个三角形 组成
2、每个三角形 的大小随机(在 [size_min,size_max]之间)
3、每个三角形 的颜色随机(在 [0,255]之间、共 256色可选)
4、每个三角形 的位置随机(在个体身体之内 [正方形坐标内])

绘图(进化)步骤:

1、随机生成 100个个体 [A0,A99]:每个个体体内的每个 的大小、颜色、位置都随机。
2、将每个个体中都与 Firefox图标进逐像素对比,对比结果用相同的像素的 百分比表示,记为 分数C
      如果第 i个个体 Ai的第 i[k]个像素和 Firefox的第 i[k]个像素颜色差值小于 10(颜色值范围 [0,255])、
      就认为在相同位置上的像素的颜色相同,则 C+1
      例如个体 Ai56%的像素和 Firefox图标的像素相同,那么 Ai的分数 Ci=56
3、将得分最高的 5个个体组成一个组 ZZ组内相邻两个个体之间的分数差异必须小于 10,否则将它从 Z组内剔除。
4、在 Z组中进行筛选、选出 独立图像块数量最少的 2个个体(这一步有待商榷、可以不要,直接将 Z组设为只有 2个个体)。
      Ai的第 i[k]个点和周围的 8个点进行对比,颜色值相差小于 4则认为它们同属一个 独立块
5、最后得到的这 2个个体繁殖: 2个个体分别各自被拆分成 2半、每一半拥有随机的 50,得到 4半体、每个有 50,然后交叉组合得到 4个新的个体。

连续重复25次,得到新一代的100个个体[A0,A99]
6、新一代的[A0,A99]中允许10%的个体出现繁殖/进化上的变异:随机选出10%的个体,其中的每个个体上随机出现1变异(颜色或位置随机改变)。
7、检查结果:如果任意两个个体之间的分数差值都小于4、且连续1000代都是小于4,就认为进化已经达到平衡,停止进化、输出结果(最终图像和最终是第几代)。

否则继续下一步。至于得到的图像与Firefox图标之间的相似度是多少,这里不做保证。需要调整以上各步骤中的参数、来调整最终得到的图像。
8、跳转到第2步。

实现代码:

--question-1

..

A003-算法-遗传算法-绘图-(ques=1)相关推荐

  1. 智能算法--遗传算法(1-1)

    智能算法–遗传算法(1-1) 一.标准遗传算法基本概念 标准遗传算法(Standard Genetic Algorithm, SGA)是由美国J.H. Holland教授与他的同事和学生于1975年研 ...

  2. 如何选择优化算法遗传算法_用遗传算法优化垃圾收集策略

    如何选择优化算法遗传算法 Genetic Algorithms are a family of optimisation techniques that loosely resemble evolut ...

  3. 算法——遗传算法基础

    1.遗传算法的概念 遗传算法是模仿自然界生物进化机制发展起来的随机全局搜索和优化方法,它借鉴了达尔文的进化论和孟德尔的遗传学说.其本质是一种高效.并行.全局搜索的方法. 2.遗传算法的特点 2.1遗传 ...

  4. 深度学习经典算法 | 遗传算法详解

    遗传算法生物学基础 在一定的时间内,有一群兔子,其中一些比另外一些兔子跑得快,而且更聪明,这些兔子被狐狸吃掉的可能性比较小,因此它们中的多数就存活下来并繁殖更多的兔子.当然,一些跑得慢而愚蠢的兔子也会 ...

  5. 进化算法--遗传算法

    遗传算法 一.能解决的问题 如果你需要解决一个问题,这个问题的每一个可能的解均可以用位串来表示,那么遗传算法就能解决这个问题. 二.术语 个体:每一个可能的解: 种群:一群个体: 基因:个体中位的一个 ...

  6. 沉降预测算法-遗传算法

    目录 1. 遗传算法 2. 网络模型设计 3. 代码实现 4. 拟合结果 利用最小二乘算法拟合其他沉降预测曲线的实现方法参见:常见沉降预测算法,源代码和可执行程序参见:常用沉降预测算法实现代码

  7. 【多式联运】基于matlab帝国企鹅算法+遗传算法+粒子群算法求解不确定多式联运路径优化问题【含Matlab源码 2073期】

    ⛄一.联运运输简介 1 引言 运输问题(Transportation Problem)是一类特殊的线性规划问题,最早是由Hichcock于1941年提出的,由于它不仅能解决物资的合理调运和车辆的合理调 ...

  8. PHP写算法-遗传算法

    本文尝试用PHP语言编写遗传算法 遗传算法的具体介绍,请自行搜索,本文也没有完全按照网络上的写法做,作者水平有限,使用的中间算法也都不怎么高明,请各位带着批评看文章. 本文采用的遗传算法步骤 - ①初 ...

  9. 遗传算法及其matlab实现,现代智能化算法—遗传算法及其matlab代码实现

    遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法,它最初由美国Michigan大学J.Ho ...

最新文章

  1. 033_字符集和编码
  2. failed due to the following error: 80070005 错误解决方案
  3. 模拟实现顺序表ArrayList1(三级)
  4. 电脑怎样执行编程语言的?
  5. 怎么调试内存溢出的c++代码_【C/C++】内存对齐 到底怎么回事?
  6. C++ 内存基本构件new/delete的意义、运用方式以及重载方式
  7. 冲上热搜!8次手术没有倒下,截肢少年考出684分!清华发声
  8. Spring Cloud学习笔记-009
  9. 炉石整活拔线方法_酒馆战棋:整活如何简单“拔线”?瓦娘在线教学,却3本得死神?...
  10. 赫尔维茨矩阵与matlab,第3章时域分析法剖析.ppt
  11. DirectX SDK (June 2010)安装遇到Error Code S1023
  12. linux 黑酷命令行背景图片
  13. 让程序员崩溃的一句话。。。
  14. 污水流量计常见故障形成原因检测方法
  15. 技术管理岗岗位职责总结
  16. 微信开放平台开发第三方授权登陆(一):开发前期准备
  17. Android关键字persistent
  18. ubuntu--ogv格式转mp4格式
  19. go程序cpu过高问题排查方法
  20. 2298: [HAOI2011]problem a

热门文章

  1. vue中百度地图的图形绘制
  2. 高效工作——表格巧应用——表格制图(文字版)
  3. 【官方文档】Fluentd 安装前的配置
  4. glb格式的3D模型怎么下载?gltf格式的3D模型怎么下载?
  5. 西门子plc的上升沿和下降沿是什么意思?
  6. 计算机图形学--三维图形表面绘制
  7. drawrect java_Java Graphics.drawRect方法代码示例
  8. 安装程序无法继续因为你的计算机,需要重新启动计算机,安装程序才能继续 | Microsoft Docs...
  9. 第四篇 kali Linux 下安装fluxion
  10. MFC中使用Sqllite数据库