亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? myga_2.c

?? 遺傳算法解決雙變量的函數最優化問題
?? C
?? 第 1 頁 / 共 2 頁
字號:

//*******************************個體變異*****************************
void peoplemutate(struct pp *pp1,int k)
{
  int i;
  randomize();
  i=random(lchrom);
  if(flip(0))
  { if(pp1[k].chromX[i])
	pp1[k].chromX[i]=0;
  }
  i=random(lchrom);
  if(flip(0))
  { if(pp1[k].chromY[i])
        pp1[k].chromY[i]=0;
  }
}


//****************************產生下一代種群*******************************
void generation()                  //產生下一代種群
{ unsigned int j,mate1,mate2;
  int flag=1;                               //交叉或競爭的標志
  j=0;
  do
  {mate1=select();                    //找出兩個體進行交叉競爭
   mate2=select();
   //以某種概率留部分頂級種群
   flag=crossover_compete(oldpop[mate1].chromX,oldpop[mate2].chromX,oldpop[mate1].chromY,oldpop[mate2].chromY,j);
   if(flag)
   {
   peoplemutate(newpop,j);
   peoplemutate(newpop,j+1);
   newpop[j].x=(float)decode(newpop[j].chromX,Xmin,Xmax);
   newpop[j].y=(float)decode(newpop[j].chromY,Ymin,Ymax);
   newpop[j].fitness=objfitness(newpop[j].x,newpop[j].y);
   newpop[j].parent1=mate1;
   newpop[j].parent2=mate2;
   newpop[j].xsite=jcross;
   newpop[j+1].x=(float)decode(newpop[j+1].chromX,Xmin,Xmax);
   newpop[j+1].y=(float)decode(newpop[j+1].chromY,Ymin,Ymax);
   newpop[j+1].fitness=objfitness(newpop[j+1].x,newpop[j+1].y);
   newpop[j+1].parent1=mate1;
   newpop[j+1].parent2=mate2;
   newpop[j+1].xsite=jcross;
   j=j+2;
   }
   else                                 //以一定的概率兩兩競爭,留下一個個體
   {
     if(oldpop[mate1].fitness<oldpop[mate2].fitness)
     newpop[j]=oldpop[mate2];
     else
     newpop[j]=oldpop[mate1];
     peoplemutate(newpop,j);
     j=j+1;
   }
  }while (j<popsize);
  newpop[popsize-1]=oldpop[popsize-1];  //直接繼承最大適應度值的個體
}

//**********************************對種群進行選擇***************************************


int select()                      //對種群進行選擇,選出兩個個體進行交叉或競爭或和諧共處
{                                       //用改進的輪轉賭輪法
  double rand1,partsum;
  int j;
  float a,b,pgen;     
   pgen=(float)(1.0*gen/maxgen);                       //進行適應度調整的兩參數
  partsum=0.0;
  j=0;
  rand1=random1()*sumfitness;
  if (pgen<=0.3)                  //對不同時期的種群進行不同的適應度調整
  {a=0.1; b=0.9*avgfitness;}
  else if(0.3<pgen<=0.7)
  {a=1;b=0;}
  else
  {
   a=2;b=-1*avgfitness;
   if ((a*min+b)<=0)
    {a=1;b=0;}
  }
  while(((a*partsum+b)<rand1)&&(j<popsize))
  {
    partsum=partsum+oldpop[j].fitness;
    j=j+1;
  }
  return j-1;
}


int flip(float probability)          //對某概率的樣本進行隨機的選取,選到返回1,否則返回0
{
 float ppp;
 ppp=random(20001)/20000.0;
 if(ppp<=probability) return 1;
 return 0;
}

//*********************************求個體的適應度***************************************

double objfitness(float x1,float x2)   //求個體的適應度
{ float y;
  y=100*(x1*x1-x2)*(x1*x1-x2)+(1-x1)*(1-x1);
  return y;
}

//********************************對種群進行統計*****************************************

void statistics(struct pp *pop)
{int j;
 sumfitness=pop[0].fitness;
 min=pop[0].fitness;
 max=pop[0].fitness;
 maxpp=0;
 minpp=0;
 for(j=1;j<popsize;j++)
  {sumfitness=sumfitness+pop[j].fitness;
   if (pop[j].fitness>max)
    {max=pop[j].fitness;        /*找出適應度最大的個體*/
     maxpp=j;
    }
   if (pop[j].fitness<min)       /*找出適應度最小的個體*/
    {min=pop[j].fitness;
     minpp=j;
    }
  }
 avgfitness=sumfitness/(float)popsize; /*求出平均適應度值*/

}

