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

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

?? myga_2.c

?? 遺傳算法解決雙變量的函數最優化問題
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*lianzhouhui,Marth 2005,at NANJING
  GENETIC ALGORITHM
  determine the minimization of the problem :100*(x*x-y)^2+(1-x)^2
   recommonded parament pc=0.8,pm=0.05 */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <float.h>
#include <graphics.h>
#include <math.h>
#include <conio.h>

#define maxpop 100
#define maxstring 64
#define Xmin   -2.048
#define Xmax   2.048
#define Ymin   -2.048
#define Ymax   2.048
struct pp
 {unsigned char chromX[maxstring],chromY[maxstring];
  float x,y,fitness;
  unsigned int parent1,parent2,xsite,class;
 };
/*以下變量均為全局變量*/
struct pp *oldpop,*newpop,*p1;
/*定義了 舊種群,新種群, 用來操作的種群*/
unsigned int popsize,lchrom,maxgen,nmutation,ncross,jcross,maxpp,minpp,jrand,gen;
/*定義了 種群個體數,染色體長度,最大代數,變異數,交叉數,交叉點,最大\最小適應度個體的位置,在隨機數組中取隨機數的位置*/
float pcross,pmutation,sumfitness,avgfitness,max,min,oldrand[maxpop],sumclass;
/*定義了 交叉概率,變異概率,適應度之和,適應度平均值,最大適應度,最小適應度,上次生成的隨機數組*/


void ga();                          //GA主函數
int crossover_compete(unsigned char *parentX1,unsigned char *parentX2,unsigned char *parentY1,unsigned char *parentY2,int k5);          //交叉競爭操作
int mutation(unsigned char ch);     //變異
void generation();                  //產生下一代種群
int select();                       //對種群進行選擇,選出兩個個體進行交叉或競爭或和諧共處
double objfitness(float x1,float x2);//求個體的適應度
void statistics(struct pp *pop);    //對種群的適應度進行統計

int flip(float probability);        //對某概率的樣本進行隨機的選取,選到返回1,否則返回0
float now_pcross();               //求當前的交叉概率
float now_pmutation();            //求當前的變異概率
double decode(unsigned char *pp,float xmin,float xmax); //把值定義在一個區間內的二進制數轉化為十進制數,即解碼操作
float random1();
void randomize1();
void initpop();                     //初始化種群
void initdata();                    //輸入參數
void pause();
void CoBox(int x,int y,int l,int h,int color);
void CoReBox(int x,int y,int l,int h,int color);
void clearscreen();
void drawgraph(int gen,float oldmax);
void resetmenu();
void report();
void peoplemutate(struct pp *pp1,int k);



