• 大小: 16.53MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-06-19
  • 语言: 其他
  • 标签: 代码  遗传算法  otsu  

资源简介

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个文件信息

评论

共有 条评论