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

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

?? unitfp.pas

?? 很不錯的非線性回歸分析程序
?? PAS
?? 第 1 頁 / 共 4 頁
字號:
    end
    else
    begin
      REAgainValue:=sumAgain;
      REAgain:=0;
    end;
    
    if (sumAgain<properties0) or (REAgain=10) then      //重來
    begin
      for j:=low(MyabcList) to high(MyabcList) do
      begin
        iAgain:=iAgain*properties3;
        MyabcList[j]:=abcList[j];
        //MyabcList[j].MinV:=max(abcList[j].MinV,abcMax[j]-(abcList[j].MaxV-abcList[j].MinV)/iAgain/2);
        //MyabcList[j].MaxV:=min(abcList[j].MaxV,abcMax[j]+(abcList[j].MaxV-abcList[j].MinV)/iAgain/2);
        MyabcList[j].Precision:=trunc(abcList[j].Precision*iAgain);          //屬性
      end;
      MydMax:=MaxExtended;
    end
    else
    begin
      for j:=low(MyabcList) to high(MyabcList) do
      begin
        MyabcList[j].MinV:=max(MyabcList[j].MinV,MyabcMax[j]-(MyabcList[j].MaxV-MyabcList[j].MinV)/(properties1)/2);//屬性   //局部爬山
        MyabcList[j].MaxV:=min(MyabcList[j].maxV,MyabcMax[j]+(MyabcList[j].MaxV-MyabcList[j].MinV)/(properties1)/2);
        if MyabcList[j].PType=2 then
        begin
          MyabcList[j].MinV:=trunc(MyabcList[j].MinV);
          MyabcList[j].MaxV:=trunc(MyabcList[j].MaxV);
        end;
        MyabcList[j].Precision:=trunc(max(2.0,MyabcList[j].Precision/properties2));//屬性
      end;
    end;
    
  end;
end;


//==============================================================================

type TDNA_Order =record
  ID    :integer;
  Value :Extended;
end;

type PArrayTDNA_Order=array of TDNA_Order;

procedure OrderBY(var Order :array of TDNA_Order;var OrderTemp :array of TDNA_Order);
var
  i,j   :integer;
  L,R   :integer;
  LR2   :integer;
  InID  :integer;
begin
  OrderTemp[0]:=Order[0];
  for i:=1 to high(Order) do    //中值插入法排序
  begin
    L:=0;
    R:=i-1;
    while L<=R do
    begin
      LR2:=(R+L) div 2;
      if Order[i].Value<OrderTemp[LR2].Value then
        R:=LR2-1
      else
        L:=LR2+1;
    end;
    InID:=L;
    if InID<i then
    begin
      for j:=i-1 downto InID do
      begin
        OrderTemp[j+1]:=OrderTemp[j];
      end;
    end ;
    OrderTemp[InID]:=Order[i];
  end;

  for i:=0 to high(Order) do
  begin
    Order[i]:=OrderTemp[i];
  end;
end;

procedure GetK(var k1:integer;const Pr:array of Extended); overload;
var
  i     :integer;
  Psum  :Extended;
  r     :extended;
begin
  r:=random;
  Psum:=0;
  for i:=0 to high(Pr) do
  begin
     Psum:=Psum+Pr[i];
     if r<=Psum then
     begin
       K1:=i;
       exit;
     end;
  end;
  k1:=high(Pr);   //不可能到這里執行  因為Pr的和為1
end;

procedure GetK(var k1,k2:integer;const Pr:array of Extended); overload;
begin
  GetK(K1,Pr);
  GetK(K2,Pr);
  while K1=K2 do    //使K1<>K2
  begin
    GetK(K2,Pr);
  end;
end;

procedure RunOptimize4();   //基因算法
var
  MyTime      :extended;
  i,j,k1,k2,k0:integer;

  dTemp       :extended;
  Temp        :extended;
  MyabcList   :array of TabcList;

  Pr          :array of Extended;   //繁殖概率
  DNA         :array of array of Extended; //基因 種群
  DNA_Temp    :array of array of Extended; //臨時交換的 基因 種群
  DNA_Order   :array of TDNA_Order; //基因適應值  排序用
  OrderTemp   :array of TDNA_Order; //臨時 基因適應值  排序用
  t           :integer;              //當前繁殖代數
  DetaX       :extended;          //非一致變異步長

  properties0 :integer;
  properties1 :Extended;
  properties2 :Extended;
  properties3 :Extended;
  properties4 :Extended;
  properties5 :Extended;
  properties6 :Extended;
  properties7 :Extended;
  properties8 :Extended;
  properties9 :Extended;