main()
{
 char c1,c2;
 int gdriver=VGA,gmode=VGAHI,errorcode;

 initgraph(&gdriver, &gmode, "d:\\borlandc\\bgi");

   /* read result of initialization */
   errorcode = graphresult();

   if (errorcode != grOk)  /* an error occurred */
   {
      printf("Graphics error: %s\n", grapherrormsg(errorcode));
      printf("Press any key to halt:");
      getch();
      exit(1);             /* return with error code */
   }

  setbkcolor(15);
  setfillstyle(8,10);
  bar(0,0,getmaxx(),40);
  setcolor(4);
  settextstyle(1,0,4);
  outtextxy(0,1,"-------A GENETIC ALGORITHM-------");
  setfillstyle(8,10);
  bar(0,40,getmaxx()/2,getmaxy());
  settextstyle(0,0,1);
  outtextxy(20,50,"(c)lianzhouhui march 2005");
  setlinestyle(0,0,3);
  setcolor(0);
  line(320,getmaxy(),320,40);
  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");
  setcolor(4);
  settextstyle(1,0,3);
  outtextxy(0,250,"  ********PARAMETRE********");
  settextstyle(0,0,1);
  outtextxy(10,285+3,"Enter population size-------->");
  outtextxy(10,285+38,"Enter chromosome length------>");
  outtextxy(10,285+38+38-3,"Enter max.generations-------->");
  outtextxy(10,285+38+38+38-8,"Enter crossover probability-->");
  outtextxy(10,285+38+38+38+38-10,"Enter mutation probability---->");
  outtextxy(0,140," attention:maxgen<=100  chromlength<=64");
  outtextxy(10,285+38+38+38+38+20,"Recommonded parametre:100,62,1000,0.8,0.05");
  settextstyle(1,0,3);
  /*  outtextxy(320,40,"****************GRAPH****************");*/
  clearscreen();
  setcolor(4);
  settextstyle(0,0,1);
  outtextxy(300,50,"4000");
  outtextxy(630,255,"maxgen");
  outtextxy(20,60+20,"**************OUTPUT**************");
  outtextxy(20,60+40,"gen=");
  outtextxy(160,60+40,"maxfitness=");
  outtextxy(20,100+20,"x=");
  outtextxy(160,100+20,"y=");
 if(!(oldpop=(struct pp *)malloc(maxpop*sizeof(struct pp))))   //分配空間oldpop,newpop,p1
	{printf("memory request failed!\n");  exit(0);}
 if(!(newpop=(struct pp *)malloc(maxpop*sizeof(struct pp))))
	{printf("memory request failed!\n");  exit(0);}
 if(!(p1=(struct pp *)malloc(sizeof(struct pp))))
	{printf("memory request failed!\n");  exit(0);}

 c1='1';
 c2='1';
  while(1)
  {
    switch(c1)
    {
      case '1':
      {
       resetmenu();
       CoReBox(20,80+80,120,30,10);
       outtextxy(20,80+10+80," 1 SET");
       break;
      }
      case '2':
      {
       resetmenu();
       CoReBox(20,170+40,120,30,10);
       outtextxy(20,170+10+40,"2 RESET");

       break;
      }
      case '3':
      {
       resetmenu();
      CoReBox(180,80+80,120,30,10);
      outtextxy(180,80+10+80," 3 START");
       break;
      }
      case '4':
      {
       resetmenu();
      CoReBox(180,170+40,120,30,10);
       outtextxy(180,170+10+40," 4 EXIT");
       break;
      }
      case '\r':
	{
	  if(c2=='1')
	  {
	   resetmenu();
           gotoxy(35,15+4);
           printf("     ");
           gotoxy(35,15+4);
           scanf("%d",&popsize);
           gotoxy(35,15+2+4);
	   printf("     ");
	   gotoxy(35,15+2+4);
           scanf("%d",&lchrom);
           gotoxy(35,15+2+2+4);
           printf("     ");
           gotoxy(35,15+2+2+4);
	   scanf("%d",&maxgen);
           gotoxy(35,15+2+2+2+4);
           printf("     ");
           gotoxy(35,15+2+2+2+4);
           scanf("%f",&pcross);
           gotoxy(35,15+2+2+2+2+4);
           printf("     ");
           gotoxy(35,15+2+2+2+2+4);
           scanf("%f",&pmutation);
	   c1='1';       
           CoReBox(20,80+80,120,30,10);
           outtextxy(20,80+10+80," 1 SET");
	  }
	  if(c2=='2')
	  {
          resetmenu();
          clearscreen();
	  c1='1';
          CoReBox(20,80+80,120,30,10);
          outtextxy(20,80+10+80," 1 SET");
	  }
          if(c2=='3')
	  {
	  nmutation=0;
	  ncross=0;
	  ga();
	  c1='1';
          CoReBox(20,80+80,120,30,10);
          outtextxy(20,80+10+80," 1 SET");
	  }
	  if(c2=='4')
	  { 
	  report();
	  getch();
	  exit(0);}
     }
    }
  c2=c1;
  c1=getch();
  }


}


//*********************************GA主函數**************************************

void ga()
{
  double oldmax;
  int oldmaxpp;
  int k,j;
  for(k=0;k<maxpop;k++) {oldpop[k].chromX[0]='\0';oldpop[k].chromY[0]='\0';}
  for(k=0;k<maxpop;k++) {newpop[k].chromX[0]='\0';newpop[k].chromY[0]='\0';}
  gen=0;
  initpop();
  p1=newpop;
  newpop=oldpop;
  statistics(newpop);
  newpop=p1;
  nmutation=0;ncross=0;
  resetmenu();
 do{
   gen=gen+1;
   randomize();
   oldmax=max;
   oldmaxpp=maxpp;
   generation();
   statistics(newpop);
   p1[0]=newpop[popsize-1];                   //保留最大適應度的個體,并放在一個固定的位置,避免其影響太大
   newpop[popsize-1]=newpop[maxpp];
   newpop[maxpp]=p1[0];
   maxpp=popsize-1;
   if(max<oldmax)                   
  {
    newpop[popsize-1]=oldpop[oldmaxpp];
    statistics(newpop);
    }
  setfillstyle(1,15);
  bar(375,265,585,475);
  setcolor(4);
  setlinestyle(0,0,1);
  rectangle(375,265,585,475);
  gotoxy(16-3,4+2+1);
  printf("      ");
  gotoxy(16-3,4+2+1);
  printf("%d",gen);
  gotoxy(16+20-3,4+2+1);
  printf("      ");
  gotoxy(16+20-3,4+2+1);
  printf("%8.4f",max);
  gotoxy(16-3-8,4+3+1);
  printf("      ");
  gotoxy(16-3-8,4+3+1);
  printf("%8.4f",newpop[maxpp].x);
  gotoxy(16+20-3-7,4+3+1);
  printf("      ");
  gotoxy(16+20-3-7,4+3+1);
  printf("%8.4f",newpop[maxpp].y);
  gotoxy(6+20,4+1);
  printf("      ");
  gotoxy(6+20,4+1);
  printf("%d,%d",maxpp,oldmaxpp);
  drawgraph(gen,oldmax);
  p1=oldpop;
  oldpop=newpop;
  newpop=p1;
  //delay(20);               //延時
 }while(gen<maxgen);
}

 //*****************************交叉競爭操作*******************************

