第三阶段:进化与群体智能 (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

# 这里的逻辑非常直观:
# 粒子会同时被"自己的最高分"和"全班最高分"拉扯,最终在震荡中收敛到最优解。
相关推荐
淘矿人1 小时前
【claude】05_Claude Skill 实战案例精选(上):开发类技能+weelinking中转服务
大数据·人工智能·python·elasticsearch·搜索引擎·cloudera
萤丰信息1 小时前
智慧园区:数智赋能,重构城市运营新生态
人工智能·科技·安全·重构·架构·智慧城市·智慧园区
kisshuan123961 小时前
[特殊字符] RollingDepth:单目视频深度估计算法解析
算法·音视频
ejinxian2 小时前
Go语言完整学习规划(2026版)- Part 1
学习·go
丁华林智能生产2 小时前
2026年无人机倍速链流水线厂家怎么挑?
人工智能·自动化·无人机·制造
正在走向自律2 小时前
AI视频生成:从文本到动态画面的技术演进
人工智能·hunyuanvideo引擎·ai视频技术
伟大的大威2 小时前
【AI 集群实战】多节点 DGX Spark 集群共享大模型
大数据·人工智能·spark
gihigo19982 小时前
SSA奇异谱分解:时频域信号成分分析与重构
数据结构·算法·重构
HIT_Weston2 小时前
9、【AI】【Agent】联网使用大模型(DashScope&ModelStudio)
人工智能