geatpy求解四维病态方程

geatpy求解四维病态方程

问题

min ⁡ f ( x ) = ∑ i = 1 3 [ 100 ( x i + 1 − x i 2 ) 2 + ( x i − 1 ) 2 ] x i ∈ [ − 30 , 30 ] ( i = 1 , 2 , 3 , 4 ) \begin{aligned} \min f(\boldsymbol{x}) &=\sum_{i=1}^{3}\left[100\left(x_{i+1}-x_{i}^{2}\right)^{2}+\left(x_{i}-1\right)^{2}\right] \\ x_{i} & \in[-30,30](i=1,2,3,4) \end{aligned} minf(x)xi=i=13[100(xi+1xi2)2+(xi1)2][30,30](i=1,2,3,4)

代码

import numpy as np
import geatpy as ea


class MyProblem(ea.Problem):  # 继承Problem父类
    def __init__(self):
        name = 'MyProblem'  # 初始化name(函数名称,可以随意设置)
        M = 1  # 初始化M(目标维数)
        maxormins = [1]  # 初始化maxormins(目标最小最大化标记列表,1:最小化该目标;-1:最大化该目标)
        Dim = 4  # 初始化Dim(决策变量维数)
        varTypes = [0] * Dim  # 初始化varTypes(决策变量的类型,元素为0表示对应的变量是连续的;1表示是离散的)
        lb = [-30,-30,-30,-30]  # 决策变量下界
        ub = [30,30,30,30]  # 决策变量上界
        lbin = [1, 1, 1,1]  # 决策变量下边界(0表示不包含该变量的下边界,1表示包含)
        ubin = [1, 1, 1,1]  # 决策变量上边界(0表示不包含该变量的上边界,1表示包含)
        # 调用父类构造方法完成实例化
        ea.Problem.__init__(self, name, M, maxormins, Dim, varTypes, lb, ub, lbin, ubin)

    def aimFunc(self, pop):  # 目标函数
        Vars = pop.Phen  # 得到决策变量矩阵
        x1 = Vars[:, [0]]
        x2 = Vars[:, [1]]
        x3 = Vars[:, [2]]
        x4 = Vars[:, [3]]
        pop.ObjV = 100*(x2 - x1**2)**2 + (x1-1)**2 + 100*(x3 - x2**2)**2 + (x2-1)**2 +100*(x4 - x3**2)**2 + (x3-1)**2  # 计算目标函数值,赋值给pop种群对象的ObjV属性
        # 采用可行性法则处理约束
        pop.CV = np.hstack([x1+x2-60])

    def calReferObjV(self):  # 设定目标数参考值(本问题目标函数参考值设定为理论最优值)
        referenceObjV = np.array([[1.0]])
        return referenceObjV
# -*- coding: utf-8 -*-
import geatpy as ea  # import geatpy

if __name__ == '__main__':
    """================================实例化问题对象==========================="""
    problem = MyProblem()  # 生成问题对象
    """==================================种群设置=============================="""
    Encoding = 'RI'  # 编码方式
    NIND = 500  # 种群规模
    Field = ea.crtfld(Encoding, problem.varTypes, problem.ranges, problem.borders)  # 创建区域描述器
    population = ea.Population(Encoding, Field, NIND)  # 实例化种群对象(此时种群还没被初始化,仅仅是完成种群对象的实例化)
    """================================算法参数设置============================="""
    myAlgorithm = ea.soea_DE_rand_1_bin_templet(problem, population)  # 实例化一个算法模板对象
    myAlgorithm.MAXGEN = 100  # 最大进化代数
    myAlgorithm.mutOper.F = 0.5  # 差分进化中的参数F
    myAlgorithm.recOper.XOVR = 0.7  # 重组概率
    myAlgorithm.logTras = 1  # 设置每隔多少代记录日志,若设置成0则表示不记录日志
    myAlgorithm.verbose = True  # 设置是否打印输出日志信息
    myAlgorithm.drawing = 1  # 设置绘图方式(0:不绘图;1:绘制结果图;2:绘制目标空间过程动画;3:绘制决策空间过程动画)
    """===========================调用算法模板进行种群进化========================"""
    [BestIndi, population] = myAlgorithm.run()  # 执行算法模板,得到最优个体以及最后一代种群
    BestIndi.save()  # 把最优个体的信息保存到文件中
    """==================================输出结果=============================="""
    print('评价次数:%s' % myAlgorithm.evalsNum)
    print('时间已过 %s 秒' % myAlgorithm.passTime)
    if BestIndi.sizes != 0:
        print('最优的目标函数值为:%s' % BestIndi.ObjV[0][0])
        print('最优的控制变量值为:')
        for i in range(BestIndi.Phen.shape[1]):
            print(BestIndi.Phen[0, i])
    else:
        print('没找到可行解。')

