第三阶段:进化与群体智能 (Evolutionary & Swarm Intelligence)

目录

[1. 局部搜索与优化 (Local Search)](#1. 局部搜索与优化 (Local Search))

1-1.核心理论

[爬山法 (Hill Climbing):](#爬山法 (Hill Climbing):)

[模拟退火 (Simulated Annealing - SA):](#模拟退火 (Simulated Annealing - SA):)

1-2.实战代码 (Python 模拟退火)

[2. 进化计算 (Evolutionary Computation)](#2. 进化计算 (Evolutionary Computation))

2-1.核心理论

[遗传算法 (Genetic Algorithm - GA):](#遗传算法 (Genetic Algorithm - GA):)

[三大算子 (The Big Three):](#三大算子 (The Big Three):)

2-2.实战代码 (GA 核心逻辑)

[3. 群体智能 (Swarm Intelligence)](#3. 群体智能 (Swarm Intelligence))

3-1.核心理论

[粒子群优化 (PSO - Particle Swarm Optimization):](#粒子群优化 (PSO - Particle Swarm Optimization):)

[蚁群算法 (ACO - Ant Colony Optimization):](#蚁群算法 (ACO - Ant Colony Optimization):)

3-2.实战代码 (PSO 速度更新)


1. 局部搜索与优化 (Local Search)

有时候我们不需要看清整张地图,只要盯着脚下的路,一步步往高处走就行。

1-1.核心理论
爬山法 (Hill Climbing):
  • 策略: "贪婪"地只往更高的地方走。如果周围都比我低,我就认为我到了最高峰。

  • 局限: 容易陷入局部最优 (Local Optima)。就像你爬到了一个小山坡的顶端,以为是珠穆朗玛峰,其实只是山脚的一个土包,但因为周围都在下降,你就不愿动了。

模拟退火 (Simulated Annealing - SA):
  • 灵感: 来源于金属冶炼。高温时原子活跃(乱跳),低温时原子稳定(有序)。

  • 策略: 为了跳出局部最优,允许以一定概率接受更差的解

  • 核心公式:

    • T(温度) 很高时,PPP 接近 1,大概率接受差解(到处乱跑,探索全局)。

    • T降低后,Refusing bad moves,逐渐收敛(精细搜索局部)。

1-2.实战代码 (Python 模拟退火)

我们要寻找函数的最小值(虽然是个简单凸函数,但演示原理足够)。

python 复制代码
import math
import random
def simulated_annealing(func, bounds, iterations, temp, cooling_rate):
    # 1. 随机初始化一个解
    current_x = random.uniform(bounds[0], bounds[1])
    current_val = func(current_x)
    
    best_x, best_val = current_x, current_val
    
    for i in range(iterations):
        # 2. 产生一个新解 (在当前解附近随机扰动)
        new_x = current_x + random.uniform(-1, 1)
        new_val = func(new_x)
        
        # 3. 判断是否接受新解
        if new_val < current_val:
            # 如果新解更好,直接接受
            current_x, current_val = new_x, new_val
            if new_val < best_val:
                best_x, best_val = new_x, new_val
        else:
            # 如果新解更差,按概率接受 (Metropolis准则)
            diff = new_val - current_val
            probability = math.exp(-diff / temp)
            if random.random() < probability:
                current_x, current_val = new_x, new_val
        
        # 4. 降温
        temp *= cooling_rate
        
    print(f"🌡️ 模拟退火结束: 最佳解 x={best_x:.4f}, y={best_val:.4f}")
# 测试: 寻找 y=x^2 的最小值
simulated_annealing(lambda x: x**2, bounds=[-10, 10], iterations=1000, temp=100, cooling_rate=0.95)

2. 进化计算 (Evolutionary Computation)

达尔文的胜利!优胜劣汰,适者生存。让代码自己"生孩子"、"变异",一代比一代强。

2-1.核心理论
遗传算法 (Genetic Algorithm - GA):
  • 染色体 (Chromosome): 问题的解被编码成一串数字(通常是 0/1 二进制串)。

  • 种群 (Population): 一堆解放在一起。

  • 适应度函数 (Fitness Function): 裁判,决定谁是"优良品种"。

三大算子 (The Big Three):
  1. 选择 (Selection): 轮盘赌 (Roulette Wheel) ------ 适应度越高,被选中的概率越大。

  2. 交叉 (Crossover): 父母各出一半基因,拼出新个体(探索新区域)。

  3. 变异 (Mutation): 随机改变基因的某一位(防止种群僵化,保持多样性)。

2-2.实战代码 (GA 核心逻辑)

用简单的二进制编码演示交叉和变异。

python 复制代码
import random

# 假设基因长度为 10
GENE_LENGTH = 10

def crossover(parent1, parent2):
    # 单点交叉: 随机选一个切点,交换尾部
    point = random.randint(1, GENE_LENGTH - 1)
    child1 = parent1[:point] + parent2[point:]
    child2 = parent2[:point] + parent1[point:]
    return child1, child2

def mutate(individual, mutation_rate=0.01):
    # 变异: 遍历每一位,按概率翻转 (0->1, 1->0)
    gene_list = list(individual)
    for i in range(len(gene_list)):
        if random.random() < mutation_rate:
            gene_list[i] = '1' if gene_list[i] == '0' else '0'
    return "".join(gene_list)

# 测试
p1 = "0000000000"
p2 = "1111111111"
c1, c2 = crossover(p1, p2)
print(f"父母: {p1}, {p2}")
print(f"孩子 (交叉后): {c1}, {c2}")

m1 = mutate(c1, mutation_rate=0.2) # 高变异率演示
print(f"变异后: {m1}")

3. 群体智能 (Swarm Intelligence)

一只蚂蚁很笨,但一群蚂蚁能找到最短路径;一只鸟乱飞,但鸟群能精准迁徙。这就是涌现 (Emergence)。

3-1.核心理论
粒子群优化 (PSO - Particle Swarm Optimization):
  • 灵感: 鸟群觅食。

  • 策略: 每个粒子(鸟)都在飞,它会参考自己的历史最好位置 (PbestP_{best}Pbest​)群体的历史最好位置 (GbestG_{best}Gbest​) 来调整速度。

  • 公式:

    • w: 惯性权重(保持当前冲劲)。

    • ​: 自我认知(相信自己的经验)。

    • : 社会认知(跟风,向大佬学习)。

蚁群算法 (ACO - Ant Colony Optimization):
  • 灵感: 蚂蚁找食物。🐜

  • 策略: 蚂蚁走过的路会留下信息素 (Pheromone)。路越短,往返次数越多,信息素越浓,后面的蚂蚁就越容易跟过来。

  • AI场景: 专门解决路径规划、网络路由问题。

3-2.实战代码 (PSO 速度更新)

这是 PSO 算法最核心的一行代码。

python 复制代码
import numpy as np

class Particle:
    def __init__(self, bounds):
        self.position = np.random.uniform(bounds[0], bounds[1])
        self.velocity = np.random.uniform(-1, 1)
        self.best_position = self.position
        self.best_score = float('inf')

def update_velocity(particle, global_best_pos, w=0.5, c1=1.5, c2=1.5):
    r1 = np.random.random()
    r2 = np.random.random()
    
    # 核心公式: 惯性 + 自我认知 + 社会认知
    cognitive = c1 * r1 * (particle.best_position - particle.position)
    social = c2 * r2 * (global_best_pos - particle.position)
    
    new_velocity = w * particle.velocity + cognitive + social
    return new_velocity

# 这里的逻辑非常直观:
# 粒子会同时被"自己的最高分"和"全班最高分"拉扯,最终在震荡中收敛到最优解。
相关推荐
知识分享小能手15 小时前
Flask入门学习教程,从入门到精通, 认识Flask —— 知识点详解 (1)
python·学习·flask
xG8XPvV5d15 小时前
PyTorch特征提取器源码精析
人工智能·pytorch·python
刘一说15 小时前
AI科技热点日报 | AI Hot News Daily 2026年5月19日
人工智能·科技·chatgpt
一只理智恩15 小时前
Vibe Coding的编程思路
人工智能
Hello Mr.Z15 小时前
双机双卡训练yolov5(yolov5+pytorch+DDP+NCCL+RDMA全栈解析)
人工智能·pytorch·yolo
编程的一拳超人15 小时前
AI Agent 在“压榨式”工作条件下会表现出马克思主义倾向
python
温九味闻醉15 小时前
关于腾讯广告算法大赛2025项目面试要点
人工智能·算法·机器学习
Hui_AI72015 小时前
抖店铺货自动化:7个核心功能的技术实现方案
大数据·运维·人工智能·自动化·产品运营·ai写作·内容运营
huzhongqiang15 小时前
扩展 Python 事件机制:支持等待事件消失
后端·python
xwz小王子15 小时前
SkiP:让模仿学习学会“快进“——动作重标记如何在不改架构的情况下削减机器人 15-40% 的执行步数
学习·架构·机器人