实现了一个基于 Soft Actor-Critic(SAC)算法的强化学习训练框架,并结合了模仿学习(Imitation Learning,IL)的功能。主要用于训练一个智能体在特定环境中进行决策,以最大化累积奖励。
完整项目代码下载:https://download.csdn.net/download/huanghm88/89909280
# coding = UTF-8
import re
import datetime
import envobject_cylinder
import argparse
import os
import numpy as np
import torch
import pprint
from torch.utils.tensorboard import SummaryWriter
import gym
import pickle
from tianshou.data import VectorReplayBuffer,Collector,AsyncCollector
from tianshou.policy import SACPolicy,ImitationPolicy
from tianshou.env import DummyVectorEnv,SubprocVectorEnv,RayVectorEnv,ShmemVectorEnv
from tianshou.trainer import offpolicy_trainer
from tianshou.utils import TensorboardLogger, WandbLogger
from tianshou.utils.net.common import Net
from tianshou.utils.net.continuous import ActorProb, Critic
import warnings
warnings.filterwarnings("ignore")# define parameters Define some hyper-parameters:
def get_args():parser = argparse.ArgumentParser()parser.add_argument('--task', type=str, default='OpenFoam-v0')parser.add_argument('--reward-threshold', type=float, default=15.8)parser.add_argument('--seed', type=int, default=10)parser.add_argument('--buffer-size', type=int, default=100000)parser.add_argument('--actor-lr', type=float, default=2e-4)parser.add_argument('--critic-lr', type=float, default=3e-4)parser.add_argument('--il-lr', type=float, default=1e-3)parser.add_argument('--gamma', type=float, default=0.97)parser.add_argument('--tau', type=float, default=0.005)parser.add_argument('--alpha', type=float, default=0.5)parser.add_argument('--auto-alpha', type=int, default=1)parser.add_argument('--alpha-lr', type=float, default=3e-4)parser.add_argument('--epoch', type=int, default=1000)parser.add_argument('--step-per-epoch', type=int, default=500)parser.add_argument('--il-step-per-epoch', type=int, default=1)parser.add_argument('--step-per-collect', type=int, default=20)parser.add_argument('--update-per-step', type=float, default=0.1)parser.add_argument('--batch-size', type=int, default=512)parser.add_argument('--hidden-sizes', type=int, nargs='*', default=[512,256])parser.add_argument('--imitation-hidden-sizes', type=int, nargs='*', default=[512, 256])parser.add_argument('--training-num', type=int, default=5)parser.add_argument('--test-num', type=int, default=1)parser