//**************************求當前的交叉概率*******************************


float now_pcross()             //求當前的交叉概率
{
 float p,pgen;
 pgen=(float)(gen*1.0/maxgen);
 if(pgen<=0.3)
 p=pcross;
 else if(0.3<pgen<=0.6)
 p=pcross;
 else if(0.6<pgen<=0.95)
 p=0.8;
 else
 p=0.5;
 return p;
}


//****************************求當前的變異概率********************************

float now_pmutation()          //求當前的變異概率
{
 float p,pgen;
 pgen=(float)(gen*1.0/maxgen);//注意這里要乘以1.0 用來化為float型!!!!!!!!!重要!!!!!!!!
 if(pgen<=0.2)
 p=0.4;
 else if(0.2<pgen<=0.3)
 p=pmutation;
 else if(0.3<pgen<=0.8)
 p=0.3;
 else if(0.5<pgen<=0.8)
 p=pmutation;
 else
 p=0.01;
 return p;
}

//**************************************解碼操作**********************************************
double decode(unsigned char *pp,float xmin,float xmax) //把值定義在一個區間內的二進制數轉化為十進制數,即解碼操作
{
 int j;
 double power;//各位的權重
 double value;
 power=1.0;
 value=0.0;
 for(j=lchrom-1;j>-1;j--)//十進制變二進制
 { if(pp[j]) value=value+power;
   power=2.0*power;
 }
 value=(value/(pow(2,lchrom)-1))*(xmax-xmin)+xmin;
//把二進制值映射到[xmin,xmax]區間上
 return value;
}

float random1()
{
 jrand=jrand+1;
 if (jrand>=lchrom)
  {jrand=0;
   randomize1();
  }
 return oldrand[jrand];
}


void randomize1()                    /*randomize again*/
 {
  int i;
  randomize();
  for(i=0;i<lchrom;i++)
    oldrand[i]=random(30001)/30000.0;
  jrand=0;
 }

void initpop()                       //初始化種群
{
 int j,j1;
 for(j=0;j<popsize;j++)
  { randomize();
    for (j1=0;j1<lchrom;j1++)
   { 
    oldpop[j].chromX[j1]=(int)(random(20000)/10000.0);     /*隨機產生由0/1組成的染色體*/
    oldpop[j].chromY[j1]=(int)(random(20000)/10000.0); ;     /*隨機產生由0/1組成的染色體*/
   }
   oldpop[j].x=(float)decode(oldpop[j].chromX,Xmin,Xmax);
   oldpop[j].y=(float)decode(oldpop[j].chromY,Ymin,Ymax);
   oldpop[j].fitness=objfitness(oldpop[j].x,oldpop[j].y);
   oldpop[j].parent1=0;
   oldpop[j].parent2=0;
   oldpop[j].xsite=0;
  }
}



void pause()                            /*pause*/
{
 int j,j1;
 int x1;
 x1=0;
 for(j=1;j<=25;j++)
 for (j1=1;j1<2;j1++) x1=x1+1;
}


void CoBox(int x,int y,int l,int h,int color)
{
  setfillstyle(1,8);
  bar(x,y,x+l,y+h);
  setfillstyle(1,color);
  bar(x+2,y+2,x+l-2,y+h-2);
  setcolor(15);
  line(x,y,x+l,y);
  line(x,y,x,y+h);
  line(x+1,y+1,x+l-1,y+1);
  line(x+1,y+1,x+1,y+h-1);
}



void CoReBox(int x,int y,int l,int h,int color)
{
  setfillstyle(1,8);
  bar(x,y,x+l,y+h);
  setfillstyle(1,color);
  bar(x+2,y+2,x+l-2,y+h-2);
  setcolor(15);
  line(x,y+h,x+l,y+h);
  line(x+l,y+h,x+l,y);
  line(x+1,y+h-1,x+l-1,y+h-1);
  line(x+l-1,y+h-1,x+l-1,y+1);
}



