强化学习系列文章(二十五):利用遗传规划算法解决CartPole问题

强化学习系列文章(二十五):利用遗传规划算法解决CartPole问题

主程序

import gym
import numpy as np
import cgp
from cgp import *
import matplotlib.pyplot as plt

n_eps = 300
Mu = 10
Lambda = 40

env = gym.make('CartPole-v1')
env = env.unwrapped

r_list = []
pop = create_population(Mu+Lambda)
for e in range(n_eps):
    for ind in pop:
        obs = env.reset()
        done = False
        reward = 0
        while not done:
            x, xx, w, ww = obs
            action = 0 if ind.eval(x, xx, w, ww) > 0 else 1
            obs,r,done,_ = env.step(action)
            reward += r
            if reward >= 1500: break
        ind.fitness = reward
        
    pop = evolve(pop, 0.015, Mu, Lambda)
    print(e,'\t',pop[0].fitness)
    r_list.append(pop[0].fitness)

plt.plot(r_list)
plt.show()

遗传规划cgp.py

"""
Cartesian genetic programming
"""
import operator as op
import random
import copy
import math
from settings import VERBOSE, N_COLS, LEVEL_BACK


class Function:
    """
    A general function
    arity: 函数的输入参数的数量
    """

    def __init__(self, f, arity, name=None):
        self.f = f
        self.arity = arity
        self.name = f.__name__ if name is None else name

    def __call__(self
### AI控制技术及其实现方法 人工智能(AI)中的控制技术主要涉及如何通过算法和模型来完成特定的任务目标。以下是几种常见的AI控制技术和其实现方法: #### 1. 基于规则的控制系统 基于规则的控制系统是一种经典的AI控制方式,它依赖预定义的知识库和逻辑推理机制来进行决策。这种系统通常适用于具有明确规则和约束条件的应用场景。例如,在工业自动化领域,可以通过编写一系列“如果...那么”的规则来指导机器的行为[^1]。 ```python def rule_based_control(input_data): rules = { 'temperature_high': lambda x: x['temp'] > 80, 'pressure_low': lambda x: x['pressure'] < 50 } actions = [] for condition, check in rules.items(): if check(input_data): actions.append(condition) return actions ``` #### 2. 强化学习 强化学习是一种让智能体通过与环境交互并从中获得奖励信号的学习范式。这种方法特别适合解决动态变化环境中复杂的控制问题,比如自动驾驶汽车或者机器人导航。在强化学习框架下,智能体会尝试不同的动作策略以最大化累积回报值[^1]。 ```python import gym from stable_baselines3 import DQN env = gym.make('CartPole-v1') model = DQN('MlpPolicy', env, verbose=1) model.learn(total_timesteps=10_000) obs = env.reset() for i in range(1000): action, _states = model.predict(obs, deterministic=True) obs, reward, done, info = env.step(action) if done: obs = env.reset() ``` #### 3. 深度神经网络 利用深度学习构建的人工神经网络可以用来处理高维度输入数据,并自动提取特征进行分类或回归预测等任务。对于一些复杂系统的精确建模以及实时在线调整参数等方面表现出色。例如卷积神经网络(CNNs)常被应用于图像识别;循环神经网络(RNNs)/长短时记忆(LSTM)则更多见诸序列数据分析之中[^1]。 ```python from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense model = Sequential([ Dense(64, activation='relu', input_shape=(input_dim,)), Dense(output_dim, activation='softmax') ]) model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) history = model.fit(x_train, y_train, epochs=10, batch_size=32) ``` #### 4. 进化计算 进化算法模仿自然界生物遗传变异规律设计而成的一类随机全局优化搜索技术。它们能够在未知解空间寻找最优个体集合过程中体现出强大的鲁棒性和适应性特点。因此非常适合求解那些难以解析表达式的非线性规划难题或者是多目标权衡下的综合性能指标最优化等问题[^1]。 ```python from deap import base, creator, tools, algorithms creator.create("FitnessMax", base.Fitness, weights=(1.0,)) creator.create("Individual", list, fitness=creator.FitnessMax) toolbox = base.Toolbox() # Attribute generator toolbox.register("attr_float", random.uniform, -10, 10) # Structure initializers toolbox.register("individual", tools.initRepeat, creator.Individual, toolbox.attr_float, n=IND_SIZE) toolbox.register("population", tools.initRepeat, list, toolbox.individual) result_population = algorithms.eaSimple(population, toolbox, cxpb=CXPB, mutpb=MUTPB,ngen=NGEN)[0] ``` 问题
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值