遗传算法优化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_algorithmGA.py
     文件       11107  2018-11-27 12:09  genetic_algorithmIGA.py
     文件           2  2018-11-21 16:40  genetic_algorithm\__init__.py
     目录           0  2018-11-27 16:48  genetic_algorithmga_process
     文件       42809  2018-11-27 12:09  genetic_algorithmga_processiter_0.jpg
     文件       42033  2018-11-27 12:10  genetic_algorithmga_processiter_1.jpg
     文件       40501  2018-11-27 12:11  genetic_algorithmga_processiter_10.jpg
     文件       39639  2018-11-27 12:12  genetic_algorithmga_processiter_100.jpg
     文件       39597  2018-11-27 12:12  genetic_algorithmga_processiter_101.jpg
     文件       39640  2018-11-27 12:12  genetic_algorithmga_processiter_102.jpg
     文件       39592  2018-11-27 12:12  genetic_algorithmga_processiter_103.jpg
     文件       39531  2018-11-27 12:12  genetic_algorithmga_processiter_104.jpg
     文件       39553  2018-11-27 12:12  genetic_algorithmga_processiter_105.jpg
     文件       39623  2018-11-27 12:12  genetic_algorithmga_processiter_106.jpg
     文件       39545  2018-11-27 12:12  genetic_algorithmga_processiter_107.jpg
     文件       39635  2018-11-27 12:12  genetic_algorithmga_processiter_108.jpg
     文件       39608  2018-11-27 12:12  genetic_algorithmga_processiter_109.jpg
     文件       40234  2018-11-27 12:11  genetic_algorithmga_processiter_11.jpg
     文件       39631  2018-11-27 12:12  genetic_algorithmga_processiter_110.jpg
     文件       39545  2018-11-27 12:12  genetic_algorithmga_processiter_111.jpg
     文件       39618  2018-11-27 12:12  genetic_algorithmga_processiter_112.jpg
     文件       39596  2018-11-27 12:12  genetic_algorithmga_processiter_113.jpg
     文件       39599  2018-11-27 12:12  genetic_algorithmga_processiter_114.jpg
     文件       39654  2018-11-27 12:12  genetic_algorithmga_processiter_115.jpg
     文件       39636  2018-11-27 12:12  genetic_algorithmga_processiter_116.jpg
     文件       39550  2018-11-27 12:12  genetic_algorithmga_processiter_117.jpg
     文件       39627  2018-11-27 12:12  genetic_algorithmga_processiter_118.jpg
     文件       39637  2018-11-27 12:12  genetic_algorithmga_processiter_119.jpg
     文件       40384  2018-11-27 12:11  genetic_algorithmga_processiter_12.jpg
     文件       39588  2018-11-27 12:12  genetic_algorithmga_processiter_120.jpg
............此处省略246个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)