void clearscreen()
{
  setfillstyle(1,15);
  bar(330,50,630,250);
  setlinestyle(0,0,3);
  setcolor(4);
  line(325,250,630,250);
  line(630,250,620,240);
  line(630,250,620,260);
  line(330,255,330,45);
  line(330,45,320,55);
  line(330,45,340,55);
  setfillstyle(1,15);
  bar(375,265,585,475);
  setcolor(4);
  setlinestyle(0,0,3);
  rectangle(375,265,585,475);
}


void drawgraph(int gen,float oldmax)
{
  int Gx,Gy,Gx1,Gy1;
  int Px,Py;
  int j;
  Gy=(int)(max*200/4000);
  Gx=(int)(gen*300.0/maxgen);
  Gy1=(int)(oldmax*200/4000);
  Gx1=(int)((gen-1)*300.0/maxgen);

  setlinestyle(0,0,1);
  setcolor(2);
  line(330+Gx1,250-Gy1,330+Gx,250-Gy);
  for (j=0;j<popsize;j++)
  {
   Px=(int)(newpop[j].x*50+480);
   Py=(int)(370-newpop[j].y*50);
   line(Px-3,Py,Px+3,Py);
   line(Px,Py-3,Px,Py+3);
  }

}

void resetmenu()
{
  setcolor(9);
  settextstyle(0,0,1);
  CoBox(20,80+80,120,30,10);
  outtextxy(20,80+10+80," 1 SET");
  CoBox(20,170+40,120,30,10);
  outtextxy(20,170+10+40,"2 RESET");
  CoBox(180,80+80,120,30,10);
  outtextxy(180,80+10+80," 3 START");
  CoBox(180,170+40,120,30,10);
  outtextxy(180,170+10+40," 4 EXIT");
}