int crossover_compete(unsigned char *parentX1,unsigned char *parentX2,unsigned char *parentY1,unsigned char *parentY2,int k5)          //交叉競爭操作
{
 int j;
 float npcross;
 npcross=now_pcross();
 if (flip(npcross))
  {jcross=random(lchrom-1);
   ncross=ncross+1;
   for(j=0;j<jcross;j++)
    {newpop[k5].chromX[j]=mutation(parentX2[j]);
     newpop[k5+1].chromX[j]=mutation(parentX1[j]);
     newpop[k5].chromY[j]=mutation(parentY2[j]);
     newpop[k5+1].chromY[j]=mutation(parentY1[j]);
    }
   for(j=jcross;j<lchrom;j++)
    {newpop[k5].chromX[j]=mutation(parentX1[j]);
     newpop[k5+1].chromX[j]=mutation(parentX2[j]);
     newpop[k5].chromY[j]=mutation(parentY1[j]);
     newpop[k5+1].chromY[j]=mutation(parentY2[j]);
    }
  return 1;
  }
 else if(flip(0.1*(1-npcross)))
  {
    for(j=0;j<lchrom;j++)
    {newpop[k5].chromX[j]=mutation(parentX1[j]);
     newpop[k5+1].chromX[j]=mutation(parentX2[j]);
     newpop[k5].chromY[j]=mutation(parentY1[j]);
     newpop[k5+1].chromY[j]=mutation(parentY2[j]);
    }
  return 1;
  }
 else
 {return 0;}
}

//*******************************變異*****************************

