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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 蟻群算法(ant+colony+optimization,+aco)c++編程.cpp

?? 運用C語言編寫的蟻群算法
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
    fclose(fp_block);
}

void LoadBlock(void)
{
 FILE *fp_block;
 char FileNameBlock[20];
 int i,j,k;

 gotoxy(1,MAXY+1);
    printf("                                       "); 
 gotoxy(1,MAXY+1);
 printf("Load file...",FileNameBlock);
 gets(FileNameBlock);
 if(FileNameBlock[0]==0) strcpy(FileNameBlock,"Ant.ant");
 else strcat(FileNameBlock,".ant");
 
 if ((fp_block = fopen(FileNameBlock, "rb")) == NULL)
 { gotoxy(1,MAXY+1);
        printf("Open file %s fail...",FileNameBlock);
  getch();
  exit(2);
 }
 
 clrscr();
 home.xxx = fgetc(fp_block);
 home.yyy = fgetc(fp_block);
 food.xxx = fgetc(fp_block);
 food.yyy = fgetc(fp_block);
 gotoxy(home.xxx,home.yyy); putch(HOME_CHAR);
    gotoxy(food.xxx,food.yyy); putch(FOOD_CHAR);
    food.amount = random(MAX_FOOD/3)+2*MAX_FOOD/3+1;
    /* food.amount = MAX_FOOD; */
    home.amount = 0;
    home.TargetFood = (food.amount<TARGET_FOOD)?food.amount:TARGET_FOOD;
 
 for(AntNow=0;AntNow<MAX_ANT;AntNow++)
    {
        AntInitial();
    } /* of for AntNow */;
    
 for(i=0;i<=MAXX;i++)
        for(j=0;j<=MAXY;j++)
        {
            block[i][j] = fgetc(fp_block);
            if(block[i][j])
            {
             gotoxy(i,j);
             putch(BLOCK_CHAR);
         }
        }
    
    for(k=0;k<=1;k++)
    /* SMELL TYPE FOOD and HOME */
        for(i=0;i<=MAXX;i++)
            for(j=0;j<=MAXY;j++)
                Smell[k][i][j] = 0;
    SmellGoneTimer = 0;
    gettime(&starttime);
    SmellDispFlag = 0;
    CanFindFood = 0;
    HardtoFindPath = 0;
    
    fclose(fp_block);
}

void HomeFoodInitial(void)
{
    int randnum;
    int homeplace;
    /* 1 -- home at left-up, food at right-down
       2 -- home at left-down, food at right-up
       3 -- home at right-up, food at left-down
       4 -- home at right-down, food at left-up */

    randnum = random(100);
    if(randnum<25) homeplace = 1;
    else if (randnum>=25&&randnum<50) homeplace = 2;
    else if (randnum>=50&&randnum<75) homeplace = 3;
    else homeplace = 4;
    
    switch(homeplace)
    {
        case 1: home.xxx = random(MAXX/3)+1;
                home.yyy = random(MAXY/3)+1;
                food.xxx = random(MAXX/3)+2*MAXX/3+1;
                food.yyy = random(MAXY/3)+2*MAXY/3+1;
                break;
        case 2: home.xxx = random(MAXX/3)+1;
                home.yyy = random(MAXY/3)+2*MAXY/3+1;
                food.xxx = random(MAXX/3)+2*MAXX/3+1;
                food.yyy = random(MAXY/3)+1;
                break;
        case 3: home.xxx = random(MAXX/3)+2*MAXX/3+1;
                home.yyy = random(MAXY/3)+1;
                food.xxx = random(MAXX/3)+1;
                food.yyy = random(MAXY/3)+2*MAXY/3+1;
                break;
        case 4: home.xxx = random(MAXX/3)+2*MAXX/3+1;
                home.yyy = random(MAXY/3)+2*MAXY/3+1;
                food.xxx = random(MAXX/3)+1;
                food.yyy = random(MAXY/3)+1;
                break;
    }

    food.amount = random(MAX_FOOD/3)+2*MAX_FOOD/3+1;
    /* food.amount = MAX_FOOD; */
    home.amount = 0;
    home.TargetFood = (food.amount<TARGET_FOOD)?food.amount:TARGET_FOOD;

    /* data correctness check */
    if(home.xxx<=0||home.xxx>MAXX||home.yyy<=0||home.yyy>MAXY||
       food.xxx<=0||food.xxx>MAXX||food.yyy<=0||food.yyy>MAXY||
       food.amount<=0)
    {
        gotoxy(1,MAXY+1);
        printf("World initial fail, any key to exit...");
        getch();
        exit(2);    
    }
        
    gotoxy(home.xxx,home.yyy); putch(HOME_CHAR);
    gotoxy(food.xxx,food.yyy); putch(FOOD_CHAR);
}

 
void AntInitial(void)
/* initial ant[AntNow] */
{
    int randnum;
    int i;
    
    ant[AntNow].xxx = home.xxx;
    ant[AntNow].yyy = home.yyy;
    
    randnum = random(100);
    if(randnum<25) ant[AntNow].dir = UP;
    else if (randnum>=25&&randnum<50) ant[AntNow].dir = DOWN;
    else if (randnum>=50&&randnum<75) ant[AntNow].dir = LEFT;
    else ant[AntNow].dir = RIGHT;
    
    ant[AntNow].speed = 2*(random(INI_SPEED/2)+1);
    ant[AntNow].SpeedTimer = 0;
    ant[AntNow].food = 0;
    ant[AntNow].SmellAmount[SMELL_TYPE_FOOD] = 0;
    ant[AntNow].SmellAmount[SMELL_TYPE_HOME] = MAX_SMELL;
    ant[AntNow].IQ = 1;
    
    for(i=0;i<TRACE_REMEMBER;i++)
    {
        ant[AntNow].tracex[i] = 0;
        ant[AntNow].tracey[i] = 0;
    }
    ant[AntNow].TracePtr = 0;
    
    /* a sepecail ant */
    if(AntNow==0) ant[AntNow].speed = INI_SPEED;
}