void report()
{
   int k;
   setfillstyle(1,0);
   bar(0,0,getmaxx(),100);
   gotoxy(10,1);
   printf("Population Report\n");
   for(k=0;k<79;k++) printf("*");
   printf("\n");
   printf("RESULT: ");
   printf("avgfitness=%8.4f  MIN=%8.4f  MAX=%8.4f\n",avgfitness,min,max);
   printf("x=%8.4f  y=%8.4f  \n",oldpop[maxpp].x,oldpop[maxpp].y);
   printf("         ncross=%d   nmutation=%d\n",ncross,nmutation);
   free(p1);
   free(oldpop);
   free(newpop);

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕免费观看一区| eeuss鲁片一区二区三区在线观看| 久久机这里只有精品| 国产一区二区网址| 91丨porny丨户外露出| 欧美亚洲国产怡红院影院| 精品免费国产二区三区| 国产精品狼人久久影院观看方式| 亚洲自拍偷拍综合| 国产在线一区观看| 91精品福利视频| 精品国产91乱码一区二区三区 | 日韩成人一级大片| 国产精品一区二区久久不卡| 色综合久久久久网| 精品日韩一区二区三区免费视频| 亚洲天堂成人在线观看| 美女一区二区视频| 色综合色综合色综合色综合色综合| 91精品国产综合久久精品麻豆 | 91一区二区在线| 精品日韩一区二区| 亚洲主播在线播放| 成人在线综合网| 日韩一区二区电影网| 日韩理论片中文av| 黑人巨大精品欧美一区| 欧美日韩高清不卡| 国产精品家庭影院| 国产一区二区毛片| 欧美一区二区三区系列电影| 亚洲欧美成aⅴ人在线观看| 黑人巨大精品欧美黑白配亚洲| 欧美色老头old∨ideo| 国产精品久久久久久久蜜臀| 久久www免费人成看片高清| 在线免费视频一区二区| 日本一区二区三级电影在线观看| 日本美女一区二区三区视频| 91电影在线观看| 国产精品国产三级国产| 国产老肥熟一区二区三区| 在线播放视频一区| 亚洲综合精品自拍| 色嗨嗨av一区二区三区| 国产精品人成在线观看免费| 国内外成人在线| 欧美一区二区在线播放| 婷婷中文字幕一区三区| 在线欧美日韩精品| 一区二区三区中文在线| av在线不卡网| 国产精品理伦片| 成人精品免费视频| 国产欧美日韩在线观看| 国产一区二区福利| 精品久久人人做人人爰| 麻豆一区二区三| 日韩三级精品电影久久久| 视频一区视频二区在线观看| 欧美色爱综合网| 亚洲不卡av一区二区三区| 欧美性感一区二区三区| 亚洲国产综合色| 欧美三级电影在线观看| 亚洲一区二区三区小说| 欧美日韩精品系列| 亚洲第一狼人社区| 91精品国产一区二区三区香蕉| 午夜一区二区三区视频| 欧美军同video69gay| 青娱乐精品在线视频| 欧美精品粉嫩高潮一区二区| 视频一区二区三区在线| 7799精品视频| 久久99国产精品久久| 欧美成人综合网站| 国产资源精品在线观看| 国产欧美一区二区精品仙草咪| 懂色av一区二区夜夜嗨| 成人免费小视频| 色噜噜久久综合| 香蕉久久一区二区不卡无毒影院| 欧美老年两性高潮| 久久精品国产亚洲a| 久久久99久久精品欧美| 粉嫩aⅴ一区二区三区四区五区| 国产精品伦一区| 色av一区二区| 偷拍亚洲欧洲综合| 久久久久久久综合狠狠综合| 成人免费看黄yyy456| 亚洲黄色在线视频| 欧美丰满少妇xxxbbb| 韩国中文字幕2020精品| 国产精品久久久久久一区二区三区| 91麻豆文化传媒在线观看| 日日骚欧美日韩| 久久在线免费观看| av成人免费在线| 亚洲18影院在线观看| 欧美变态口味重另类| av毛片久久久久**hd| 天天av天天翘天天综合网色鬼国产| 精品国产一区二区三区忘忧草 | 亚洲天堂中文字幕| 欧美日韩国产在线观看| 激情文学综合插| 亚洲美女偷拍久久| 日韩三级av在线播放| av一区二区不卡| 日韩高清不卡一区二区| 欧美激情在线一区二区| 欧美性感一类影片在线播放| 激情欧美一区二区| 亚洲综合色在线| 国产亚洲一区二区三区| 91豆麻精品91久久久久久| 国产资源精品在线观看| 亚洲永久精品大片| 欧美极品xxx| 欧美日韩另类一区| 不卡av免费在线观看| 美女视频黄 久久| 亚洲精品国产视频| 国产三级一区二区三区| 欧美精品乱码久久久久久| 成人午夜精品一区二区三区| 日韩精品1区2区3区| 国产精品成人网| 精品成a人在线观看| 欧美午夜精品一区二区三区 | 亚洲欧洲国产专区| 日韩欧美国产一区二区在线播放 | 亚洲 欧美综合在线网络| 欧美激情综合在线| 欧美成人性战久久| 欧美最新大片在线看| 成人免费av网站| 精品亚洲国产成人av制服丝袜| 亚洲综合另类小说| 中文字幕日韩av资源站| 久久久久久久久久久久久女国产乱| 欧美午夜影院一区| 91在线丨porny丨国产| 国产真实乱子伦精品视频| 日韩国产一区二| 亚洲精品成a人| 国产精品网友自拍| 久久人人超碰精品| 日韩一区二区三区电影| 在线观看免费一区| 99精品久久只有精品| 国产精品资源在线看| 蜜臀av一区二区在线观看 | 精品毛片乱码1区2区3区| 欧美人体做爰大胆视频| 日本韩国欧美在线| 成人18精品视频| 国产成人免费9x9x人网站视频| 久久99精品久久久久久| 免费成人在线观看| 天天综合天天做天天综合| 亚洲自拍偷拍av| 亚洲综合在线电影| 一区二区国产盗摄色噜噜| 亚洲欧洲三级电影| **性色生活片久久毛片| 国产精品久久福利| 国产精品国产三级国产aⅴ入口 | 91影院在线免费观看| 成人av中文字幕| www.久久久久久久久| 99在线热播精品免费| 99在线视频精品| 色综合一个色综合| 日本高清成人免费播放| 色噜噜狠狠色综合欧洲selulu| 91看片淫黄大片一级在线观看| 99久久精品免费精品国产| 91免费在线播放| 色哟哟精品一区| 欧美日韩在线亚洲一区蜜芽| 欧美色网一区二区| 欧美日韩国产123区| 欧美一区二区性放荡片| 精品乱码亚洲一区二区不卡| 精品粉嫩超白一线天av| 久久精品亚洲国产奇米99| 国产三级欧美三级日产三级99 | 成人性生交大片免费| 成人av网站免费| 99re这里都是精品| 欧美艳星brazzers| 6080亚洲精品一区二区| wwwwxxxxx欧美| 中文字幕在线不卡| 亚洲福中文字幕伊人影院| 日韩av中文字幕一区二区三区| 美女www一区二区|