1. Actor-Critic 模块
- 主要文件:
AC.py
,PolicyNet.py
,ValueNet.py
- 作用:该模块实现了 A2C(Advantage Actor-Critic)强化学习算法。其中,
ActorCritic
类是核心,它同时管理策略网络(Actor)和价值网络(Critic)。 - 逻辑:
- 策略网络(PolicyNet) 负责根据当前状态预测采取不同动作的概率。
- 价值网络(ValueNet) 负责评估当前状态的价值,帮助强化学习决策。
- AC.py 文件负责整合这两个网络,通过与环境交互不断更新策略和价值网络。
- 核心功能:
take_action
方法:根据当前状态选择最优动作。update
方法:基于获得的经验(状态、动作、奖励等)来更新 Actor 和 Critic 的参数。
- 输出:模型的动作选择以及不断优化的策略和价值评估。
2. 环境交互模块(env 文件夹)
- 主要文件:
step.py
- 作用:定义强化学习环境的
step
函数,环境与算法通过该函数进行交互。 - 逻辑:
- 根据动作选择优化算法(PSO、GWO、SCA 等),并根据算法的结果更新环境状态。
- 每次迭代都会计算奖励,并更新状态。
- done 标志 表示任务是否完成,通常在达到特定条件时标记任务完成。
- 核心功能:
- 动作对应不同的优化算法,每个动作都会触发相应的算法执行并返回新的状态、奖励等信息。
- 奖励的计算基于适应度函数,优化解的适应度越好,奖励越高。
3. 优化算法模块(Algorithm 文件夹)
- 主要文件:
PSO.py
,GWO.py
,SCA.py
,FA.py
,TSA.py
,WDO.py
- 作用:实现不同的启发式优化算法,这些算法被 A2C 算法选择作为动作的一部分,用于优化问题的解。
- 逻辑:
- 各种优化算法模拟不同的自然现象或生物行为,如粒子群、灰狼、风驱动等,帮助在解空间中寻找最优解。
- 每个优化算法都通过特定的规则调整群体个体的位置或参数,以逼近全局最优解。
- 核心功能:
- 通过各自算法(如 PSO 的粒子位置更新,GWO 的狼群追猎等)来不断优化解,找到适应度最高的解。
- 最终返回优化后的最优解和适应度。
4. 训练模块(train.py)
- 作用:训练整个模型,结合 A2C 强化学习和优化算法,持续迭代以找到最优解。
- 逻辑:
- 初始化时使用多个优化算法生成初始解,通过并行运行这些算法来加速训练过程。
- A2C 算法通过策略网络选择动作(即使用哪种优化算法),然后通过
step
函数执行动作。 - 每次迭代更新策略网络和价值网络的参数,并记录训练过程中的奖励和适应度值。
- 核心功能:
- 多进程并行优化算法,提升计算效率。
- 通过 SummaryWriter 记录日志,便于后续的可视化分析。
5. 工具类模块(utils 文件夹)
- 主要文件:
massCalculation.py
,move.py
,calculate_total_distance.py
, 等 - 作用:存放各种辅助工具函数,如个体位置更新、距离计算、数据处理等。
- 逻辑:
- 工具类函数被算法和主逻辑调用,提供底层支持。
- 例如:
calculate_total_distance.py
计算旅行商问题(TSP)中的路径总距离,move.py
更新个体的位置和速度。
- 核心功能:
- 提供优化算法的基础计算工具,如距离计算、位置更新等。
6. 测试模块(test 文件夹)
- 主要文件:
test1.py
,test2ac.py
,study.py
- 作用:测试不同算法的性能,并结合 A2C 算法进行验证。
- 逻辑:
- 通过调用不同优化算法解决旅行商问题(TSP)等优化问题,评估算法的性能。
- 结合 A2C 算法的测试,评估强化学习与优化算法的结合效果。
- 核心功能:
- 输出测试结果,如最优路径、适应度值,并可视化结果。
7. 日志与模型存储模块(log 和 runs 文件夹)
- 作用:存储训练过程中的日志、模型参数、训练检查点等。
- 逻辑:
- log 文件夹 记录了训练过程中的损失值、适应度值等信息,帮助监控模型训练效果。
- runs 文件夹 存储模型检查点,允许训练中断后恢复模型,也用于 TensorBoard 可视化。
-
1、初始阶段:
- 当模型初始开始训练时,策略网络还没有经验,它可能会根据初始化的策略随机选择某个动作(即选择某个优化算法)执行。例如,可能随机选择 PSO 或 GWO。
-
2、执行动作(优化算法):
- 一旦策略网络选择了某个优化算法作为动作,系统就会执行该算法。这时,优化算法会在解空间中寻找解并返回其适应度值。
- 比如,如果选择了 PSO,则会调用
PSO.py
中的粒子群算法来优化问题。
-
3、环境反馈:
- 每次执行一个优化算法后,系统会通过 环境交互模块(step.py) 得到当前状态的反馈,也就是通过适应度函数获得一个奖励值,并返回更新后的状态。
-
4、策略更新:
- 策略网络(Actor) 根据每次选择动作的反馈信息(奖励和状态),不断学习和调整自己的参数,逐渐倾向于选择带来更高奖励的动作。
- 同时,价值网络(Critic) 也会通过评估当前状态的价值,帮助策略网络更好地做出决策。
-
5、迭代训练:
- 随着训练的不断进行,策略网络会越来越倾向于选择那些带来高奖励的优化算法。这并不是执行所有算法后再对比选择,而是通过逐步学习策略,越来越准确地预测哪个动作(优化算法)最适合当前状态。