Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

遺伝的アルゴリズム

 遺伝的アルゴリズム

Transcript

  1. AIと統計処理について考える AIについて 
 
 ▪ AI(人工知能)の定義とは 
 
 
 


    
 ▪ 統計学の定義についても 
 
 
 
 
 コンピュータなどの機械が人間の知能が必要と考えられてる活動を 実現するための能力 統計学は、経験的に得られたバラツキのあるデータから、数値上の性質や規則 性あるいは不規則性を見いだす学問
  2. AIと統計処理について考える AIと統計処理 
 
 ▪ これまでは統計アルゴリズムを使い アソシエーション分析 からお勧めの商品の選出などを行ってきました 
 


    
 
 
 
 
 ▪ AIと統計は言葉が違いますがバラツキのあるデータから結果 を求めるという 基本的な内容は同じです 
 AIは統計学の中の 学習するという意味が強い1部でしかなく 言葉は違いますが広義では統計学となります
  3. 遺伝的アルゴリズム 遺伝的アルゴリズム概要 
 
 ▪ 生物の進化は世代交代を繰り返すごとに染色体の情報をクロ スオーバーし、環境などに適応するよう常に進化します 
 ▪ この動きをアルゴリズムとして表現したものが遺伝的アルゴ

    リズムとなります 
 
 
 
 
 
 
 
 
 
 親A A1 A2 A3 A4 A5 親B B1 B2 B3 B4 B5 クロスオーバー! 子 A1 B2 A3 B4 A5 突然変異!! X2 X5 ▪ 突然変異は、自然界が新しいものを試す手法です 
  改良が有用であれば以降の世代にも引き継がれていきます 

  4. 進化の過程 遺伝的アルゴリズムの進化 
 
 ▪ 遺伝的アルゴリズムを実装する作業は以下の4段階に分かれま す
 
 
 


    
 
 
 
 
 
 第1世代 適正評価 選択 進化 すべての固体に初期特性を与えま す 固体のメンバーのもっとも成功した 固体を評価します 次の世代を作成するための特定 の固体の選定を行います 新しい適応性に優れた世代を生み 出します 進化を 繰り返す
  5. メモ① int main(void){ // ### 第1世代生成 ### m_ga= new MyGA(POPULATION,

    GENOME_LENGTH, ELITE_RATE, MUTATION_RATE, CROSSOVER_RATE); evaluation(); cout << endl <<"GENERATION " << 0 << endl; m_ga->display_ave_max_min_fitness(); m_ga->display_all_genomes(); for(unsigned int generation = 1 ; generation < MAX_GENERATION ; generation++){ evaluation(); // ### 適正評価 ### m_ga->elite_preserve(); m_ga->roullett_selection(); // ### 選択 ### m_ga->onepoint_crossover(); // ### 進化 ### m_ga->all_mutation(); // 突然変異 m_ga->elite_placeback(); evaluation(); // ### 適正評価 ### if(generation %DISPLAY_FRAME == 0){ // 表示 cout << endl <<"GENERATION " << generation << endl; m_ga->display_ave_max_min_fitness(); m_ga->display_all_genomes(); } } }
  6. メモ① 遺伝子をセットしたりゲットしたりする 
 virtual void get_genome(const int n, vector &

    g); 
 virtual void set_genome(const int n, const vector & g); 
 virtual double get_fitness(const int n); 
 virtual void set_fitness(const int n, const double r); 
 virtual double get_average_fitness(); 
 virtual double get_maximum_fitness(); 
 virtual double get_minimum_fitness(); 
 
 エリート保存、エリート戻し、ルーレット戦略 
 virtual void elite_preserve(); 
 virtual void elite_placeback(); 
 virtual void roullett_selection(); 
 

  7. メモ② 突然変異、一点交叉 
 virtual void all_mutation(); 
 virtual void onepoint_crossover();

    
 
 ソート(昇順、降順) 
 virtual void sort_individuals_by_fitness_descending_order(); 
 virtual void sort_individuals_by_fitness_ascending_order(); 
 
 表示用ツール 
 virtual void display_genome(const int n); 
 virtual void display_all_genomes(); 
 virtual void display_ave_max_min_fitness(); 
 virtual void display_elites();