begin
  //初始設定
  SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_LOWEST);
  randomize;
  setlength(MyabcList,high(abcList)+1);
  for i:=low(MyabcList) to high(MyabcList) do
    MyabcList[i]:=abcList[i]; 
  setlength(abcMax,high(abcList)+1);

  properties0:=trunc(GetKeyValue('基因算法.種群大小'));
  if properties0<1 then properties0:=2;
  properties0:=((properties0+1 )div 2)*2;  // 2的倍數

  properties1:=GetKeyValue('基因算法.繁殖選擇壓力(0-1)');
  properties1:=(properties1+1)/properties0;
  if properties1>1 then properties1:=1 else if properties1<0 then properties1:=0;

  properties2:=GetKeyValue('基因算法.最大代數');
  if properties2<1 then properties2:=1;

  properties3:=GetKeyValue('基因算法.局部微調系數');

  properties4:=abs(GetKeyValue('基因算法.一致變異強度(強度和為種群大小)'));
  properties5:=abs(GetKeyValue('基因算法.非一致變異強度(局部微調)'));
  properties6:=abs(GetKeyValue('基因算法.單點一致交叉強度'));
  properties7:=abs(GetKeyValue('基因算法.啟發式交叉強度'));
  properties8:=abs(GetKeyValue('基因算法.一般算術交叉強度'));
  properties9:=abs(GetKeyValue('基因算法.完全算術交叉強度'));

  //強度 
  temp:=properties4+properties5+properties6+properties7+properties8+properties9;
  if temp=0 then
  begin
    properties4:=properties0 div 6;
    properties5:=properties4+(properties0 div 6);
    properties6:=properties5+(properties0 div 6);
    properties7:=properties6+(properties0 div 6);
    properties8:=properties7+(properties0 div 6);
    properties9:=properties0;
  end
  else
  begin
    properties4:=trunc(properties4*properties0/Temp );
    properties5:=properties4+trunc(properties5*properties0/Temp );
    properties6:=properties5+trunc(properties6*properties0/Temp );
    properties7:=properties6+trunc(properties7*properties0/Temp );
    properties8:=properties7+trunc(properties8*properties0/Temp );
    properties9:=properties0;
  end;
  properties9:=properties9-1;//留下一個名額給最優的基因


  //繁殖幾率
  setlength(Pr,(properties0));
  Temp:=properties1/(properties0-1);
  for i:=0 to (properties0)-1 do
  begin
    Pr[i]:=properties1-i*Temp;    // pr[0..properties0-1]的和為1
  end;
  {Temp:=0;
  for i:=0 to (properties0)-1 do
  begin
    temp:=Temp+pr[i];
  end;}
  //

  setLength(DNA,properties0);
  setLength(DNA_Temp,properties0);
  for i:=0 to properties0-1 do
  begin
    setLength(DNA[i],high(MyAbcList)+1);
    setLength(DNA_Temp[i],high(MyAbcList)+1);
  end;
  setLength(DNA_Order,properties0);
  setLength(OrderTemp,properties0);
  
  //循環
  NowTime:=windows.GetTickCount();
  MyTime:=NowTime;
  while MyTime=NowTime do   //不按“停止”鍵就一直運行
  begin
    application.ProcessMessages;

    //產生初始基因
    for j:=0 to high(MyAbcList) do
    begin
      DNA[0,j]:=MyAbcList[j].Default;
    end;
    for i:=1 to properties0-1 do
    begin
      for j:=0 to high(MyAbcList) do
      begin
        DNA[i,j]:=random*(MyAbcList[j].MaxV-MyAbcList[j].MinV)+MyAbcList[j].MinV;
      end;
    end;
    //
    
    t:=0;
    while t<=properties2 do
    begin
      t:=t+1;

      //計算適應值
      for i:=0 to properties0-1 do
      begin
        for j:=0 to high(MyAbcList) do
        begin
          MyAbcList[j].Default:=DNA[i,j];
          if MyAbcList[j].PType=2 then
            MyAbcList[j].Default:=trunc(MyAbcList[j].Default);
        end;
        DNA_Order[i].Value:=abs(GetFBValue(MyabcList));
        DNA_Order[i].ID:=i;
      end;
      //按適應值大小排名
      OrderBY(DNA_Order,OrderTemp); //從小到大排序

      if DNA_Order[0].Value<dMax then   //最優值
      begin
        dMax:=DNA_Order[0].Value;
        for j:=low(abcMax) to high(abcMax) do
          abcMax[j]:=DNA[DNA_Order[0].ID,j];
        application.ProcessMessages;
      end;

      //產生后代
      for j:=0 to high(MyAbcList) do //保留最優秀的基因
      begin
        DNA_Temp[properties0-1,j]:=DNA[DNA_Order[0].ID,j];
      end;
      for i:=0 to trunc(properties4)-1 do //一致變異
      begin
        GetK(k1,pr);
        for j:=0 to high(DNA[0]) do
          DNA_Temp[i,j]:=DNA[DNA_Order[k1].ID,j];
        K0:=random(high(DNA[0])+1);
        DNA_Temp[i,K0]:=random*(MyabcList[K0].MaxV-MyabcList[k0].MinV)+MyabcList[k0].MinV;
      end;

      for i:=trunc(properties4) to trunc(properties5)-1 do //非一致變異(局部微調)
      begin
        GetK(k1,pr);
        for j:=0 to high(DNA[0]) do
          DNA_Temp[i,j]:=DNA[DNA_Order[k1].ID,j];
        K0:=random(high(DNA[0])+1);
        TEmp:=DNA_Temp[i,k0];
        if random<0.5 then
        begin
          DetaX:=(MyabcList[k0].MaxV-TEmp)*random*power(1-t/properties2,properties3);
          DNA_Temp[i,k0]:=min(MyabcList[k0].MaxV,TEmp+DetaX);
        end
        else
        begin
          DetaX:=(TEmp-MyabcList[k0].MinV)*random*power(1-t/properties2,properties3);
          DNA_Temp[i,k0]:=max(MyabcList[k0].MinV,TEmp-DetaX);
        end;
      end;

      for i:=trunc(properties5) to trunc(properties6)-1 do //單點一致交叉
      begin
        GetK(k1,k2,pr);
        K0:=random(high(DNA[0])+1);
        for j:=0 to k0 do
          DNA_Temp[i,j]:=DNA[DNA_Order[k1].ID,j];
        for j:=k0+1 to high(DNA[0]) do
          DNA_Temp[i,j]:=DNA[DNA_Order[k2].ID,j];
      end;

      for i:=trunc(properties6) to trunc(properties7)-1 do //啟發式交叉
      begin
        GetK(k1,k2,pr);
        if DNA_Order[k1].Value<DNA_Order[k2].Value then
        begin
          for j:=0 to high(DNA[0]) do
          begin
            DNA_Temp[i,j]:=random*(DNA[DNA_Order[k1].ID,j]-DNA[DNA_Order[k2].ID,j])+DNA[DNA_Order[k1].ID,j];
            if DNA_Temp[i,j]>MyabcList[j].MaxV then DNA_Temp[i,j]:=MyabcList[j].MaxV;
            if DNA_Temp[i,j]<MyabcList[j].MinV then DNA_Temp[i,j]:=MyabcList[j].MinV;
          end;
        end
        else
        begin
          for j:=0 to high(DNA[0]) do
          begin
            DNA_Temp[i,j]:=random*(DNA[DNA_Order[k2].ID,j]-DNA[DNA_Order[k1].ID,j])+DNA[DNA_Order[k2].ID,j];
            if DNA_Temp[i,j]>MyabcList[j].MaxV then DNA_Temp[i,j]:=MyabcList[j].MaxV;
            if DNA_Temp[i,j]<MyabcList[j].MinV then DNA_Temp[i,j]:=MyabcList[j].MinV;
          end;
        end;
      end;   

      for i:=trunc(properties7) to trunc(properties8)-1 do //一般算術交叉
      begin
        GetK(k1,k2,pr);
        K0:=random(high(DNA[0])+1);
        Temp:=random;
        if random<0.5 then
        begin
          for j:=0 to k0 do
            DNA_Temp[i,j]:=DNA[DNA_Order[k1].ID,j];
          for j:=k0+1 to high(DNA[0]) do
          begin
            DNA_Temp[i,j]:=Temp*DNA[DNA_Order[k1].ID,j]+(1-Temp)*DNA[DNA_Order[k2].ID,j];
            if DNA_Temp[i,j]>MyabcList[j].MaxV then DNA_Temp[i,j]:=MyabcList[j].MaxV;
            if DNA_Temp[i,j]<MyabcList[j].MinV then DNA_Temp[i,j]:=MyabcList[j].MinV;
          end;
        end
        else
        begin
          for j:=0 to k0 do
          begin
            DNA_Temp[i,j]:=Temp*DNA[DNA_Order[k1].ID,j]+(1-Temp)*DNA[DNA_Order[k2].ID,j];
            if DNA_Temp[i,j]>MyabcList[j].MaxV then DNA_Temp[i,j]:=MyabcList[j].MaxV;
            if DNA_Temp[i,j]<MyabcList[j].MinV then DNA_Temp[i,j]:=MyabcList[j].MinV;
          end;
          for j:=k0+1 to high(DNA[0]) do
            DNA_Temp[i,j]:=DNA[DNA_Order[k1].ID,j];
        end;
      end;

   for i:=trunc(properties8) to trunc(properties9)-1 do //完全算術交叉
      begin
        GetK(k1,k2,pr);
        Temp:=random;
        for j:=0 to high(DNA[0]) do
        begin
          DNA_Temp[i,j]:=Temp*DNA[DNA_Order[k1].ID,j]+(1-Temp)*DNA[DNA_Order[k2].ID,j];
          if DNA_Temp[i,j]>MyabcList[j].MaxV then DNA_Temp[i,j]:=MyabcList[j].MaxV;
          if DNA_Temp[i,j]<MyabcList[j].MinV then DNA_Temp[i,j]:=MyabcList[j].MinV;
        end;
      end;

      
      //復制
      for i:=0 to properties0-1 do
      begin
        for j:=0 to high(DNA[0]) do
          DNA[i,j]:=DNA_Temp[i,j];
      end;

      //系統
      application.ProcessMessages;
      while runPause=true do
      begin
        application.ProcessMessages;
        sleep(1);
      end;
      application.ProcessMessages;
      if MyTime<>NowTime then exit;
      application.ProcessMessages;

    end;//while t<=properties2 do
  end;//while MyTime=NowTime do