void WorldChange(void)
{
    int k,i,j;
    int smelldisp;
    
    SmellGoneTimer+=timer10ms;
    if(SmellGoneTimer>=SMELL_GONE_SPEED)
    {
        SmellGoneTimer = 0;
        for(k=0;k<=1;k++)
        /* SMELL TYPE FOOD and HOME */
            for(i=1;i<=MAXX;i++)
                for(j=1;j<=MAXY;j++)
              {
                        if(Smell[k][i][j])
                  {
                            smelldisp = 1+((10*Smell[k][i][j])/(MAX_SMELL*SMELL_DROP_RATE));
                            if(smelldisp>=30000||smelldisp<0) smelldisp = 30000;
                            if(SmellDispFlag)
                   {
                                gotoxy(i,j);
                                if((i==food.xxx&&j==food.yyy)||(i==home.xxx&&j==home.yyy))
                                    /* don't over write Food and Home */;
                          else
                       {
                                    if(smelldisp>9) putch('#');
                                    else putch(smelldisp+'0');
                       }
                   }
                            Smell[k][i][j]-= 1+(Smell[k][i][j]*SMELL_GONE_RATE);
                            if(Smell[k][i][j]<0) Smell[k][i][j] = 0;
                            if(SmellDispFlag)
                   {
                                if(Smell[k][i][j]<=2)
                       {
                                    gotoxy(i,j);
                                    putch(SPACE);
                       }
                   }
                  }
                    } /* of one location */
    } /* of time to change the world */
} /* of world change */

