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

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

?? gadelphi.pas

?? 用VC編的遺傳算法的一個小軟件
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
      oldpop[j].parent[1] := 0;
      oldpop[j].xsite := 0;
      objfunc(oldpop[j]);
    end;
  end;
end;

procedure TGA.objfunc(var critter: individual); //* 計算適應度函數值 */
var
  mask, bitpos, tp: cardinal;
  bitpow: double;
  j, k, stop: integer;
begin
  mask := 1;
  critter.varible := 0.0;
  for k := 0 to chromsize - 1 do
  begin
    if (k = (chromsize - 1)) then
      stop := lchrom - (k * (8 * sizeof(cardinal)))
    else
      stop := 8 * sizeof(cardinal);
    tp := critter.chrom[k];
    for j := 0 to stop - 1 do
    begin
      bitpos := j + (8 * sizeof(cardinal)) * k;
      if ((tp and mask) = 1) then
      begin
        bitpow := power(2.0, bitpos);
        critter.varible := critter.varible + bitpow;
      end;
      tp := tp shr 1;
    end;
  end;
  critter.varible := -1 + critter.varible * 3 / (power(2.0, lchrom) -
    1);
  critter.fitness := critter.varible * sin(critter.varible * 10 * arctan(1)
    * 4) + 2.0;
end;


function TGA.flip(prob: single): boolean; // 以一定概率產生0或1
begin
  if (randomperc <= prob) then
    result := true
  else
    result := false;
end;

function TGA.select: integer; //* 輪盤賭選擇*/
var
  sum, pick: single;
  i: integer;
begin
  pick := randomperc;
  sum := 0;
  i := 0;
  if (sumfitness <> 0) then
    while ((sum < pick) and (i < popsize)) do
    begin
      sum := sum + oldpop[i].fitness / sumfitness;
      inc(i);
    end
  else
    i := rnd(1, popsize);
  result := i - 1;
end;

function TGA.rnd(low, high: integer): integer;
  //*在整數low和high之間產生一個隨機整數*/
var
  i: integer;
begin
  if (low >= high) then
    i := low
  else
  begin
    i := trunc((randomperc * (high - low + 1)) + low);
    if (i > high) then
      i := high;
  end;
  result := i;
end;

function TGA.crossover(var parent1, parent2, child1, child2: PUnsigned): integer;
  // * 由兩個父個體交叉產生兩個子個體 * /
var
  j, jcross, k: integer;
  mask, temp: cardinal;
begin
  if (flip(pcross)) then
  begin
    jcross := rnd(1, (lchrom - 1)); // * Cross between 1 and l - 1 * /
    inc(ncross, 1);
    for k := 1 to chromsize do
    begin
      if (jcross >= (k * (8 * sizeof(cardinal)))) then
      begin
        child1[k - 1] := parent1[k - 1];
        child2[k - 1] := parent2[k - 1];
      end
      else
        if ((jcross < (k * (8 * sizeof(cardinal)))) and (jcross > ((k - 1) * (8 *
          sizeof(cardinal))))) then
        begin
          mask := 1;
          for j := 1 to jcross - 1 - ((k - 1) * (8 * sizeof(cardinal))) do
          begin
            temp := 1;
            mask := mask shr 1;
            mask := mask and temp;
          end;
          child1[k - 1] := (parent1[k - 1] and mask) or (parent2[k - 1] and (not
            mask));
          child2[k - 1] := (parent1[k - 1] and (not mask)) or (parent2[k - 1] and
            mask);
        end
        else
        begin
          child1[k - 1] := parent2[k - 1];
          child2[k - 1] := parent1[k - 1];
        end;
    end;
  end
  else
  begin
    for k := 0 to chromsize - 1 do
    begin
      child1[k] := parent1[k];
      child2[k] := parent2[k];
    end;
    jcross := 0;
  end;
  result := jcross;
end;

procedure TGA.mutation(child: PUnsigned); //*變異操作*/
var
  j, k, stop: integer;
  mask, temp: cardinal;
