精华内容
下载资源
问答
  • 基于反向学习的人工蜂群算法 基于反向学习的人工蜂群算法 基于反向学习的人工蜂群算法 基于反向学习的人工蜂群算法基于反向学习的人工蜂群算法基于反向学习的人工蜂群算法
  • 提出一种反向学习全局和声搜索(OLGHS)算法.基于反向学习技术初始化和声记忆库,提高初始和声向量的质量;通过当前最差和声向当前最优和声学习进化,提高算法的全局搜索性能;通过其他和声向量之间不断回溯交互的随机学习...
  • 应用反向学习策略的群搜索优化算法
  • 为将烟花算法应用于离散优化领域并有效求解多维背包问题,构建一种二进制反向学习烟花算法。.首先,通过定义二进制字符串距离、二进制转置算子将烟花算法的爆炸算子、变异算子离散化,构建二进制烟花算.法;其次,...
  • 针对磷虾群算法易陷入局部最优、收敛速度慢等缺点,提出了具备反向学习和局部学习能力的磷虾群算法。利用混沌映射和反向学习的思想初始化种群,根据算法迭代次数自适应调整学习维度,对精英个体进行反向学习,能有效...
  • 提出了一种应用反向学习和Tent混沌映射变异的改进人工鱼群算法.选择部分精英个体执行反向学习,引导种群向全局最优解逼近,有利于均衡算法的勘探与开采能力.当种群多样性下降到一定程度,并且公告板多次无法得到更新时,...
  • 算法啊,反向学习模型的多目标进化算法,多学习吧,多努力
  • 基于一般反向学习的群体随机搜索算法框架。详细介绍了反向学习机制,及其在群体随机搜索算法中的应用。
  • 基于局部搜索的反向学习竞争粒子群优化算法,钱晓宇,方伟,为了提升粒子群优化算法在复杂优化问题, 特别是高维优化问题上的优化性能, 提出了一种基于Solis\&Wets 局部搜索的反向学习竞争粒子群�
  • 反向学习,相对基学习opposition-based learning简介 觉得有用的话,欢迎一起讨论相互学习~ Opposition-based learning OBL 在Tizhoosh(2005)[1]中首次引入了OBL作为一种新的计算智能方案。在过去的几年里,OBL已经...

    反向学习,相对基学习opposition-based learning简介

    觉得有用的话,欢迎一起讨论相互学习~

    我的微博我的github我的B站

    Opposition-based learning OBL

    • 在Tizhoosh(2005)[1]中首次引入了OBL作为一种新的计算智能方案。在过去的几年里,OBL已经成功地应用于各种基于种群的进化算法中 [2]-[10]。众所周知,从当前种群中随机生成一个解决方案,往往会导致重新访问搜索空间中没有希望的区域[11]-[12],这是一种低效的探索模式。OBL的主要想法同时考虑候选的解决方案及其相反的解决方案。实验表明,如果没有先验知识优化问题,相反的候选解决方案比随机解能够到达全局最优的概率更高[8]。因此,引入一个随机解及其对应的反解比引入两个独立的随机生成解更有希望。
    • 在本文中,我们推广了OBL的概念来解决MFO问题,并利用多任务环境中的多组上界和下界来产生相反的解决方案。
    • 反解的数学定义如下:
      在这里插入图片描述

    参考资料
    Liang, Z., Zhang, J., Feng, L. & Zhu, Z. A hybrid of genetic transform and hyper-rectangle search strategies for evolutionary multi-tasking. Expert Systems with Applications 138, 112798 (2019).

    [1]Tizhoosh, H. R. (2005). Opposition-based learning: A new scheme for machine in- telligence. In International conference on computational intelligence for modelling, control and automation and international conference on intelligent agents, web technologies and internet commerce: 1 (pp. 695–701). doi: 10.1109/CIMCA.2005. 1631345 .
    [2]El-Abd, M. (2011). Opposition-based artificial bee colony algorithm. In Proceedings of the 13th annual conference on genetic and evolutionary computation (pp. 109–116). New York, NY, USA: ACM. doi: 10.1145/2001576.2001592 .
    [3] Rahnamayan, S., Tizhoosh, H. R., & Salama, M. M. A. (2006). Opposition-based dif- ferential evolution for optimization of noisy problems. In 2006 IEEE international conference on evolutionary computation (pp. 1865–1872). doi: 10.1109/CEC.2006. 1688534 .
    [4] Rahnamayan, S., Tizhoosh, H. R., & Salama, M. M. A. (2008a). Opposition-based dif- ferential evolution. IEEE Transactions on Evolutionary Computation, 12 (1), 64–79. doi: 10.1109/TEVC.20 07.89420 0 .
    [5] Rahnamayan, S., Tizhoosh, H. R., & Salama, M. M. A. (2008b). Opposition versus ran- domness in soft computing techniques. Applied Soft Computing, 8 (2), 906–918. doi: 10.1016/j.asoc.2007.07.010 .
    [6] Rahnamayan, S., Wang, G. G., & Ventresca, M. (2012). An intuitive distance-based explanation of opposition-based sampling. Applied Soft Computing, 12 (9), 2828–2839. doi: 10.1016/j.asoc.2012.03.034 .
    [7] Wang, H., Li, H., Liu, Y., Li, C., & Zeng, S. (2007). Opposition-based particle swarm algorithm with cauchy mutation. In 2007 IEEE congress on evolutionary compu- tation (pp. 4750–4756). doi: 10.1109/CEC.2007.4425095 .
    [8] Wang, H., Wu, Z., Rahnamayan, S., Liu, Y., & Ventresca, M. (2011). Enhancing par- ticle swarm optimization using generalized opposition-based learning. Informa- tion Sciences, 181 (20), 4699–4714. doi: 10.1016/j.ins.2011.03.016 .
    [9] Wang, W., Wang, H., Sun, H., & Rahnamayan, S. (2016). Using opposition-based learning to enhance differential evolution: A comparative study. In 2016 IEEE congress on evolutionary computation (pp. 71–77). doi: 10.1109/CEC.2016.7743780 .
    [10] Zhou, Y., Hao, J., & Duval, B. (2017). Opposition-based memetic search for the max- imum diversity problem. IEEE Transactions on Evolutionary Computation, 21 (5), 731–745. doi: 10.1109/TEVC.2017.2674800
    [11] Ma, X., Liu, F., Qi, Y., Gong, M., Yin, M., Li, L., . . . Wu, J. (2014). MOEA/D with opposition-based learning for multiobjective optimization problem. Neurocom- puting, 146 ©, 48–64. doi: 10.1016/j.neucom.2014.04.068 .
    [12] Ma, X., Zhang, Q., Tian, G., Yang, J., & Zhu, Z. (2018). On Tchebycheffdecomposi- tion approaches for multiobjective evolutionary optimization. IEEE Transactions on Evolutionary Computation, 22 (2), 226–244. doi: 10.1109/TEVC.2017.2704118 .

    展开全文
  • 为了在一定程度上避免早熟收敛现象,提出一种应用精英反向学习策略的引力搜索算法(EOGSA)。在演化进程中,对当前种群中的每个个体分别执行精英反向学习策略,生成一个精英反向种群,并将生成的精英反向种群与当前...
  • 为了改善人工鱼群算法求解精度较低、容易过早收敛的弱点,提出了一种应用佳点集和反向学习的人工鱼群算法。改进算法在迭代中对当前种群中部分优质个体执行一般动态反向学习,生成它们的反向种群,引导种群向包含全局...
  • 针对粒子群算法容易陷入局部极值、进化后期收敛精度低的缺点,提出了一种基于扰动的精英反向学习粒子群算法。算法采用在粒子迭代的过程中,以一定的概率对当前的最优个体进行动态一般反向学习生成其反向解,引导粒子...
  • 为克服基本樽海鞘群算法(SSA)存在的收敛速度慢、易陷入局部最优等不足,提出一种基于折射反向学习和自适应控制因子的新型改进樽海鞘群算法(RCSSA)。仿真结果表明:无论对于低维度还是高维度基准优化问题,所提算法都...
  • 一种混合均值中心反向学习粒子群优化算法的python程序实现 最优控制作业,看了一篇优化粒子群优化算法的论文,用python跑了一下效果还可以。 主体程序程序 import numpy as np import math import random import ...

    一种混合均值中心反向学习粒子群优化算法的python程序实现

    最优控制作业,看了一篇优化粒子群优化算法的论文,用python跑了一下效果还可以。

    主体程序程序

    import numpy as np
    import math
    import random
    import matplotlib.pyplot as plt
    import function
    
    
    class Particles:
        def __init__(self, num, d, iterMax, c1, c2, wMax, wMin, xMax, xMin, vMax, vMin, x=0, v=0):
            self.num = num  # 粒子个数
            self.d = d  # 粒子维数
            self.iterMax = iterMax  # 最大迭代次数
            self.c1 = c1  # 学习因子
            self.c2 = c2  # 学习因子
            self.wMax = wMax  # 惯性权重最大值
            self.wMin = wMin  # 惯性权重最小值
            self.xMax = xMax  # 位置最大值
            self.xMin = xMin  # 位置最小值
            self.vMax = vMax  # 速度最大值
            self.vMin = vMin  # 速度最小值
            self.x = x  # 位置
            self.v = v  # 速度
            self.init()
    
        def init(self):
            self.x = np.random.rand(self.num, self.d) * (self.xMax - self.xMin) + self.xMin  # 初始化位置
            print(type(self.x))
            self.v = np.random.rand(self.num, self.d) * (self.vMax - self.vMin) + self.vMin  # 初始化速度
    
    
    particles = Particles(20, 2, 200, 2, 2, 1, 0.4, 20, -20, 1, -1)
    p_best = np.ones((particles.num, 1))  # 定义历史最优值
    p_Position = np.ones((particles.num, particles.d))  # 定义历史最优位置
    g_best = float('inf')  # 定义整个族群的历史最优值
    g_Position = np.ones((1, particles.d))  # 定义整个族群的历史最优位置
    g_best_curve = np.ones((1, particles.iterMax))  # 定义“Fitness evolution curve”点
    max_HMC = np.zeros((1, particles.d))  # 混合均值中心最大范围
    min_HMC = np.zeros((1, particles.d))  # 混合均值中心最小范围
    
    
    def g_best_find():
        """
        族群最优获取
        """
        global g_best
        global g_Position
        for i in range(particles.num):
            if p_best[i] < g_best:
                g_best = p_best[i]
                g_Position = p_Position[i]
    
    
    def p_best_find():
        """
        最优获取
        """
        global p_best
        global p_Position
        for i in range(particles.num):
            p = function.function0(particles.x[i][0], particles.x[i][1])
            if p < p_best[i]:
                p_best[i] = p
                p_Position[i] = particles.x[i]
    
    
    def MC():
        """
        均值计算
        @return: 均值
        """
        x_average = np.zeros((1, particles.d))
        for i in range(particles.num):
            x_average = x_average + particles.x[i]
        x_average = x_average / particles.num
        return x_average
    
    
    def MVF():
        """
        适应值均值计算
        @return: 适应值均值
        """
        fitness_average = 0
        for i in range(particles.num):
            fitness_average = fitness_average + function.function0(particles.x[i][0], particles.x[i][1])
        fitness_average = fitness_average / particles.num
        return fitness_average
    
    
    def PMC(fitness_average):
        """
        偏均值中心计算
        @param fitness_average: 适应值均值
        @return: 偏均值中心
        """
        x_P_average = np.zeros((1, particles.d))
        n = 0
        for i in range(particles.num):
            if function.function0(particles.x[i][0], particles.x[i][1]) < fitness_average:
                x_P_average = x_P_average + particles.x[i]
                n += 1
        x_P_average = x_P_average / n
        return x_P_average
    
    
    def HMC(x_average, x_P_average):
        """
        混合均值中心计算
        @param x_average: 均值中心
        @param x_P_average: 偏均值中心
        @return: 混合均值中心
        """
        if function.function0(x_average[0][0], x_average[0][1]) \
                < function.function0(x_P_average[0][0], x_P_average[0][1]):
            return x_P_average
        else:
            return x_average
    
    
    def OBL_HMC(a, b, HMC):
        """
        反向混合均值中心计算
        @param a: 历史最小混合均值中心
        @param b: 历史最大混合均值中心
        @param HMC: 混合均值中心
        @return: 反向混合均值中心
        """
        return random.random() * (a + b) - HMC
    
    
    def mutation():
        """
        混合均值中心进化&反向混合均值中心进化
        """
        global g_best
        global g_Position
        global max_HMC
        global min_HMC
        mc = MC()
        mvf = MVF()
        pmc = PMC(mvf)
        hmc = HMC(mc, pmc)
        for i in range(particles.d):
            if max_HMC[0][i] < hmc[0][i]:
                max_HMC[0][i] = hmc[0][i]
            if min_HMC[0][i] > hmc[0][i]:
                min_HMC[0][i] = hmc[0][i]
        g = function.function0(hmc[0][0], hmc[0][1])
        if g < g_best:
            g_best = g
            g_Position = hmc
        obl_hmc = OBL_HMC(min_HMC, max_HMC, hmc)
        g = function.function0(obl_hmc[0][0], obl_hmc[0][1])
        if g < g_best:
            g_best = g
            g_Position = hmc
    
    
    def main():
        """
        主函数
        @return: None
        """
        global g_best
        global max_HMC
        global min_HMC
        """ 最优初始化"""
        for i in range(particles.num):
            p_best[i] = function.function0(particles.x[i][0], particles.x[i][1])
            p_Position[i] = particles.x[i]
        """  迭代开始  """
        """  迭代初始化  """
        p_best_find()
        g_best_find()
        """ HMC范围初始化 """
        mc = MC()
        mvf = MVF()
        pmc = PMC(mvf)
        hmc = HMC(mc, pmc)
        max_HMC = min_HMC = hmc
        """
        """
        w = 1
        for i in range(particles.iterMax):
            """
            """
            w = 0.25 * math.exp(-0.5 * i / particles.iterMax)
            for j in range(particles.num):
                particles.v[j] = w * particles.v[j] + particles.c1 * random.random() \
                                 * (p_Position[j] - particles.x[j]) + particles.c2 \
                                 * random.random() * (g_Position - particles.x[j])
                for n in range(particles.d):  # 速度界限判断
                    if particles.v[j][n] > particles.vMax:
                        particles.v[j][n] = particles.vMax
                    if particles.v[j][n] < particles.vMin:
                        particles.v[j][n] = particles.vMin
                particles.x[j] = particles.x[j] + particles.v[j]  # 粒子位置更新
                """
                """
                for n in range(particles.d):  # 位置界限判断
                    if particles.x[j][n] > particles.xMax:
                        particles.x[j][n] = particles.xMax
                    if particles.x[j][n] < particles.xMin:
                        particles.x[j][n] = particles.xMin
            p_best_find()
            g_best_find()
            mutation()  # 混合均值中心进化&反向混合均值中心进化
            g_best_curve[0][i] = g_best
        """                                           
        """
        print("函数最优值:" + str(g_best))
        print(g_Position)
        c = np.arange(0, particles.iterMax, 1).tolist()
        gb_curve_list = g_best_curve.tolist()
        plt.plot(c, gb_curve_list[0], "r")
        plt.title("Fitness evolution curve")
        #plt.savefig('./H图/HCOPSO_Himm10.jpg')
        plt.show()
    
    
    if __name__ == "__main__":
        main()
        # print("hello")
    

    测试函数(以下程序文件取名function.py,把要测试的函数改名为function0())

    import math
    
    
    def function1(x1, x2):
        """
        Ackley function
        @param x1:
        @param x2:
        @return: y值
        """
        y = (-20 * math.exp(-0.2 * math.sqrt((x1 ** 2 + x2 ** 2) / 2)) -
             math.exp((math.cos(2 * math.pi * x1) + math.cos(2 * math.pi * x2)) / 2)
             + 20 + math.e)
        return y
    
    
    def function2(x1, x2):
        """
        Himmelblau function
        @param x1:
        @param x2:
        @return: y值
        """
        y = (x1 ** 2 + x2 - 11) ** 2 + (x1 + x2 ** 2 - 7) ** 2
        return y
    
    
    def function0(x1, x2):
        """
        Rastrigin function
        @param x1:
        @param x2:
        @return: y值
        """
        y = 2 * 10 + x1 ** 2 - 10 * math.cos(2 * math.pi * x1) + x2 ** 2 - 10 * math.cos(2 * math.pi * x2)
        return y
    
    展开全文
  • 多目标问题的进化算法, 论文深入浅出, 写的很不错, 是一篇不错的好文章, 需要学习进化算法与多目标优化问题的同学可以参考
  • 1.基于反向学习的种群初始化策略

    千次阅读 热门讨论 2018-09-08 22:26:54
    本人是刚开始学习进化算法的小白,仅仅完成过某项改进CCIDE(这个不必懂)的实验重现而已。我的博文都是通过阅读外文资料,然后整理知识点。博文中可能出现其他文献的阅读和还没懂的证明部分,可能在以后以番外的...

    零、前言的前言
    本人是刚开始学习进化算法的小白,仅仅完成过某项改进CCIDE(这个不必懂)的实验重现而已。我的博文都是通过阅读外文资料,然后整理知识点。博文中可能出现其他文献的阅读和还没懂的证明部分,可能在以后以番外的形式更新。最后,如果出现一些字母简称您不懂的话,如果没有特别标识,如上面的CCIDE,说明你还不适合看这篇文章,可以先查阅一下其他资料,或者私信我,可能会有解决方案。这个策略将一直沿用。

    一、介绍
    目前成熟和常用的进化算法有:DE和GA,都有自己独特的缺点和优点,但是都有一个共同的短处,计算时间的消耗。一直以来,计算机科学家们都在改良这俩算法中的每一个步骤:交叉和变异策略,选择策略(贪婪或平均等)或者参数的设置策略(固定值或自适应等)。关于种群初始化策略的改良少之又少。在常见的进化算法中,种群的初始化都会采用纯随机策略,就是已知某一项基因的上下限,在初始化的时候在上下限之间进行随机取值。但是根据某个计算机科学家发现,纯随机策略生成的种群,在最终结果的质量和种群的收敛速度上都可以说很差,然后他提出了准随机-种群初始化策略。这里就不提了,因为该算法仅仅能改良最终结果的质量,收敛速度几乎没有加快,毕竟该策略在12维变量的算法进行中,那一点优势也会消失殆尽。所以,来自滑铁卢大学的三位计算机科学家提出了基于反向学习的种群初始化策略,在收敛速度方面宣判传统的纯随机策略死刑。

    二、反向数字(opposite number)
    在介绍这个改良策略之前,首先得介绍反向数字这个概念。
    定义:P = a + b - p
    a,b分别是(a,b)区间中的上下限,p是源数,P就是是源数的反向数字。这里修改一下定义就很好懂。
    修改:P + p = a + b
    代入一些常见的数字,你就懂了。
    在文献中,这个反向数字在二维,三维甚至高维中也可以使用。
    定义:Pi = ai + bi - pi
    i代表所在维数。每一维单独计算即可。
    证明太难了,涉及其他数学知识,可能在以后用番外来解释。

    三、基于反向学习的种群初始化策略
    进化算法的计算时间其实和初始种群中个体与最优个体的距离有关,如果个体在最优值附近出生,那么这次计算中,种群的所有个体都会进行快速的收敛。纯随机生成的个体由于没有进行过估计,收敛速度是无法预知的。不过,如果同时考虑每一个个体的反向个体,那么,个体和反向个体俩更靠近最优个体的几率是50%,选中更靠近的个体作为种群的最初个体,那就是每个个体都离最优解更近了一步,美滋滋。反向个体是什么?是一个基于个体的新个体,新个体中每一个基因都是由个体基因的反向数字。好了,现在来归纳一下步骤。
    1.均匀随机地生成一个最初种群。
    2.根据最初种群生成一个反向种群。(反向种群都不知道是什么那就再见吧)
    3.依照次序,从最初种群中和反向种群取出个体,使用适应度函数计算其适应度。选择适应度更高的个体,放进最终的初始种群(只能这么说了)的对应位置中。
    4.将最终的初始种群用于进化算法中。

    四、总结
    基本上,就是在初始种群中在生成一个反向种群,挑好的组成最后的总群,在进行进化算法。

    五、番外计划
    1.1 反向数字在高维的证明
    1.2 反向学习概念阐明的三篇论文解读
    Opposition-based learining:A new scheme for machine intelliengence 备注:这里介绍了反向数字在高维的实现
    Reinforcement learning based on actions and oppsite actions
    Opposition-based reinforcement learning

    展开全文
  • 深度学习反向学习方法可以说是神经网络中比较难懂的一块了,主要是公式的推导和计算要有一些数学知识 可以说这个思想的精髓是数学也不为过 因为都是数学公式表达式,不知道怎么发,直接转成了图片,可以放大查 ...

    深度学习反向学习方法可以说是神经网络中比较难懂的一块了,主要是公式的推导和计算要有一些数学知识

    可以说这个思想的精髓是数学也不为过

    因为都是数学公式表达式,不知道怎么发,直接转成了图片,可以放大查

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    每次学习神经网络,看到反向传播都有点蒙,做个标件,以后如果还有什么再补充~~~

    2019年9月24号修正

    转载于:https://www.cnblogs.com/tudou008/p/11542829.html

    展开全文
  • 反向增强学习基础

    2018-05-10 17:10:59
    增强学习已经成为人工智能发展的一个重要方向,Alpha Zero的算法也再一次向世人展示了增强学习的强大之处。...本讲座主要介绍增强学习反向增强学习的共同框架与反向增强学习的基本解法。点击打开链接...
  • 反向增强学习入门1——基本概念

    千次阅读 2018-06-21 12:35:28
    本文收录在无痛的机器学习第二季目录。...增强学习的问题反向增强学习也被称为模仿学习(Imitation Learning),学徒学习(Apprentice Learning),可以说它是来解决另一类增强学习问题的方法。...
  • Tensorflow机器学习学习反向传播过程 简介 ——搭建一个简单的神经网络 ——前向传播 1,反向传播的定义 BP算法(即误差反向传播算法)适合于多层神经元网络的一种学习算法,它建立在梯度下降法的基础上。BP网络的...
  • 反向ajax学习

    2011-04-17 19:10:00
    留地
  • 深度学习反向求导

    2018-04-16 20:34:00
    详解反向传播算法(上) https://zhuanlan.zhihu.com/p/25081671 (Caffe,LeNet)反向传播(六) https://blog.csdn.net/mounty_fsc/article/details/51379395 主要根据代码和公式做反向传播的介绍,值得参考 ...
  • 反向传播算法学习

    2018-03-28 20:04:47
    反向传播算法是神经网络中一个重要的过程。 了解反向传播算法之前先来理解几个概念: 1.全导 和偏导 求导是数学计算中的一个计算方法,它的定义就是,当自变量的增量趋于零时,因变量的增量与自变量的增量之商的...
  • 基于反向机器学习的调香设计方法
  • 背景 前几天在学习负载均衡的知识,遇到了 Nginx 反向代理 的概念,其实在年初就写过一次 Nginx 反向实例的笔记,今天翻看发现很是潦草,而且当时的编辑器也不满足Markdown,作为尴尬症晚期的我,索性删掉重新整理...
  • http-反向代理学习

    2017-03-22 17:41:00
    主要是学习反向代理。 结合公司的方向代理使用,然后与同事进行交流,知识还是需要通过交流才能印象深刻,以后多多交流。 转载于:https://www.cnblogs.com/jiangjing/p/6601126.html...
  • 反向传播算法简介:考虑一个以Sigmoid函数为激活函数的深度学习神经网络,从输入数据开始,经过第一个隐藏层,第二个隐藏层,...,直到输出层,得到预测值,这一过程是正向传播,容易理解。根据得到的输出,我们可以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,419
精华内容 5,367
关键字:

反向学习