geatpy脚本编程

本文通过geatpy脚本编程,演示了解决最大值问题的过程。问题定义为:max = x + 10sin(5x) + 7cos(4x),其中0<=x<=10。通过运行代码,得到了相应的优化结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码

求解问题:
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) #区域描述器,第一行是各变量的编码长
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值