代码
求解问题:
max = x+10sin(5x)+7cos(4x)
0<=x<=10
import numpy as np
import geatpy as ga
import time
def aimfunc(Phen, LegV):
x = np.array([Phen[:,0]]).T #取解码后第一列的值,即变量1的解码值
f = x + 10*np.sin(5*x) + 7*np.cos(4*x)
return [f,LegV]
x=[0,10]
b=[1,1]
ranges=np.vstack([x]).T #变量范围,两行,第一行下界,第二行上界
border=np.vstack([b]).T #变量是否包含边界,两行,第一行下界,第二行上界
precesion=[4] #精度,小数点后6位
codes=[0] #编码方式,标准二进制编码
scales=[0] #刻度,算数刻度
NIND=50 # 种群规模
MAXGEN=100 # 最大遗传代数
GGAP=0.5 # 代沟,子代与父代个体不相同的概率为0.5
selectStyle='rws' # 轮盘赌选
recombinStyle='xovsp' # 单点杂交
recopt=0.65 # 交叉概率
pm=0.05 # 变异概率
SUBPOP=1 # 设置种群数为1,即保持不变
maxormin=-1 # 设置最大最小化目标,1表示是最小化目标,-1则表示最大化目标
FieldD=ga.crtfld(ranges,border,precesion,codes,scales) #区域描述器,第一行是各变量的编码长