人工智能“遗传算法求解f(x)=xcosx+2的最大值”用遗传算法求 f(x)=xcosx+2 的最大值

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/01 21:24:34

人工智能“遗传算法求解f(x)=xcosx+2的最大值”用遗传算法求 f(x)=xcosx+2 的最大值
人工智能“遗传算法求解f(x)=xcosx+2的最大值”
用遗传算法求 f(x)=xcosx+2 的最大值

人工智能“遗传算法求解f(x)=xcosx+2的最大值”用遗传算法求 f(x)=xcosx+2 的最大值
为了方便我只求了-3.14到3.14之间的最大值,你可以自己改一下,不过范围大了之后,种群也因该扩大,我的种群只有66个
结果:极值点(-3.141593,5.141593)
我又算了一下-100到100之间的极大值
结果:极值点(-97.399473,99.394504)
-1000到1000之间的极大值
结果:(999,1001)
-2000到2000之间的极大值
结果:(1998.053550,2000.053163)
以上结果我用matlab画图验证了,没问题.
//中国电子科技集团公司
//第一研究室
//呼文韬
//随机初始种群
//编码方式为格雷码
//选择方法为随机遍历
//采用了精英保存策略
//采用了自适应的交叉率和变异率
//采用了与模拟退火算法相结合的尺度变换
//采用了均匀交叉法
#include
#include
#include
#include
#include
#include
#include
#define IM1 2147483563
#define IM2 2147483399
#define AM (1.0/IM1)
#define IMM1 (IM1-1)
#define IA1 40014
#define IA2 40692
#define IQ1 53668
#define IQ2 52774
#define IR1 12211
#define IR2 3791
#define NTAB 32
#define NDIV (1+IMM1/NTAB)
#define EPS 1.2e-7
#define RNMX (1.0-EPS)
#define zhizhenjuli 0.005
#define PI 3.14159265358
#define T0 100000//温度要取得很高才行.
#define zhongqunshu1 200
#define zuobianjie -2000
#define youbianjie 2000
unsigned int seed=0; //seed 为种子,要设为全局变量
void mysrand(long int i) //初始化种子
{
seed = -i;
}
long a[1];
//double hundun;
//double c=4;
//设置全局变量
struct individual
{
unsigned *chrom; //染色体;
double geti;//变量值
double shiyingdu; //目标函数的值;
double fitness; //变换后的适应度值;
};
individual *zuiyougeti;//精英保存策略
int zhongqunshu; //种群大小
individual *nowpop;//当前代
individual *newpop;//新一代
double sumfitness;//当代的总适应度fitness
double sumshiyingdu;//当代的总适应度shiyingdu
double maxfitness;//最大适应度
double avefitness;//平均适应度
double maxshiyingdu;//最大适应度
double avgshiyingdu;//平均适应度
float pc;//交叉概率
float pm;//变异概率
int lchrom;//染色体长度
int maxgen;//最大遗传代数
int gen;//遗传代数
//函数
int flipc(double ,double );//判断是否交叉
int flipm(double );//判断是否变异
int rnd(int low,int high);//产生low与high之间的任意数
void initialize();//遗传算法初始化
void preselectfitness(); //计算sumfiness,avefitness,maxfitness
void generation();
double suijibianli();//产生随机遍历指针
int fuzhi(float );//选择要复制的个体
void crossover(individual ,individual ,individual &,individual &);//交叉
void bianyi(individual &);//变异
void mubiaohanshu(individual &);//计算适应度
void chidubianhuan(individual &);//对shiyingdu进行尺度变换赋给fitness
double ran1(long *);//随机数初始
void bianma(double bianliang,unsigned *p);//编码
double yima(unsigned *p);
void guanjiancanshujisuan();//计算shiyingdu,根据shiyingdu计算sumshiyingdu,对shiyingdu进行尺度变换变成fitness,根据fitness计算sumfitness,avefitness,maxfitness
void jingyingbaoliu();
void glp(int n,int s,int *,int (*)[1],float (*)[1]);//glp生成函数
BOOL Exist(int Val,int Num,int *Array);//判断一个数在前面是否出现过
int cmpfitness(const void *p1,const void *p2)
{
float i=((individual *)p1)->shiyingdu;//现在是按照"适应度"排序,改成"个体"的话就是按照"个体"排序
float j=((individual *)p2)->shiyingdu;
return i

人工智能“遗传算法求解f(x)=xcosx+2的最大值”用遗传算法求 f(x)=xcosx+2 的最大值 用遗传算法求解函数 f(x)=x*sin(10*pi*x)+1.0 的最大值,其中x在[-1,2]范围.将求解的程序上传.属于《人工智能》范畴,快速求答案. 求教matlab遗传算法问题f(x,y)=sin(pi*x)/(pi*x)*sin(pi*y)/(pi*y)x,y=[0,8],求maxf(x,y)用遗传算法怎么可以求解? 遗传算法求解请问在MALAB中怎么找出需要的遗传算法数据比如:1【问题】求f(x)=x+10*sin(5x)+7*cos(4x)的最大值,其中0 f(x) = xcos(3x)求导 利用遗传算法求解区间[0,31]上的二次函数y=x*x的最大值 基于MATLAB的遗传算法程序 对函数y=(x)1^2-(x)2^2+3 求解全局最大值. 求C代码:遗传算法求函数最大值f(x)=x^2 x 从0到30 求解微分方程:[x-ycos(y/x)]dx+xcos(y/x)dy=0. 求解微分方程 (x-ycos(y/x))dx+xcos(y/x)dx=0 遗传算法求Y=X*X最大值,求指导. 利用遗传算法求解区间【0,31】上的二次函数y=x*x的最大值(MATLAB/C语言都行), 利用遗传算法求解区间【0,31】上的二次函数y=x*x的最大值最好是用c或者c++来编写程序 y=xcos(1/x) 求函数f(X)=sin xcos x + cos x + sin x 的最大 最小值 谢菲尔德遗传算法工具箱求解带非线性约束问题看了一点遗传算法的计算示例,发现没有非线性约束规划的示例我想求一个发f(x,y,z)的最小值,然后除了如x属于-1到1等约束条件以外,还有比如x*y* f(x)=sin²ωx+sinωxcosωx的化简 f(x)=a(cos^2 x+sin xcos x)+b,求当a