91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 3KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-07
  • 語言: C/C++
  • 標簽: 遺傳算法??

資源簡介

該程序實現了用遺傳算法求y=x*sin(10*PI*x)+2.0的最大值,若需求其他函數最值,稍作修改即可。

資源截圖

代碼片段和文件信息

/*
用遺傳算法求y=x*sin(10*pi*x)+2的最大值??-1=精確到6位小數
pow(221)<3*1000000編碼的二進制長度為22?
*/
#include?
#include?
#include?
#include?
#include?

#define?N?3000000
#define?PI?3.14159265
#define?MAX(ab)?((a)>(b)?(a):(b))

#define?SIZE??50
#define?MAXGEN??50
#define?P_CORSS?0.75
#define?P_MUTATION?0.05

#define?LEN?22

typedef?struct?node
{
??char?x[LEN];
??double?fitnessfitsum;
}node;

node?cur[SIZE]next[SIZE]maxmin;

double?randd()
{
??return?(double)rand()/RAND_MAX;
}
int?randi(int?k)
{
??return?(int)(randd()*k+0.5);
}

//計算當前種群中各個個體的適應度?
void?cal_fitness()
{
??int?ijk;
??double?d;
??for(i=0;i??{
????k=0;
????for(j=LEN-1;j>=0;j--)?k=(k<<1)+cur[i].x[j];
????d=(double)k/N*3-1;
????cur[i].fitness=d*sin(10*PI*d)+2;
????cur[i].fitsum=i>0?(cur[i].fitness+cur[i-1].fitsum):(cur[0].fitness);
??}
}

void?init()
{
??int?tmp;
??for(int?i=0;i??{
????tmp=randi(N);
????for(int?j=0;j????{
??????cur[i].x[j]=tmp%2;
??????tmp=tmp>>1;
????}
??}
??cal_fitness();
}

int?sel()
{
??double?p=randd();
??double?sum=cur[SIZE-1].fitsum;
??for(int?i=0;i??{
????if(cur[i].fitsum/sum>p)?return?i;
??}
}

//換代?
void?tran()
{
??int?ijpos;
??//找當前種群最優個體?
??max=cur[0];
??for(i=1;i??{
????if(cur[i].fitness>max.fitness)??max=cur[i];
??}
??for(int?k=0;k??{
???

評論

共有 條評論