end;


end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲婷婷免费| 国产成人精品免费| 亚洲图片欧美一区| 一区二区三国产精华液| 亚洲精品成人精品456| 日韩一区有码在线| 亚洲美女偷拍久久| 亚洲制服丝袜av| 亚洲444eee在线观看| 日韩av高清在线观看| 美女一区二区在线观看| 麻豆精品视频在线观看视频| 精品亚洲成a人| 国产乱人伦精品一区二区在线观看| 国内精品国产三级国产a久久| 国产一区二区三区在线观看免费视频 | 欧美高清视频一二三区| 欧美日韩国产欧美日美国产精品| 欧美日韩一区三区| 欧美一区二区三区人| 精品三级在线观看| 国产精品热久久久久夜色精品三区| 国产精品美女一区二区在线观看| 亚洲三级在线播放| 午夜精品久久久久久久久| 久久se这里有精品| 9l国产精品久久久久麻豆| 91精品福利在线| 91精品国产欧美一区二区成人| 欧美videos中文字幕| 国产精品不卡在线| 亚洲成av人片在线观看| 日韩福利视频导航| 成人精品gif动图一区| 在线观看免费视频综合| 欧美videos大乳护士334| 国产精品久久久久影院| 天天综合色天天| 国产精品一二三在| 91蜜桃网址入口| 欧美一区二区三区免费在线看| 欧美精品一区二区不卡| 亚洲四区在线观看| 日本在线观看不卡视频| www.亚洲色图.com| 欧美一个色资源| 国产免费观看久久| 午夜日韩在线电影| 国产成人在线视频网站| 欧美日本不卡视频| 欧美国产视频在线| 男女性色大片免费观看一区二区| 成人免费高清在线观看| 日韩一区二区精品| 亚洲人被黑人高潮完整版| 男女激情视频一区| 色婷婷久久一区二区三区麻豆| 日韩一级欧美一级| 亚洲精品日产精品乱码不卡| 国模大尺度一区二区三区| 欧美日韩精品是欧美日韩精品| 国产偷v国产偷v亚洲高清| 日韩av一区二区三区| 色综合一个色综合| 久久亚洲精品小早川怜子| 亚洲超碰97人人做人人爱| 成人免费视频视频| 日韩免费高清视频| 午夜精品福利一区二区三区蜜桃| av不卡免费电影| 久久婷婷国产综合国色天香| 五月天中文字幕一区二区| 99视频精品在线| 国产午夜亚洲精品午夜鲁丝片| 日精品一区二区三区| 在线观看国产精品网站| 国产精品蜜臀在线观看| 精品写真视频在线观看| 欧美精品黑人性xxxx| 亚洲乱码国产乱码精品精98午夜 | 欧美午夜不卡视频| 国产精品三级视频| 国产精品一卡二卡在线观看| 日韩一区二区影院| 亚洲成av人片在线| 欧美综合亚洲图片综合区| 中文字幕在线观看一区| 成人小视频在线观看| 久久久久久久久久久电影| 看国产成人h片视频| 91精品国产综合久久久久久久久久 | 成年人午夜久久久| 国产日韩高清在线| 国产伦精一区二区三区| 精品福利一区二区三区| a级高清视频欧美日韩| 久久天堂av综合合色蜜桃网| 久久99国产精品免费| 欧美一区二区女人| 三级欧美在线一区| 欧美日韩国产另类不卡| 香蕉成人伊视频在线观看| 欧美三区在线观看| 日韩电影网1区2区| 91精品国产色综合久久ai换脸| 午夜久久久久久久久久一区二区| 欧美人牲a欧美精品| 亚洲成人av电影在线| 3d动漫精品啪啪1区2区免费| 日韩av网站免费在线| 欧美本精品男人aⅴ天堂| 黄色精品一二区| 久久久电影一区二区三区| 国产福利电影一区二区三区| 国产精品天美传媒| 99re热这里只有精品免费视频 | 成人美女视频在线观看| 亚洲欧美日韩国产综合| 在线亚洲精品福利网址导航| 性感美女久久精品| 日韩欧美一区二区视频| 国产一区二区三区免费看| 国产三级精品三级| av在线不卡观看免费观看| 亚洲视频在线一区二区| 欧美日韩一本到| 久久99国产精品久久| 国产精品久久精品日日| 欧美色图激情小说| 蜜臀99久久精品久久久久久软件| 久久久久国产免费免费| 色婷婷综合久久久中文一区二区| 天堂av在线一区| 久久午夜电影网| 一本久久精品一区二区| 婷婷中文字幕一区三区| 久久精品一区蜜桃臀影院| 色综合天天性综合| 日韩av在线播放中文字幕| 国产午夜精品一区二区三区四区| 色综合久久88色综合天天| 欧美a级理论片| 国产精品第五页| 337p亚洲精品色噜噜狠狠| 国产成人综合视频| 亚洲国产精品尤物yw在线观看| 精品国产一区二区亚洲人成毛片| 成人免费看黄yyy456| 日韩影院在线观看| 国产精品全国免费观看高清| 7777女厕盗摄久久久| 国产成人精品亚洲午夜麻豆| 亚洲午夜精品17c| 国产视频视频一区| 91麻豆精品91久久久久同性| 成人免费毛片嘿嘿连载视频| 五月婷婷激情综合网| 国产精品久久久一区麻豆最新章节| 在线成人高清不卡| av午夜精品一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 成人欧美一区二区三区在线播放| 精品少妇一区二区三区日产乱码| 在线中文字幕一区| 成人精品国产福利| 激情另类小说区图片区视频区| 亚洲美女视频一区| 国产亚洲福利社区一区| 欧美丰满一区二区免费视频| 成人av午夜电影| 国内成+人亚洲+欧美+综合在线| 亚洲福利国产精品| 亚洲天堂精品在线观看| 国产视频在线观看一区二区三区| 欧美一区二区视频免费观看| 91福利在线免费观看| 成人av在线影院| 国产乱子伦视频一区二区三区 | 懂色av一区二区三区蜜臀| 美国欧美日韩国产在线播放| 亚洲精选免费视频| 欧美高清在线一区二区| 久久综合精品国产一区二区三区| 91精品国产乱| 欧美亚洲综合另类| 色综合久久九月婷婷色综合| 成人久久18免费网站麻豆| 国产精品一区二区免费不卡 | 99久久99久久综合| 国产精品一区2区| 黄色小说综合网站| 激情综合五月婷婷| 日本欧美一区二区| 午夜精品久久久久久久99樱桃 | 福利视频网站一区二区三区| 国内不卡的二区三区中文字幕| 美女一区二区在线观看| 蜜桃在线一区二区三区| 青青草成人在线观看| 日韩电影免费在线看|