资源简介
otsu.py定义了最大类间方差函数,test.py用于运行GA model,IGA为遗传算法策略的改进版本,make_video.py用于将每一代的结果制作成视频(如果将每个点家加上一个随机偏移,画出来的效果会更好哦,可以自己尝试)。杭州电子科技大学模式识别课程代码。
这个积分有点麻烦,可以到我的github去下载:https://github.com/finepix/py_workspace/tree/master/genetic_algorithm
代码片段和文件信息
“““
GA 模型, 用遗传算法求解OTSU
“““
import random
import matplotlib.pyplot as plt
import time
import cv2
class GA:
def __init__(self img fitness population_num evolution_times ga_length=8 crossover_pro=0.5
variation_pro=0.001):
“““
GA model,对种群参数以及种群进行初始化
:param img: 图像数据
:param fitness: 适应度函数
:param population_num: 种群数量
:param evolution_times: 种群迭代次数
:param ga_length: 基因长度
:param crossover_pro: 交换概率
:param variation_pro: 变异概率
“““
# 图像数据
self.data = img
# 基因长度
self.ga_length = ga_length
# 种群数量
self.population_num = population_num
# 适应度函数
self.fitness = fitness
# 进化次数(产生多少代后代)
self.evolution_times = evolution_times
# 交叉以及变异概率
self.crossover_pro = crossover_pro
self.variation_pro = variation_pro
# 画图参数
self.plt = plt
x = range(pow(2 self.ga_length))
y = [self.fitness(self.data i) for i in x]
max_y = max(y)
index_max = y.index(max_y)
self.x = x
self.y = y
self.max_y = max_y
self.index_max = index_max
self.min_y = min(y)
# 随机产生种群,并且编码
self.populations = []
# todo pow(2 self.ga_length) - 1
max_num = pow(2 self.ga_length) - 1
for i in range(self.population_num):
pop = random.randint(0 max_num)
pop = self.num_encode(pop)
self.populations.append(pop)
# todo initialize
def selection(self):
“““
通过轮盘法选择
:return:
“““
# # todo delete
# gen = self.statistics()
# print(‘before selection:‘ gen)
# 计算每一个个体的适应度值
fitness_list = self.calculate_fitness_list()
# 存在误差
# fitness_sum = np.sum(fitness_list)
# fitness_pro = fitness_list / fitness_sum
fitness_sum = 0.0
for fit in fitness_list:
fitness_sum += fit
fitness_pro = []
for i in range(len(fitness_list)):
fitness_pro.append(fitness_list[i] / fitness_sum)
pro_sum = 0.0
for i in range(1 self.population_num):
pro_sum += fitness_pro[i]
fitness_pro[i] = pro_sum
# 在计算中由于浮点数计算会存在误差导致最后的概率之和不为1,这里纠正
fitness_pro[-1] = 1
next_generations = []
for i in range(self.population_num):
# 产生一个0 - 1的概率
pro = random.uniform(0 1)
# 可优化(先计算完轮盘选择的全部概率分布,归结子问题),见上
if pro <= fitness_pro[0]:
next_generations.append(self.populations[0])
continue
for j in range(self.population_num - 1):
if fitness_pro[j] < pro < fitness_pr
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-11-27 16:47 genetic_algorithm\
文件 12630 2018-11-27 11:15 genetic_algorithm\GA.py
文件 11107 2018-11-27 12:09 genetic_algorithm\IGA.py
文件 2 2018-11-21 16:40 genetic_algorithm\__init__.py
目录 0 2018-11-27 16:48 genetic_algorithm\ga_process\
文件 42809 2018-11-27 12:09 genetic_algorithm\ga_process\iter_0.jpg
文件 42033 2018-11-27 12:10 genetic_algorithm\ga_process\iter_1.jpg
文件 40501 2018-11-27 12:11 genetic_algorithm\ga_process\iter_10.jpg
文件 39639 2018-11-27 12:12 genetic_algorithm\ga_process\iter_100.jpg
文件 39597 2018-11-27 12:12 genetic_algorithm\ga_process\iter_101.jpg
文件 39640 2018-11-27 12:12 genetic_algorithm\ga_process\iter_102.jpg
文件 39592 2018-11-27 12:12 genetic_algorithm\ga_process\iter_103.jpg
文件 39531 2018-11-27 12:12 genetic_algorithm\ga_process\iter_104.jpg
文件 39553 2018-11-27 12:12 genetic_algorithm\ga_process\iter_105.jpg
文件 39623 2018-11-27 12:12 genetic_algorithm\ga_process\iter_106.jpg
文件 39545 2018-11-27 12:12 genetic_algorithm\ga_process\iter_107.jpg
文件 39635 2018-11-27 12:12 genetic_algorithm\ga_process\iter_108.jpg
文件 39608 2018-11-27 12:12 genetic_algorithm\ga_process\iter_109.jpg
文件 40234 2018-11-27 12:11 genetic_algorithm\ga_process\iter_11.jpg
文件 39631 2018-11-27 12:12 genetic_algorithm\ga_process\iter_110.jpg
文件 39545 2018-11-27 12:12 genetic_algorithm\ga_process\iter_111.jpg
文件 39618 2018-11-27 12:12 genetic_algorithm\ga_process\iter_112.jpg
文件 39596 2018-11-27 12:12 genetic_algorithm\ga_process\iter_113.jpg
文件 39599 2018-11-27 12:12 genetic_algorithm\ga_process\iter_114.jpg
文件 39654 2018-11-27 12:12 genetic_algorithm\ga_process\iter_115.jpg
文件 39636 2018-11-27 12:12 genetic_algorithm\ga_process\iter_116.jpg
文件 39550 2018-11-27 12:12 genetic_algorithm\ga_process\iter_117.jpg
文件 39627 2018-11-27 12:12 genetic_algorithm\ga_process\iter_118.jpg
文件 39637 2018-11-27 12:12 genetic_algorithm\ga_process\iter_119.jpg
文件 40384 2018-11-27 12:11 genetic_algorithm\ga_process\iter_12.jpg
文件 39588 2018-11-27 12:12 genetic_algorithm\ga_process\iter_120.jpg
............此处省略246个文件信息
相关资源
- 代码整洁之道中文版.pdf
- 《数据挖掘算法原理与实现》王振武
- 使用struts2+hibernate的框架实现的网上购
- tiny6410 uboot代码145866
- 代码安全检测 系统安全测试方法 等
- 抠图代码opencv
- 设计模式之禅高清PDF+源代码
- 基于stm32led可调光设计原理图+keil代码
- 免费的基于LUCENE的搜索引擎的设计与
- Linux设备驱动开发详解:基于最新的
- OPENGL 水波效果 源代码
- 重构改善代码设计_2nd_Edition
- 王者荣耀官网web端代码
- VisualBasic.NET实用编程百例+源代码非常
- CRM系统-客户关系管理数据系统原型
- 第一行代码 第二版 第二行代码-源码
- SD_spi+FAT16工程和代码
- VisualSFM代码
- 运筹学算法与编程实践 Delphi实现 p
- Linux内核2.4版源代码分析大全李善平老
- 学生成绩管理系统源代码+详细设计文
- CT117E蓝嵌入式资源,各个模块代码,
- 网络模型与多目标遗传算法
- 航空公司客户价值分析
- L1最小化的视觉跟踪 论文 代码详细解
- 自适应滤波器原理-Simon Haykin 包括所有
- 浅墨的opencv学习代码,有注释,前十
- 《剑指offer》第二版 高清PDF+代码附赠
- 100+个安卓应用程序开发工程代码.ra
- hands-on machine learning with scikit-learn an
评论
共有 条评论