问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请问遗传算法的变异操作的问题

发布网友 发布时间:2022-04-24 14:42

我来回答

1个回答

热心网友 时间:2023-10-16 23:06

可以使用白噪声之类的算法加入噪点

补充:白噪声是指功率谱密度在整个频域内均匀分布的噪声,比较适合在遗传算法中处理变异现象。

#include "msp.h"
float randnu(long *iseed)
{
float z;
*iseed=2045*(*iseed)+1;
*iseed=*iseed-(*iseed/1048576)*1048576;
z=(float)((*iseed+1)/1048577.0);
return(z);
}
/*--------------------------------------------------------------------*/
void meavar(float u[],int *n,float *pum,float *puv)
{
int i,k;
*pum=0.0;
for(k=0;k<*n;k++)
*pum=*pum+u[k];
*pum=*pum/(*n);
*puv=0.0;
for(i=0;i<*n;i++)
*puv=*puv+pow((u[i]-*pum),2);
*puv=*puv+pow((u[i]-*pum),2);
*puv=*puv/(*n-1.);
return;
}
/*---------------------------------------------------------------------
Routine mrandom : To generate the random number(pseudo-white noise).
input Parameters:
n : the random data number requested; integer .
iseed: the seed for pseudo-random data generation.it must be
initialized by main program(suggested value is ISEED=12357),
and the random number is cycled,the cycle length=1,048,576
itype: random data distribution type, see below:
itype=1: Uniform distributed,from 0.0 to 1.0
itype=2: Uniform distributed,Mean=0.0, Variance(Power) p=1.0
itype=3: Uniform distributed,Mean=0.0, Variance(Power) p=p.
itype=4: Gaussian distributed,Mean=0.0, Variance(Power) p=1.0
itype=5: Gaussian distributed,Mean=0.0, Variance(Power) p=p.
p :variance(Power) of random, only used when itype=3 or itype=5.
out parameters:
u :n dimensioned real array, data is stored in u(0) to u(n-1).
in Chapter 1
---------------------------------------------------------------------*/
void mrandom(float u[],int *n,long *piseed,int itype,float p)
{
int k,ns,ksection,ks,j;
float a,v,umean,uvari;
float *pum,*puv;
pum=&umean;
puv=&uvari;
if(itype >6 |r |r itype <1)
return;
for(k=0;k<*n;k++)
u[k]=randnu(piseed);
if(itype==2 |r |r itype==3)
{
meavar(u,n,pum,puv);
/* to obtain a zero mean and P-power random sequence u[k]).*/
a=12.;
if(itype==2)
p=sqrt(a);
if(itype==3)
p=sqrt(p*a);
for(k=0;k<*n;k++)
u[k]=(u[k]-umean)*p;

}
if(itype==4 |r |ritype==5)
{
/* to generate the Gaussian randow sequence u[k],k=0,1,2,...,ns-1*/
ksection=12;
ns=*n/ksection;
ks=0;
if (itype==4) p=1;
p=sqrt(p);
for(k=0;k<ns;k++)
{
v=0.0;
for(j=0;j<k;j++)
{ v+=p*(u[j+ks]-.5);
u[k]=v;
ks=ks+ksection;
}
*n=ns;
}
meavar(u,n,pum,puv);
printf(" The mean of u[n]=%f\n",umean);
printf(" The variance of u[n]=%f\n",uvari);
return;
}

其中msp.h头文件:
#define abs_error 1.e-10

#ifndef _MSP_H_
#define _MSP_H_

typedef struct {float real,imag;} complex;
/*-------------------------------------------------------------------*/
float mabs(complex a)
{
float m;
m=a.real*a.real+a.imag*a.imag;
m=sqrt(m);
return(m);
}
/*-------------------------------------------------------------------*/
float msign(float a,float b)
{
float z;
if(b>=0) z=sqrt(pow(a,2));
else z=-sqrt(pow(a,2));
return(z);
}
/*-------------------------------------------------------------------*/
complex cexp(complex a)
{
complex z;
z.real=exp(a.real)*cos(a.imag);
z.imag=exp(a.real)*sin(a.imag);
return(z);
}
/*-------------------------------------------------------------------*/
void maftodf(float d[],float c[],int ln,int iband,float fln,float fhn,
float b[],float a[],int *ierror);
void mampres(complex h[],float amp[],int n,float fs,int iamp,char filename[]);
void mar1psd(complex a[],int ip,int mfre,float *ep,float ts);
void marburg(complex x[],complex a[],complex ef[],complex eb[],
int n,int ip,float *ep,int *ierror);
void marmach(complex x[],complex ef[],int n,complex a[],
complex b[],int ip,int iq,int m,float *ep,float ts);
void maryuwa(complex x[],complex a[],complex r[],int n,int ip,
float *ep, int *ierror);
void mbiline(float d[],float c[],int ln,float b[],float a[],int *ierror);
void mbutwcf(int l,int k,int ln,float d[],float c[],int *ierror);
void mchebsh(int l,int k,int ln,float d[],float c[],float phi2,
int *ierror);
void mcholsk(complex a[],complex b[],int n,float eps,int *iflag);
void mcmpdft(complex x[],complex y[],int n,int isign);
void mcmpfft(complex x[],int n,int isign);
void mconvo1(float x[],float h[],float y[],int n,int m,int L);
void mconvo2(complex x[],complex h[],complex y[],int n1,int n2,int n);
void mcorpsd(complex x[],complex r[],int n,int lag,int iwindow,float t);
void mcorre1(complex x[],complex y[],complex r[],int n,int lag);
void mcorre2(complex x[],complex y[],int m,int n,int icorre);
void mcztfft(complex x[],int n,int m,int maxnm,float dltomg,
float omg0,float fs,int *ierror);
void mdecint(float x[],float h[],float y[],int nh,int ny,int m,
int l,int *k);
void mdefir1(int l,int iband,float fl,float fh,float fs,int iwindow,
float b[],float w[],int *ierror);
void mdefir2(int l,int iband,float fl,float fh,complex b[],
float trans,float fs,int *ierror);
void mdefir3(int nfilt,int nbands,float edge[],float fx[],
float wtx[],float h[]);
void mdesiir(float *f1,float *f2,float *f3,float *f4,float fs,
float alpha1,float alpha2,int iband,int itype);
void mfirres(float b[],int lb,int n,complex h[]);
void mfitout(float b[],float a[],int lb,int la,float x[],
int n,float y[]);
void miirres(float a[],float b[],int lb,int la,complex h[],int n);
void mlattic(float b[],float a[],int l,float k[],
float c[],int itype ,int *ierror);
void mmayuwa(complex x[],int n,complex a[],int ip,complex b[],int iq,
complex r[],float *ep, float ts,int *ierror);
void mmvseps(complex x[],complex ef[],complex eb[],int n,complex a[],
int ip,int *ierror,float ts);
void morderb(float *f1,float *f2,float *f3,float *f4,float fs,float alpha1,
float alpha2,int *l,int iband,int itype,int *ierror);
void mperpsd(complex x[],int n,int nshift,int nsamp,int iwidow,float ts);
void mphares(complex h[],float phase[],int n,float fs,char filename[]);
void mprgfft(complex x[],int n,int l,int lf,int k1,int isign);
void mpsplot(float psdr[],float psdi[],int mfre,float ts);
float randnu(long *iseed);
void meavar(float u[],int *n,float *pum,float *puv);
void mrandom(float u[],int *n,long *piseed,int ITYPE,float p);
void mrelfft(float xr[],float xi[],int n,int isign);
float d(int k,int n,int m);
float gee(int k,int n);
void mremez1();
void msplfft(complex x[],int n,int isign);
void munwrap(float phase[],int n);
void mwindow(float w[],int n,int iwindow,int *ierror);
int mspbfct(int i1,int i2);

/*-------------------------------------------------------------------*/
#endif
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么把word 标题第几章和后面的标题中间的位置弄小点?有图片 钢化膜是抗蓝光的好 还是普通的好 都是在官网上买的 价钱都一样 但是抗... 我朋友借我5000块钱,说好5天还的,到现在3个月了人都不见。电话也不借... 有谁知道明年晋城富士康多会招工呢?是不是现在进富士康不好进去了? ...深圳 找工作 几月份去好呢?是年底去,还是二三月去??我是明年... 你们借出去的钱,要回来了吗?你如何看待那些借钱不还的人 别人借我6万元钱,7年了,现在他不认了,借条也丢了怎么办 ...跟他要的时候说还,可就不见还,一直托着还钱时间,当时没写借条... 我在网上认识一个人把钱借给了他没给借条怎么办?他现在也不想还? ...欠我5000块钱,打了借条,请问我有必要起诉他吗,起诉他的费用下来要... 这个明星是谁呀?? 主流备份软件 怎么把2010版的word文本转换成2003的 word2010怎样将文字转换为表格,表格转换为文字 Word 2010版本能不能将文本转换为表格? OPPO巴萨定制版和普通版的区别在哪里? 2010版excel中,在信任中心没有“宏设置”.而且没有“添加新位置”,更没有自定义功能区,怎么办? EXCEL信任中心阻止问题 Excel宏检查不了,信任也没用,咋办 求帮助 excel 如何添加受信任的签名 Excel 如何恢复“信任对于Visual Basic项目的访问”选项 excel信任中心里受保护的视图都没有勾选,为什么打开文件时还是提示受保护的视图? 关于excel 表格的问题。提示是:安全警告 已禁用了数据连接 excel2007无论如何都无法启用宏!信任位置设置了,宏设置全部启用,都不 EXCEL2013版的信任中心在哪 佛学的起源是什么 excel在文件中发现不可读取的内容.是否让我们尽量尝试恢复?如果信任工作簿的源,请单击“是”。 佛教的来历 applewatch前几次充电需要多充吗?如果要怎么个充法 用Microsoft Excel 2010时,出现:您试图打开的文件类型(Excel 2 工作表)被信任中心的文件阻止设置阻止 matlab中求解完方程组后怎样做三维图? 谁有汽车英语词典 从A到Z的那种 求救 红色警戒3求这个女演员的名字 跪求温布尔登2004年上映的由 克斯汀·邓斯特主演的在线免费播放资源 wifi密码怎么改才不容易被破开 民丰2021年6-1杯A多少钱一棵的脚环 龙珠超宇宙怎么替换boss人物z魂 我想买个2000多块钱的手机。最好是华为或小米。有谁能给个详细点的介绍。 买了个神舟z7m-kp7s1,需要什么样的散热器才能压住cpu呢?i7-7700hq的。。。 这个是哪个网络红人,最近好多男生用他做头像 LA4按钮开关怎么接线,只有两个按钮的 如何手动清里手机文件内的病毒,在清理病毒后,手机提示系通文件夹内存支付风险病毒,包名com.maf 星球大战最后的绝地武士百度云网盘 微信小程序观看视频时手机录屏了,平台会有记录吗? 金融计算器,是如何计算每月贷款的还款额度的? 银行贷款计算器公式是什么? 青岛研究生住房补贴是多少 青岛人才补贴政策2021 青岛本科生住房补贴去哪领 青岛市保障房低收入家庭补贴标准