void AntMove(void)
{
    int antx,anty;
    int smelltodrop,smellnow;
    
    for(AntNow=0;AntNow<MAX_ANT;AntNow++)
    {
        ant[AntNow].SpeedTimer+=timer10ms;
        if(ant[AntNow].SpeedTimer>=ant[AntNow].speed)
        {
            ant[AntNow].SpeedTimer = 0;
            gotoxy(ant[AntNow].xxx,ant[AntNow].yyy);
            putch(SPACE);
            AntOneStep();
            gotoxy(ant[AntNow].xxx,ant[AntNow].yyy);
            /* ant0 is a sepecail ant, use different color */
            if(AntNow==0) textcolor(0xd);
            if(ant[AntNow].food) putch(ANT_CHAR_FOOD);
            else putch(ANT_CHAR_EMPTY);
            if(AntNow==0) textcolor(0x7);
         
            /* remember trace */
            ant[AntNow].tracex[ant[AntNow].TracePtr] = ant[AntNow].xxx;
            ant[AntNow].tracey[ant[AntNow].TracePtr] = ant[AntNow].yyy;
            if(++(ant[AntNow].TracePtr)>=TRACE_REMEMBER) ant[AntNow].TracePtr = 0;
         
            /* drop smell */
            antx = ant[AntNow].xxx;
            anty = ant[AntNow].yyy;
         
            if(ant[AntNow].food)
            /* have food, looking for home */
         {
                if(ant[AntNow].SmellAmount[SMELL_TYPE_FOOD])
             {
                    smellnow = Smell[SMELL_TYPE_FOOD][antx][anty];
                    smelltodrop = ant[AntNow].SmellAmount[SMELL_TYPE_FOOD]*SMELL_DROP_RATE;
                    if(smelltodrop>smellnow) Smell[SMELL_TYPE_FOOD][antx][anty] = smelltodrop;
                    /* else Smell[...] = smellnow */
                    ant[AntNow].SmellAmount[SMELL_TYPE_FOOD]-= smelltodrop;
                    if(ant[AntNow].SmellAmount[SMELL_TYPE_FOOD]<0) ant[AntNow].SmellAmount[SMELL_TYPE_FOOD] = 0;
                } /* of have smell to drop */
            } /* of have food */
            else
            /* no food, looking for food */
         {
                if(ant[AntNow].SmellAmount[SMELL_TYPE_HOME])
             {
                    smellnow = Smell[SMELL_TYPE_HOME][antx][anty];
                    smelltodrop = ant[AntNow].SmellAmount[SMELL_TYPE_HOME]*SMELL_DROP_RATE;
                    if(smelltodrop>smellnow) Smell[SMELL_TYPE_HOME][antx][anty] = smelltodrop;
                    /* else Smell[...] = smellnow */
                    ant[AntNow].SmellAmount[SMELL_TYPE_HOME]-= smelltodrop;
                    if(ant[AntNow].SmellAmount[SMELL_TYPE_HOME]<0) ant[AntNow].SmellAmount[SMELL_TYPE_HOME] = 0;
                } /* of have smell to drop */
         }
        } /* of time to go */
        /* else not go */
    } /* of for AntNow */
    
    textcolor(FOOD_HOME_COLOR);
    gotoxy(home.xxx,home.yyy); putch(HOME_CHAR);
    gotoxy(food.xxx,food.yyy);
    if(food.amount>0) putch(FOOD_CHAR);
    else putch(FOOD_CHAR2);
    textcolor(7);

    gotoxy(1,MAXY+1);
    printf("Food %d, Home %d   ",food.amount,home.amount);
}

void AntOneStep(void)
{
    int ddir,tttx,ttty;
    int i;
    
    ddir = ant[AntNow].dir;
    tttx = ant[AntNow].xxx;
    ttty = ant[AntNow].yyy;
    
    ddir = AntNextDir(tttx,ttty,ddir);
    
    switch(ddir)
    {
        case UP:    ttty--;
                    break; 
        case DOWN:  ttty++;
                    break; 
        case LEFT:  tttx--;
                    break; 
        case RIGHT: tttx++;
                    break; 
        default:    break;
    } /* of switch dir */
    
    ant[AntNow].dir = ddir;
    ant[AntNow].xxx = tttx;
    ant[AntNow].yyy = ttty;
    
    if(ant[AntNow].food)
    /* this ant carry with food, search for home */
    {
        if(tttx==home.xxx&&ttty==home.yyy)
        {
            home.amount++;
            AntInitial();
        }
        if(tttx==food.xxx&&ttty==food.yyy)
            ant[AntNow].SmellAmount[SMELL_TYPE_FOOD] = MAX_SMELL;
    } /* of search for home */
    else
    /* this ant is empty, search for food */
    {
        if(tttx==food.xxx&&ttty==food.yyy)
        {
            if(food.amount>0)
         {
                ant[AntNow].food = 1;
                food.amount--;
                ant[AntNow].SmellAmount[SMELL_TYPE_FOOD] = MAX_SMELL;
                ant[AntNow].SmellAmount[SMELL_TYPE_HOME] = 0;
                ant[AntNow].dir = TurnBack(ant[AntNow].dir);
                for(i=0;i<TRACE_REMEMBER;i++)
             {
                    ant[AntNow].tracex[i] = 0;
                    ant[AntNow].tracey[i] = 0;
             }
                ant[AntNow].TracePtr = 0;
                CanFindFood = 1;
            } /* of still have food */
        }
        if(tttx==home.xxx&&ttty==home.yyy)
            ant[AntNow].SmellAmount[SMELL_TYPE_HOME] = MAX_SMELL;
    }  /* of search for food */
}

