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

# 这里的逻辑非常直观:
# 粒子会同时被"自己的最高分"和"全班最高分"拉扯,最终在震荡中收敛到最优解。
相关推荐
bloglin9999914 小时前
向量大模型升级可能改变向量空间(需要回归)
人工智能·数据挖掘·回归
CN-Dust14 小时前
【C++专题】格式化输出与输入
开发语言·c++·算法
m0_6028577614 小时前
Chart.js 4 中实现基于数据极值的垂直线性渐变填充
jvm·数据库·python
AI技术增长14 小时前
Pytorch图像去噪实战(三):ResUNet图像去噪模型实战,解决UNet深层训练不稳定问题
人工智能·pytorch·深度学习
夏恪14 小时前
如何计算SQL同比环比数据_利用窗口函数LAG与LEAD
jvm·数据库·python
Titan202414 小时前
C++位图学习笔记
c++·笔记·学习
念恒1230614 小时前
Python(运算与操作)
python·学习
TDengine (老段)14 小时前
工业软件的未来:构建在工业数据底座之上的 AI Agent
大数据·数据库·人工智能·时序数据库·tdengine
qq_3493174814 小时前
Tailwind CSS如何自定义间距数值_配置theme spacing扩展CSS边距
jvm·数据库·python
aLTttY14 小时前
Spring Boot集成AI大模型实战:从0到1打造智能应用
人工智能·spring boot·后端