结果:

==================================================================================
gen|  eval  |    f_opt    |    f_max    |    f_avg    |    f_min    |    f_std    
----------------------------------------------------------------------------------
 0 |  500   | 7.60983E+04 | 2.08416E+08 | 5.02434E+07 | 7.60983E+04 | 3.78372E+07 
 1 |  1000  | 6.27585E+04 | 1.46151E+08 | 3.55378E+07 | 6.27585E+04 | 3.11596E+07 
 2 |  1500  | 5.98217E+04 | 1.34662E+08 | 2.35780E+07 | 5.98217E+04 | 2.45688E+07 
 3 |  2000  | 1.72877E+04 | 1.34662E+08 | 1.60471E+07 | 1.72877E+04 | 2.08877E+07 
 4 |  2500  | 1.72360E+04 | 8.39297E+07 | 9.52609E+06 | 1.72360E+04 | 1.41160E+07 
 5 |  3000  | 1.37218E+03 | 8.16378E+07 | 5.73651E+06 | 1.37218E+03 | 1.00634E+07 
 6 |  3500  | 1.37218E+03 | 6.37475E+07 | 3.35658E+06 | 1.37218E+03 | 6.54894E+06 
 7 |  4000  | 1.23750E+03 | 5.53160E+07 | 1.93253E+06 | 1.23750E+03 | 3.96266E+06 
 8 |  4500  | 8.48969E+02 | 5.53160E+07 | 1.16972E+06 | 8.48969E+02 | 3.05484E+06 
 9 |  5000  | 5.49628E+02 | 1.62358E+07 | 5.86786E+05 | 5.49628E+02 | 1.23222E+06 
 10|  5500  | 5.49628E+02 | 5.79990E+06 | 3.19483E+05 | 5.49628E+02 | 6.03276E+05 
 11|  6000  | 5.49628E+02 | 5.69605E+06 | 1.93987E+05 | 5.49628E+02 | 4.57425E+05 
 12|  6500  | 1.05012E+02 | 5.69605E+06 | 1.17599E+05 | 1.05012E+02 | 3.08614E+05 
 13|  7000  | 1.05012E+02 | 5.69605E+06 | 7.30044E+04 | 1.05012E+02 | 2.64903E+05 
 14|  7500  | 1.05012E+02 | 4.70616E+05 | 4.06282E+04 | 1.05012E+02 | 5.46444E+04 
 15|  8000  | 1.05012E+02 | 1.91127E+05 | 2.60289E+04 | 1.05012E+02 | 3.12832E+04 
 16|  8500  | 1.05012E+02 | 1.74716E+05 | 1.78489E+04 | 1.05012E+02 | 2.04907E+04 
 17|  9000  | 1.05012E+02 | 1.41691E+05 | 1.29377E+04 | 1.05012E+02 | 1.53149E+04 
 18|  9500  | 1.05012E+02 | 7.25123E+04 | 9.51107E+03 | 1.05012E+02 | 9.98046E+03 
 19| 10000  | 8.44174E+01 | 4.85415E+04 | 7.54226E+03 | 8.44174E+01 | 8.04770E+03 
 20| 10500  | 3.14184E+01 | 4.49668E+04 | 5.72935E+03 | 3.14184E+01 | 6.47332E+03 
 21| 11000  | 3.14184E+01 | 4.36543E+04 | 4.55764E+03 | 3.14184E+01 | 5.02132E+03 
 22| 11500  | 3.14184E+01 | 4.36543E+04 | 3.63509E+03 | 3.14184E+01 | 4.11956E+03 
 23| 12000  | 3.14184E+01 | 2.92787E+04 | 2.91668E+03 | 3.14184E+01 | 3.20225E+03 
 24| 12500  | 3.14184E+01 | 2.92787E+04 | 2.42141E+03 | 3.14184E+01 | 2.90043E+03 
 25| 13000  | 3.14184E+01 | 2.45657E+04 | 2.00749E+03 | 3.14184E+01 | 2.37037E+03 
 26| 13500  | 3.14184E+01 | 1.67634E+04 | 1.63125E+03 | 3.14184E+01 | 1.80963E+03 
 27| 14000  | 3.14184E+01 | 1.52624E+04 | 1.40593E+03 | 3.14184E+01 | 1.50561E+03 
 28| 14500  | 3.02390E+01 | 1.52624E+04 | 1.18083E+03 | 3.02390E+01 | 1.34648E+03 
 29| 15000  | 3.02390E+01 | 6.93621E+03 | 9.64611E+02 | 3.02390E+01 | 9.86935E+02 
 30| 15500  | 3.02390E+01 | 4.85608E+03 | 7.83321E+02 | 3.02390E+01 | 7.83494E+02 
 31| 16000  | 3.02390E+01 | 3.95100E+03 | 6.40152E+02 | 3.02390E+01 | 6.09335E+02 
 32| 16500  | 1.26855E+01 | 3.68549E+03 | 5.39326E+02 | 1.26855E+01 | 5.25656E+02 
 33| 17000  | 1.26855E+01 | 2.78984E+03 | 4.64218E+02 | 1.26855E+01 | 4.28700E+02 
 34| 17500  | 1.25932E+01 | 2.50061E+03 | 3.92770E+02 | 1.25932E+01 | 3.49477E+02 
 35| 18000  | 8.65665E+00 | 2.04772E+03 | 3.31523E+02 | 8.65665E+00 | 2.87763E+02 
 36| 18500  | 8.65665E+00 | 2.04772E+03 | 2.97427E+02 | 8.65665E+00 | 2.62901E+02 
 37| 19000  | 8.65665E+00 | 2.04772E+03 | 2.65190E+02 | 8.65665E+00 | 2.43049E+02 
 38| 19500  | 8.65665E+00 | 1.76104E+03 | 2.32062E+02 | 8.65665E+00 | 2.12161E+02 
 39| 20000  | 4.99260E+00 | 1.55288E+03 | 2.02189E+02 | 4.99260E+00 | 1.84736E+02 
 40| 20500  | 4.99260E+00 | 1.55288E+03 | 1.77218E+02 | 4.99260E+00 | 1.66677E+02 
 41| 21000  | 4.99260E+00 | 1.02974E+03 | 1.50476E+02 | 4.99260E+00 | 1.34059E+02 
 42| 21500  | 4.99260E+00 | 1.02974E+03 | 1.30628E+02 | 4.99260E+00 | 1.15423E+02 
 43| 22000  | 4.99260E+00 | 6.43255E+02 | 1.11699E+02 | 4.99260E+00 | 9.68409E+01 
 44| 22500  | 4.99260E+00 | 5.67770E+02 | 9.85329E+01 | 4.99260E+00 | 8.01510E+01 
 45| 23000  | 4.99260E+00 | 4.46046E+02 | 8.82093E+01 | 4.99260E+00 | 7.07120E+01 
 46| 23500  | 1.96780E+00 | 4.46046E+02 | 7.64022E+01 | 1.96780E+00 | 6.34643E+01 
 47| 24000  | 1.96780E+00 | 4.46046E+02 | 6.75885E+01 | 1.96780E+00 | 5.59470E+01 
 48| 24500  | 1.96780E+00 | 3.25028E+02 | 6.02226E+01 | 1.96780E+00 | 4.79094E+01 
 49| 25000  | 1.96780E+00 | 3.25028E+02 | 5.36401E+01 | 1.96780E+00 | 4.44684E+01 
 50| 25500  | 1.96780E+00 | 3.25028E+02 | 4.78151E+01 | 1.96780E+00 | 4.17770E+01 
 51| 26000  | 1.96780E+00 | 3.15157E+02 | 4.28019E+01 | 1.96780E+00 | 3.65768E+01 
 52| 26500  | 1.96780E+00 | 3.15157E+02 | 3.78421E+01 | 1.96780E+00 | 3.31344E+01 
 53| 27000  | 1.96780E+00 | 2.47163E+02 | 3.28382E+01 | 1.96780E+00 | 2.77352E+01 
 54| 27500  | 1.96780E+00 | 2.47163E+02 | 2.96719E+01 | 1.96780E+00 | 2.64174E+01 
 55| 28000  | 1.96780E+00 | 2.47163E+02 | 2.65647E+01 | 1.96780E+00 | 2.50419E+01 
 56| 28500  | 1.00427E+00 | 2.14538E+02 | 2.27778E+01 | 1.00427E+00 | 2.09411E+01 
 57| 29000  | 1.00427E+00 | 1.84221E+02 | 2.03459E+01 | 1.00427E+00 | 1.77457E+01 
 58| 29500  | 7.89741E-01 | 1.84221E+02 | 1.83466E+01 | 7.89741E-01 | 1.67299E+01 
 59| 30000  | 7.89741E-01 | 1.84221E+02 | 1.63341E+01 | 7.89741E-01 | 1.48790E+01 
 60| 30500  | 7.89741E-01 | 1.33748E+02 | 1.46536E+01 | 7.89741E-01 | 1.27775E+01 
 61| 31000  | 7.89741E-01 | 1.33748E+02 | 1.31775E+01 | 7.89741E-01 | 1.06334E+01 
 62| 31500  | 7.89741E-01 | 9.72052E+01 | 1.19852E+01 | 7.89741E-01 | 8.63751E+00 
 63| 32000  | 7.89741E-01 | 9.72052E+01 | 1.09596E+01 | 7.89741E-01 | 8.09922E+00 
 64| 32500  | 7.89741E-01 | 5.07552E+01 | 9.93764E+00 | 7.89741E-01 | 6.49043E+00 
 65| 33000  | 7.89741E-01 | 3.51229E+01 | 9.05732E+00 | 7.89741E-01 | 5.55562E+00 
 66| 33500  | 7.89741E-01 | 3.51229E+01 | 8.37495E+00 | 7.89741E-01 | 4.99149E+00 
 67| 34000  | 7.89741E-01 | 2.61061E+01 | 7.56733E+00 | 7.89741E-01 | 4.20502E+00 
 68| 34500  | 7.89741E-01 | 2.61061E+01 | 7.06807E+00 | 7.89741E-01 | 4.02866E+00 
 69| 35000  | 7.89741E-01 | 2.61061E+01 | 6.58770E+00 | 7.89741E-01 | 3.69884E+00 
 70| 35500  | 7.89741E-01 | 2.10137E+01 | 6.12165E+00 | 7.89741E-01 | 3.33301E+00 
 71| 36000  | 6.21380E-01 | 1.98683E+01 | 5.66375E+00 | 6.21380E-01 | 3.08554E+00 
 72| 36500  | 6.21380E-01 | 1.98683E+01 | 5.29578E+00 | 6.21380E-01 | 2.88378E+00 
 73| 37000  | 6.21380E-01 | 1.98683E+01 | 4.94767E+00 | 6.21380E-01 | 2.67886E+00 
 74| 37500  | 6.21380E-01 | 1.98683E+01 | 4.61613E+00 | 6.21380E-01 | 2.42734E+00 
 75| 38000  | 6.21380E-01 | 1.51306E+01 | 4.25841E+00 | 6.21380E-01 | 2.00879E+00 
 76| 38500  | 6.21380E-01 | 1.25633E+01 | 3.98533E+00 | 6.21380E-01 | 1.84966E+00 
 77| 39000  | 6.21380E-01 | 1.25633E+01 | 3.74634E+00 | 6.21380E-01 | 1.74127E+00 
 78| 39500  | 5.34417E-01 | 1.13342E+01 | 3.53048E+00 | 5.34417E-01 | 1.63506E+00 
 79| 40000  | 5.34417E-01 | 1.10031E+01 | 3.31230E+00 | 5.34417E-01 | 1.53144E+00 
 80| 40500  | 5.34417E-01 | 1.10031E+01 | 3.10111E+00 | 5.34417E-01 | 1.41653E+00 
 81| 41000  | 5.34417E-01 | 1.10031E+01 | 2.90415E+00 | 5.34417E-01 | 1.29561E+00 
 82| 41500  | 5.34417E-01 | 1.10031E+01 | 2.77470E+00 | 5.34417E-01 | 1.25308E+00 
 83| 42000  | 4.50972E-01 | 1.10031E+01 | 2.60398E+00 | 4.50972E-01 | 1.20297E+00 
 84| 42500  | 4.50972E-01 | 1.10031E+01 | 2.45032E+00 | 4.50972E-01 | 1.10553E+00 
 85| 43000  | 4.50972E-01 | 1.10031E+01 | 2.31973E+00 | 4.50972E-01 | 1.05727E+00 
 86| 43500  | 4.50972E-01 | 1.10031E+01 | 2.18454E+00 | 4.50972E-01 | 1.00713E+00 
 87| 44000  | 4.50972E-01 | 1.10031E+01 | 2.00888E+00 | 4.50972E-01 | 9.01053E-01 
 88| 44500  | 4.03216E-01 | 1.10031E+01 | 1.86914E+00 | 4.03216E-01 | 8.51836E-01 
 89| 45000  | 4.03216E-01 | 1.10031E+01 | 1.73095E+00 | 4.03216E-01 | 7.59496E-01 
 90| 45500  | 2.80379E-01 | 1.10031E+01 | 1.63270E+00 | 2.80379E-01 | 7.43019E-01 
 91| 46000  | 2.80379E-01 | 3.22712E+00 | 1.53271E+00 | 2.80379E-01 | 5.73684E-01 
 92| 46500  | 2.80379E-01 | 3.10927E+00 | 1.45584E+00 | 2.80379E-01 | 5.61403E-01 
 93| 47000  | 2.80379E-01 | 3.10927E+00 | 1.36116E+00 | 2.80379E-01 | 5.45008E-01 
 94| 47500  | 2.80379E-01 | 3.10927E+00 | 1.27128E+00 | 2.80379E-01 | 5.13092E-01 
 95| 48000  | 2.80379E-01 | 3.10927E+00 | 1.18005E+00 | 2.80379E-01 | 4.58437E-01 
 96| 48500  | 2.69168E-01 | 2.73774E+00 | 1.11752E+00 | 2.69168E-01 | 4.27553E-01 
 97| 49000  | 2.69168E-01 | 2.73774E+00 | 1.05116E+00 | 2.69168E-01 | 4.01551E-01 
 98| 49500  | 2.16281E-01 | 2.52055E+00 | 9.63042E-01 | 2.16281E-01 | 3.62918E-01 
 99| 50000  | 2.16281E-01 | 2.52055E+00 | 8.99793E-01 | 2.16281E-01 | 3.48604E-01 

种群信息导出完毕。
评价次数:50000
时间已过 0.1790473461151123 秒
最优的目标函数值为:0.21628085001204858
最优的控制变量值为:
0.9068665991676745
0.8254514881910531
0.683358839639309
0.439491878595913

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kilig*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值