- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
遗传算法作业
一:用浮点数编码解决以下问题。
5 5
f(XrX2) =迟 icos[( + 1)x1 + i]^ icos[(+ 1)x2 + i]
i=1 i=1
其中-10乞x「x2乞10
求mirf(N,Xz)
二:构造过程。
第一步:确定决策变量和约束条件。
题目中已给出了该问题的决策变量及约束条件。
第二步:建立优化模型。
既是题目给出所要求的。
第三步:确定编码方法。
第四步:确定解码方法。
第五步:确定个体评价方法。
这里可将个体的适应度直接取为对应的目标函数值,并且不再对它做其他变化处理,即有:
F(X)=f(x1,x2)
第六步:设计遗传算子。
选择运算使用比例运算算子;
交叉运算是用单点交叉算子;
变异运算使用基本位变异算子。
第七步:确定遗传算法的运行参数。
对于本例,设计基本遗传算法的运行参数如下: int cur_best; /* 最佳个体 */
MAXGENS=80POPSIZE=20NVARS=2PXOVER=0.2
MAXGENS=80
POPSIZE=20
NVARS=2
PXOVER=0.2
PMUTATION=0.1
三:代码如下。
#i nclude stdafx.h
#in clude stdio.h
#in clude stdlib.h
#in clude math.h
#defi ne MAXGENS 80
#defi ne POPSIZE 20
#defi ne NVARS 2
#defi ne PXOVER 0.2
#defi ne PMUTATION 0.1
#defi ne FALSE 0
#defi ne TRUE 1
int gen erati on;
/*最大世代数*/
/*种群大小*/
/*变量个数*/
/*交叉概率*/
/*变异概率*/
/*最大世代数*/
/*种群大小*/
/*变量个数*/
/*交叉概率*/
/*变异概率*/
/*当前世代*/
struct genotype
{
double gene[NV ARS];
double fitness;
double upper[NV ARS];
double lower[NV ARS];
double rfitness;
double cfitness;
};
struct genotype population[POPSIZE+1];
struct genotype newpopulation[POPSIZE+1];
void initialize(void);
double randval(double, double);
void evaluate(void);
void keep_the_best(void);
void elitist(void);
void select(void);
void crossover(void);
void Xover(int,int);
void swap(double *, double *);
void mutate(void);
void report(void);
void initialize(void)
{
int i, j;
double lbound, ubound;
for (i = 0; i NV ARS; i++)
{ scanf(%lf,lbound);
scanf(%lf,ubound);
for (j = 0; j POPSIZE; j++)
{
population[j].fitness = 0;
population[j].rfitness = 0;
population[j].cfitness = 0;
population[j].lower[i] = lbound;
population[j].upper[i]= ubound;
population[j].gene[i] = randval(population[j].lower[i], population[j].upper[i]); }
}
}
double randval(double low, double high)
{
double val;
val = ((double)(rand()%1000)/1000.0)*(high - low) + low;
return(val);
}
void evaluate(void)
{
int mem;
int i;
int X=0;
int Y=0;
double x[NV ARS+1];
for (mem = 0; mem POPSIZE; mem++)
{
for (i = 0; i NV ARS; i++)
x[i+1] = population[mem].gene[i];
{
for(i=1;i=5;i++)
您可能关注的文档
最近下载
- 人教版(2025) 必修第一册 Unit 2 Travelling Around Reading and Thinking课文解析&逐句翻译课件(共17张PPT))(含音频+视频).pptx VIP
- 制造业采购付款制度及流程设计.docx VIP
- 继承优良传统弘扬中国精神 (第二版).pptx VIP
- 含硅废渣综合利用项目环评(新版环评)环境影响报告表.doc
- 【课件】海陆的变迁+课件+第一学期人教版初中地理七年级上册.pptx VIP
- 中国精神的PPT课件.pptx VIP
- 《进出口贸易实务》课件.pptx VIP
- 说课课件进出口贸易实务.pptx VIP
- 水文气象观测网数据集-黑河计划数据管理中心.pdf
- 进出口贸易实务手册.pptx VIP
文档评论(0)