begin
  temp := 1;
  for k := 0 to chromsize - 1 do
  begin
    mask := 0;
    if (k = (chromsize - 1)) then
      stop := lchrom - (k * (8 * sizeof(cardinal)))
    else
      stop := 8 * sizeof(cardinal);
    for j := 0 to stop - 1 do
    begin
      if (flip(pmutation)) then
      begin
        mask := mask or (temp shl j);
        inc(nmutation, 1);
      end;
    end;
    child[k] := child[k] xor mask;
  end;
end;

procedure TGA.generation;
var
  mate1, mate2, jcross, j: integer;
begin
  j := 0;
  //*  每代運算前進行預選 */
  preselect;
  //* 選擇, 交叉, 變異 */
  repeat
      //* 挑選交叉配對 */
    mate1 := select();
    mate2 := select();
      //* 交叉和變異 */
    jcross := crossover(oldpop[mate1].chrom, oldpop[mate2].chrom, newpop[j].chrom,
      newpop[j + 1].chrom);
    mutation(newpop[j].chrom);
    mutation(newpop[j + 1].chrom);
      //* 解碼, 計算適應度 */
    objfunc(newpop[j]);
      //*記錄親子關系和交叉位置 */
    newpop[j].parent[0] := mate1 + 1;
    newpop[j].xsite := jcross;
    newpop[j].parent[1] := mate2 + 1;
    objfunc(newpop[j + 1]);
    newpop[j + 1].parent[0] := mate1 + 1;
    newpop[j + 1].xsite := jcross;
    newpop[j + 1].parent[1] := mate2 + 1;
    j := j + 2;
  until (j >= (popsize - 1));
end;

procedure TGA.preselect;
var
  j: integer;
begin
  sumfitness := 0;
  for j := 0 to popsize - 1 do
    sumfitness := sumfitness + oldpop[j].fitness;
end;

procedure TGA.Go;
begin
  gen := 0;
  while (gen < maxgen) do
  begin
      //fprintf(outfp, "\n第 %d / %d 次運行: 當前代為 %d, 共 %d 代\n", run, maxruns,
        //gen, maxgen);
      // * 產生新一代 * /
    generation;
      // * 計算新一代種群的適應度統計數據 * /
    statistics(newpop);
      // * 輸出新一代統計數據 * /
    report;

    temp := copy(oldpop);
    oldpop := copy(newpop);
    newpop := copy(temp);
    inc(gen, 1);
  end;
//  freeall();
end;

procedure TGA.repchar(ch: pchar; repcount: integer);
var
  j: integer;
begin
  for j := 1 to repcount - 1 do
    write(ch);
end;

procedure TGA.report; //* 輸出種群統計結果 */

begin
  repchar('-', 80);
  skip(1);
  if (printstrings = 1) then
  begin
    repchar(' ', ((80 - 17) div 2));
    writeln('模擬計算統計報告  ');
    write('世代數 ', gen);
    repchar(' ', (80 - 28));
    writeln('世代數 ', (gen + 1));
    write('個體  染色體編碼');
    repchar(' ', lchrom - 5);
    write('適應度    父個體 交叉位置  ');
    write('染色體編碼 ');
    repchar(' ', lchrom - 5);
    write('適應度');
    repchar('-', 80);
    skip(1);
    writepop();
    repchar('-', 80);
    skip(1);
  end;
  writeln(format('第 %d 代統計: ', [gen]));
  writeln('總交叉操作次數 = ', ncross, ' 總變異操作數 = ', nmutation);
  writeln(' 最小適應度:', min, ' 最大適應度:', max, '  平均適應度 %f', avg);
  writeln(format(' 迄今發現最佳個體 =>  所在代數: %d  ', [bestfit.generation]));
  writeln(' 適應度:  染色體:', bestfit.fitness);
  writechrom(bestfit.chrom);
  writeln(' 對應的變量值: ', bestfit.varible);
  skip(1);
  repchar('-', 80);
  skip(1);
end;