int mutation(unsigned char ch)                   //變異
{
 int mutate;
 float npmutation;
 npmutation=now_pmutation();
 mutate=flip(npmutation);
 if(mutate)
  {nmutation=nmutation+1;
   if(ch) ch=0;
   else ch=1;
  }
 if(ch) return 1;
 else return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产视频一区在线观看| 久久久亚洲精品石原莉奈| 国产精品麻豆视频| 一本色道久久综合亚洲aⅴ蜜桃| 69堂国产成人免费视频| 国产·精品毛片| 亚洲国产精品久久艾草纯爱| 国产午夜亚洲精品羞羞网站| 欧美日本一区二区在线观看| 欧美影院精品一区| 欧美高清在线一区| 成人精品小蝌蚪| 日韩国产欧美视频| 亚洲啪啪综合av一区二区三区| 精品久久人人做人人爽| 欧美日韩在线精品一区二区三区激情| 国产**成人网毛片九色| 日本视频中文字幕一区二区三区 | 日韩一区二区三免费高清| 色欧美乱欧美15图片| 国产精品一区二区久久不卡| 午夜精品久久久久久久久| 亚洲靠逼com| 中文字幕中文乱码欧美一区二区| 久久综合中文字幕| 日韩精品一区二区三区在线| 欧美久久久影院| 在线观看亚洲精品| 99综合影院在线| av中文一区二区三区| 亚洲男女一区二区三区| 日韩三级视频中文字幕| 91免费视频大全| 不卡高清视频专区| 成人av免费在线| 国产大片一区二区| 国产精品99久久久久久宅男| 日本在线不卡一区| 美女视频黄免费的久久| 蜜臀av在线播放一区二区三区| 亚洲不卡av一区二区三区| 亚洲精品写真福利| 亚洲一二三区在线观看| 亚洲欧美视频一区| 亚洲午夜视频在线| 亚洲国产一区二区在线播放| 亚洲乱码中文字幕综合| 夜夜精品视频一区二区| 亚洲国产视频在线| 美女一区二区在线观看| 婷婷激情综合网| 男人的天堂亚洲一区| 日韩av电影天堂| 狠狠v欧美v日韩v亚洲ⅴ| 韩国成人福利片在线播放| 国产黄人亚洲片| 成人免费视频网站在线观看| 99精品一区二区三区| 99久久精品久久久久久清纯| 色94色欧美sute亚洲线路一久| 欧美在线观看视频一区二区| 欧美美女直播网站| 欧美成人精品福利| 国产午夜亚洲精品理论片色戒 | 亚洲午夜免费电影| 婷婷久久综合九色综合绿巨人 | 一区二区在线观看免费| 夜夜精品浪潮av一区二区三区| 日韩精品一二三四| 国产一区欧美一区| www.66久久| 欧美人伦禁忌dvd放荡欲情| 精品久久国产97色综合| 日本一区二区动态图| 亚洲视频在线一区二区| 天天爽夜夜爽夜夜爽精品视频| 激情五月婷婷综合网| 成人激情图片网| 欧美日韩另类一区| 久久影院午夜片一区| 中文字幕一区二区三区精华液| 亚洲午夜精品17c| 国产一二三精品| 日本久久一区二区| 日韩一区二区在线看| 国产精品理伦片| 日本亚洲免费观看| av色综合久久天堂av综合| 欧美日韩另类一区| 国产精品家庭影院| 久久超级碰视频| 91麻豆国产自产在线观看| 日韩片之四级片| 国产精品久久久久久久久免费相片 | 一区二区三区中文在线| 尤物av一区二区| 久久成人18免费观看| 99麻豆久久久国产精品免费| 欧美精品久久一区二区三区| 日韩一区二区在线观看视频| 中文字幕精品三区| 亚洲香蕉伊在人在线观| 国产一区二区精品久久91| 91在线小视频| 日韩女优制服丝袜电影| 国产亚洲精品7777| 日韩中文字幕av电影| 粉嫩aⅴ一区二区三区四区五区 | 99riav久久精品riav| 欧美一区二区三区在| 国产精品日日摸夜夜摸av| 亚洲一区二区精品视频| 欧美自拍丝袜亚洲| 欧美国产日本韩| 午夜电影久久久| aaa亚洲精品| 欧美人与禽zozo性伦| 国产精品美女久久久久久久| 日本成人在线网站| 国产精品中文有码| 欧美日韩大陆在线| 亚洲视频图片小说| 国产毛片精品视频| 91精品在线一区二区| 亚洲同性同志一二三专区| 精品在线亚洲视频| 欧美美女一区二区| 中文av字幕一区| 午夜视频在线观看一区二区三区| 成人a级免费电影| 日韩精品一区二区在线| 国产精品短视频| 国产麻豆视频精品| 欧美二区三区的天堂| 亚洲美女少妇撒尿| 成人黄色软件下载| 91精品国产免费| 免费日韩伦理电影| 欧美在线观看18| 亚洲人精品一区| 不卡一卡二卡三乱码免费网站| xf在线a精品一区二区视频网站| 美女视频网站黄色亚洲| 欧美日韩精品免费| 亚洲国产综合91精品麻豆| 99re6这里只有精品视频在线观看| 久久久久久久久久久久电影| 婷婷综合五月天| 欧美浪妇xxxx高跟鞋交| 亚洲午夜精品在线| 在线视频亚洲一区| 亚洲欧美成aⅴ人在线观看| 国产a级毛片一区| 亚洲视频资源在线| 色综合天天综合网天天看片| 中文字幕亚洲视频| av网站免费线看精品| 久久久久国产精品麻豆ai换脸| 国产成人av电影在线观看| 久久精品视频网| 国产成人夜色高潮福利影视| 国产亚洲精品超碰| jlzzjlzz亚洲女人18| 中文字幕亚洲综合久久菠萝蜜| jizz一区二区| 亚洲天堂福利av| 色婷婷综合激情| 亚洲国产综合在线| 6080国产精品一区二区| 国产一区二区女| 亚洲国产精品激情在线观看| 不卡在线观看av| 日韩av午夜在线观看| 欧美日韩成人激情| 国产乱国产乱300精品| 欧美激情艳妇裸体舞| av电影一区二区| 亚洲成av人影院| 国产三级一区二区三区| 丁香天五香天堂综合| 亚洲一区在线观看视频| 5566中文字幕一区二区电影 | 性久久久久久久久| 亚洲精品一区二区三区99| 国产不卡视频在线播放| 中文字幕亚洲一区二区av在线| 欧美偷拍一区二区| 美女视频网站黄色亚洲| 国产精品水嫩水嫩| 在线观看av一区二区| 日产国产高清一区二区三区| 久久奇米777| 99久久精品国产观看| 日韩精品免费视频人成| 国产亚洲精品bt天堂精选| 91黄色免费网站| 成人免费视频caoporn| 亚洲狠狠爱一区二区三区| 欧美va亚洲va在线观看蝴蝶网| 成人高清视频免费观看|