void DealKey(char key)
{
    int i;
    switch(key)
    {
        case 'p':   gettime(&endtime);
                    DispPlayTime();
                    getch();
                    gotoxy(1,MAXY+1);
                    for(i=1;i<=MAXX-1;i++) putch(SPACE);
                    break;
        case 't':   if(SmellDispFlag)
              {
                        SmellDispFlag=0;
                        ClearSmellDisp();
              }
                    else SmellDispFlag = 1;
                    break;
        case '1':   DispSmell(SMELL_TYPE_FOOD);
                    getch();
                    ClearSmellDisp();
                    break;
        case '2':   DispSmell(SMELL_TYPE_HOME);
                    getch();
                    ClearSmellDisp();
                    break;
        case '3':   DispSmell(2);
                    getch();
                    ClearSmellDisp();
                    break;
        case 's':   SaveBlock();
           break;
        case 'l':   LoadBlock();
           break;
        default:    gotoxy(1,MAXY+1);
                    for(i=1;i<=MAXX-1;i++) putch(SPACE);
    } /* of switch */
}

void ClearSmellDisp(void)
{
    int k,i,j;
    
    for(k=0;k<=1;k++)
    /* SMELL TYPE FOOD and HOME */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
26uuu亚洲综合色| 日韩欧美国产综合| 婷婷一区二区三区| 一区二区三区不卡视频 | 天堂影院一区二区| 中文字幕一区二区三区不卡在线| 精品久久五月天| 久久久99久久精品欧美| 国产日韩欧美不卡| 国产精品欧美经典| 亚洲蜜臀av乱码久久精品蜜桃| 午夜精品一区二区三区免费视频| 久久精品一级爱片| 欧美一区二区三区日韩| 欧美精品乱码久久久久久按摩| 亚洲国产一区在线观看| 一区二区三区中文在线观看| 九九久久精品视频| 国产三级一区二区| 岛国精品在线播放| 国产精品系列在线观看| 国产精品久久久一区麻豆最新章节| 成人中文字幕合集| 亚洲欧美色综合| 欧美乱妇23p| 国产麻豆一精品一av一免费 | 国产丝袜在线精品| 中文字幕一区日韩精品欧美| 男男视频亚洲欧美| 色婷婷综合久色| 在线观看日韩毛片| 亚洲日本va午夜在线电影| 国产精品成人免费精品自在线观看| 中文字幕成人网| 国内精品视频一区二区三区八戒 | 91成人免费电影| 日韩精品色哟哟| 国产欧美日本一区二区三区| 91香蕉国产在线观看软件| 中文字幕制服丝袜一区二区三区 | 欧美日韩国产高清一区二区 | 天堂午夜影视日韩欧美一区二区| 欧美va亚洲va国产综合| 国产98色在线|日韩| 亚洲宅男天堂在线观看无病毒| 欧美一级一级性生活免费录像| 丁香五精品蜜臀久久久久99网站| 一区二区三区在线视频免费观看| 精品国偷自产国产一区| 在线一区二区视频| 高清视频一区二区| 免费高清不卡av| 伊人夜夜躁av伊人久久| 日本一区免费视频| 日韩一级片在线播放| 色乱码一区二区三区88| 国产裸体歌舞团一区二区| 日本欧美一区二区| 欧美色电影在线| 成人午夜私人影院| 久久99精品久久久| 午夜国产不卡在线观看视频| 日韩精品久久理论片| 亚洲天堂免费看| 欧美一区二区精品在线| 日本高清不卡视频| 亚洲成人免费在线观看| 日韩免费观看高清完整版 | 亚洲精品免费一二三区| 久久精品视频在线免费观看 | av动漫一区二区| 国产一区二区三区香蕉| 蜜桃视频第一区免费观看| 亚洲成av人影院| 一区二区成人在线观看| 亚洲视频在线观看三级| 国产精品美女久久久久久久| 国产欧美日韩综合精品一区二区| 精品久久久久久无| 日韩免费电影网站| 日韩视频在线永久播放| 日韩视频123| 日韩一区二区电影在线| 日韩女优电影在线观看| 日韩精品一区二区三区视频播放 | 夜夜嗨av一区二区三区网页| 亚洲日本在线天堂| 亚洲精品国产a| 夜夜夜精品看看| 亚洲电影在线免费观看| 性做久久久久久久免费看| 五月激情六月综合| 日产国产欧美视频一区精品 | 国产精品久久久久一区二区三区共| 久久久久久久精| 久久久久久久久久久久久久久99| 久久精品亚洲乱码伦伦中文 | 欧美日韩亚洲综合在线 | 99麻豆久久久国产精品免费| 99re在线视频这里只有精品| 色综合天天综合网国产成人综合天| 91麻豆国产福利精品| 欧美性一二三区| 一区二区视频在线| 一区二区三区四区在线免费观看| 亚洲综合另类小说| 免费成人深夜小野草| 国产综合久久久久影院| 国产91精品在线观看| 成人深夜福利app| 欧洲激情一区二区| 日韩欧美综合在线| 国产精品欧美久久久久无广告 | 成人av网站在线| 在线观看日韩电影| 精品久久久久99| 国产精品美女久久久久aⅴ| 亚洲午夜三级在线| 激情av综合网| 91黄视频在线观看| 欧美成人一区二区三区| 最新高清无码专区| 日本三级亚洲精品| 不卡的av电影| 日韩一级黄色大片| 中文字幕制服丝袜一区二区三区| 五月天视频一区| 国产91精品在线观看| 欧美二区三区91| 国产精品久久久久久久浪潮网站| 天天综合网 天天综合色| 国产成人精品免费看| 欧美精品久久99| 国产精品国产三级国产普通话蜜臀 | 亚洲欧美在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产99久久久精品| 欧美精选在线播放| 亚洲免费资源在线播放| 韩国av一区二区三区四区| 欧美在线播放高清精品| 欧美韩国日本不卡| 久久精品国产亚洲一区二区三区| 色婷婷综合久久久| 欧美国产一区在线| 激情综合色播激情啊| 欧美日韩国产免费一区二区| 国产精品动漫网站| 国精产品一区一区三区mba视频| 欧美另类z0zxhd电影| 亚洲裸体xxx| 成人免费三级在线| 久久久久久久久97黄色工厂| 日韩不卡一二三区| 精品视频999| 一区二区三区中文字幕| 99久久综合色| 国产精品久久午夜| 成人激情动漫在线观看| 久久久99久久| 国产精品一区二区久久精品爱涩| 日韩欧美亚洲国产另类| 日本不卡免费在线视频| 欧美亚洲免费在线一区| 樱花草国产18久久久久| 91偷拍与自偷拍精品| 成人欧美一区二区三区| 成人性生交大片免费看中文 | 欧美xxxxxxxxx| 免费成人美女在线观看| 欧美一区二区免费| 青青草国产成人av片免费| 欧美日韩的一区二区| 亚洲不卡av一区二区三区| 欧美特级限制片免费在线观看| 一区二区三区欧美在线观看| 色悠悠久久综合| 亚洲一区二区三区免费视频| 在线看一区二区| 午夜视频一区二区| 欧美一区二区三区不卡| 久久精品国产久精国产爱| 日韩欧美一区二区三区在线| 久久91精品久久久久久秒播| 日韩欧美在线1卡| 国产精品一区在线| 欧美国产97人人爽人人喊| 99久久久精品| 亚洲丰满少妇videoshd| 日韩欧美国产三级电影视频| 国产一区二区伦理| 亚洲欧美一区二区在线观看| 精品福利av导航| 日韩一区精品视频| 欧美经典一区二区三区| av亚洲精华国产精华精| 一区二区三国产精华液| 555夜色666亚洲国产免| 国产综合色在线视频区| 中文字幕一区二区视频|