遺伝的アルゴリズム

🔥 Vibe プロンプト

「ビット列を進化させて'11111111...'(64ビット)に一致。トーナメント選択、一点交叉、突然変異を使用。」

import random

def ga(target_len=64, pop_size=100, gens=100):
    target = [1] * target_len
    def fitness(ind): return sum(i == t for i, t in zip(ind, target))
    def create(): return [random.randint(0,1) for _ in range(target_len)]
    
    pop = [create() for _ in range(pop_size)]
    
    for gen in range(gens):
        scores = [(fitness(ind), ind) for ind in pop]
        scores.sort(reverse=True)
        if scores[0][0] == target_len:
            print(f"世代 {gen} で完全解!")
            break
        new_pop = [scores[0][1], scores[1][1]]
        while len(new_pop) < pop_size:
            parents = random.choices(pop, weights=[f+1 for f,_ in scores], k=2)
            cross = random.randint(0, target_len)
            child = parents[0][:cross] + parents[1][cross:]
            if random.random() < 0.01:
                child[random.randint(0, target_len-1)] ^= 1
            new_pop.append(child)
        pop = new_pop
        if gen % 20 == 0:
            print(f"世代 {gen}: 最高適応度 = {scores[0][0]}/{target_len}")

print(f"最終適応度: {result}/64")

応用

  • ニューラルアーキテクチャ検索
  • 金融取引戦略
  • ロボット制御設計
  • 特徴量選択

重要なポイント

  • コアコンセプトをしっかり理解する
  • ハンズオンコード例で実践する
  • 実世界の問題に応用する
  • 演習で知識を強化する

さらに学ぶ

  • 公式ドキュメント
  • GitHubのオープンソースプロジェクト
  • コミュニティフォーラムとディスカッション
  • 関連コースとチュートリアル

完全なチュートリアルをロック解除

このチャプターは有料コンテンツです。プロジェクトに参加して、10以上の神レベルのPromptや実際のソースコード例を含む、5000字以上の深い分析をロック解除してください!