procedure TGA.writepop;
var
  pind: individual;
  j: integer;
begin
  for j := 0 to popsize - 1 do
  begin
    write(format('%3d)  ',[j + 1]));
        //* 當前代個體 */
    pind := oldpop[j];
    writechrom(pind.chrom);
    write(format('  %8f | ', [pind.fitness]));
        //* 新一代個體 */
    pind := newpop[j];
    write(format('(%2d,%2d)   %2d   ', [pind.parent[0], pind.parent[1],
      pind.xsite]));
    writechrom(pind.chrom);
    writeln(format('  %8f  ', [pind.fitness]));
  end;
end;

procedure TGA.writechrom(chrom: PUnsigned); //* 輸出染色體編碼 */
var
  j, k, stop: integer;
  mask, tmp: Cardinal;
begin
  mask := 1;
  for k := 0 to chromsize - 1 do
  begin
    tmp := chrom[k];
    if (k = (chromsize - 1)) then
      stop := lchrom - (k * (8 * sizeof(cardinal)))
    else
      stop := 8 * sizeof(cardinal);
    for j := 0 to stop - 1 do
    begin
      if (tmp and mask) = 1 then
        write('1')
      else
        write('0');
      tmp := tmp shr 1;
    end;
  end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人精品免费看| 一区二区欧美视频| 狠狠v欧美v日韩v亚洲ⅴ| 日韩欧美黄色影院| 韩日精品视频一区| 久久久久国产成人精品亚洲午夜| 韩日精品视频一区| 中文字幕一区二区在线播放| 色噜噜狠狠成人网p站| 亚洲一区二区三区四区的| 欧美专区日韩专区| 日韩高清不卡一区二区三区| 久久综合久久久久88| 国产精品中文欧美| 亚洲男人电影天堂| 91精品国产福利| 精品国产伦理网| 国产精品资源站在线| 一区二区三区中文在线| 日韩一卡二卡三卡四卡| 国产成人午夜99999| 一区二区三区四区不卡视频 | 一区二区三区在线高清| 欧美人动与zoxxxx乱| 国产制服丝袜一区| 亚洲精品免费视频| 26uuu亚洲综合色| 色综合久久66| 黑人巨大精品欧美一区| 亚洲精品国产高清久久伦理二区| 欧美一区二区三区性视频| 成人国产免费视频| 日韩和欧美的一区| 国产精品久久久久一区| 欧美喷水一区二区| av男人天堂一区| 美女www一区二区| 一区二区三区中文字幕在线观看| 久久综合狠狠综合久久综合88| 91在线无精精品入口| 久久爱www久久做| 亚洲精品视频在线| 国产亚洲成av人在线观看导航| 91国偷自产一区二区使用方法| 国产麻豆欧美日韩一区| 日韩精品免费视频人成| 亚洲欧美国产高清| 国产欧美一区二区三区在线老狼 | 欧美日韩国产精品自在自线| 国产精品18久久久久| 日韩av一区二| 成人sese在线| 国产综合色在线视频区| 日本欧美在线观看| 亚洲免费视频中文字幕| 国产欧美一区二区在线观看| 日韩视频免费观看高清完整版在线观看| 成人99免费视频| 狠狠色狠狠色合久久伊人| 日韩成人一级大片| 亚洲第一成人在线| 亚洲免费在线视频一区 二区| 国产日韩欧美不卡| 久久嫩草精品久久久久| 欧美一级午夜免费电影| 欧美日本一区二区三区四区| 欧美吞精做爰啪啪高潮| 色综合久久综合中文综合网| 丁香五精品蜜臀久久久久99网站| 日韩精品一二三四| 亚洲成va人在线观看| 亚洲一区中文日韩| 亚洲一区二区三区国产| 亚洲一区二区在线视频| 亚洲精品免费在线观看| 一区二区三区美女视频| 亚洲影院在线观看| 夜夜爽夜夜爽精品视频| 亚洲一区二区3| 亚洲成人一区二区在线观看| 亚洲午夜久久久久久久久久久| 亚洲国产精品综合小说图片区| 亚洲黄色性网站| 亚洲国产你懂的| 首页国产欧美日韩丝袜| 日韩高清不卡一区二区三区| 久久精品99久久久| 国产乱妇无码大片在线观看| 国产精品一级二级三级| 白白色 亚洲乱淫| 一道本成人在线| 欧美性三三影院| 日韩免费看的电影| 久久精品一区四区| 日韩美女精品在线| 亚洲最新视频在线观看| 日韩精品一区第一页| 麻豆国产欧美一区二区三区| 九色综合国产一区二区三区| 国产精品一卡二卡在线观看| 波多野结衣在线一区| 91黄色激情网站| 欧美一级免费大片| 日韩美女一区二区三区四区| 精品国产乱码久久久久久1区2区| 欧美国产激情二区三区| 亚洲综合无码一区二区| 日韩成人免费电影| 国产91精品入口| 欧美视频一区二区三区在线观看 | 国产蜜臀97一区二区三区| 久久无码av三级| 亚洲欧洲日韩一区二区三区| 日韩高清国产一区在线| 成人免费高清在线观看| 在线91免费看| 蜜桃视频在线观看一区| 国产成人午夜电影网| 欧美色综合网站| 国产喂奶挤奶一区二区三区| 一卡二卡三卡日韩欧美| 国产一区欧美日韩| 91极品美女在线| 久久精品夜夜夜夜久久| 亚洲一区二区五区| 成人做爰69片免费看网站| 91麻豆精品91久久久久久清纯 | 久久久精品欧美丰满| 亚洲视频免费看| 激情久久久久久久久久久久久久久久| 91视频www| 国产日韩欧美综合在线| 午夜a成v人精品| 成人av高清在线| 日韩欧美www| 五月天激情综合网| 92精品国产成人观看免费| 精品久久一二三区| 性感美女极品91精品| www.欧美精品一二区| 精品美女一区二区| 偷拍与自拍一区| 欧美性猛交xxxx黑人交| 成人欧美一区二区三区1314| 久久国内精品视频| 欧美丰满一区二区免费视频| 亚洲色图欧美激情| 成人免费视频视频在线观看免费| 日韩女优av电影| 奇米综合一区二区三区精品视频| 日本久久一区二区三区| 亚洲色图清纯唯美| 99re热这里只有精品免费视频| 久久影院视频免费| 久久91精品国产91久久小草| 欧美一级二级三级乱码| 爽好多水快深点欧美视频| 91精品办公室少妇高潮对白| 亚洲蜜臀av乱码久久精品蜜桃| 成人丝袜视频网| 国产欧美日韩三级| 豆国产96在线|亚洲| 国产清纯白嫩初高生在线观看91 | 国产呦萝稀缺另类资源| 精品乱码亚洲一区二区不卡| 另类小说视频一区二区| 日韩欧美一级在线播放| 免费成人在线观看| 欧美一卡在线观看| 极品少妇xxxx精品少妇| 精品久久久久久久一区二区蜜臀| 六月丁香婷婷久久| 欧美精品一区二区三区在线播放| 久久精品99国产国产精| 精品国产凹凸成av人导航| 国产一区二区在线视频| 久久久91精品国产一区二区精品 | 欧美三级资源在线| 亚洲综合图片区| 欧美男男青年gay1069videost| 人妖欧美一区二区| 久久婷婷国产综合国色天香| 国产精品 日产精品 欧美精品| 国产精品久久综合| 日本国产一区二区| 奇米精品一区二区三区在线观看| 51精品久久久久久久蜜臀| 精品一区二区三区在线观看国产 | 日韩欧美一级特黄在线播放| 激情综合亚洲精品| 国产精品婷婷午夜在线观看| 99国内精品久久| 香蕉加勒比综合久久| 精品福利av导航| 9色porny自拍视频一区二区| 亚洲午夜激情网页| 欧美大尺度电影在线| 大胆亚洲人体视频| 亚洲国产日韩一级| 久久先锋影音av|