算法大框架参考源码框架
① 使用Simpy动态模拟新工件到达
② 使用3层分层分布式多智能体深度强化学习网络
a) 每个层级都由相应的智能体(Agent)组成,具有自己的状态、动作和奖励函数。
b) 智能体之间通过交流信息和协作决策,共同优化整个系统的调度性能
c) 明确不同层级智能体的职责和交互方式,设计合理的状态表示、动作空间和奖励函数
③ 工厂你自己设计(要求必须是使用智能体选择工厂,工厂数量设置为3),同构工厂
a) 在实现工厂智能体时,需要考虑其状态表示、动作空间、奖励函数等关键要素。
b) 可以参考agent_workcenter和agent_machine的设计,但需要针对工厂级别的特点进行适当的调整和扩展。
c) 工厂智能体负责将新到达的工件分配给适当的工作中心进行加工
d) 工厂选择逻辑时,也要考虑新工件的动态到达
④ 工作中心:柔性的体现,
a) 每个工作中心也是一个智能体,有3个工作中心,
b) 每个工作中心之间要可以相互交流信息(可以参考源码agent_workcenter)
⑤ 机器:
a) 每个机器也是一个智能体,每个工作中心有3台机器,
b) 机器之间要可以互相交流信息,
c) 机器和工作中心也要可以交流信息(可以参考源码agent_machine)
⑥ 工厂,工作中心和机器用类实现
a) 工厂,工作中心和机器数量要可以改变(可以参考main_experiment_S.py)。
⑦ 奖励的设计:
a) 只要最后结果好就行,最好不要和论文源码里面设计的一样,
b) 在设计奖励函数时,也要注意信号的稀疏性和延迟性, 要根据具体问题和需求进行创新和优化
c) 奖励函数的可解释性和鲁棒性
⑧ 网络:
a) 采用qmix(源码中使用的是ddqn)
b) 如双重递归(double recursion)、优先级经验回放(prioritized experience replay)
c) 一定要保证网络收敛!
⑨ 特征:特征的话可以参考源码,但是不能相同,根据具体问题进行创新和改进。
a) 全局的统计信息(job_creator),工厂的信息,工作中心的信息和机器的信息
⑩ 动作:规则的话自己设置 ,不能和源码里面的相同,
a) 源码里面的规则是复合经典规则(sequencing,routing)
b) 设计一些新的调度规则,或者将不同的规则进行组合。
⑪目标函数值:最小化总延迟率,最大化机器利用率,最大化平均完工时间
⑫可视化:
a) 损失函数随迭代次数的变化,损失函数随仿真时间的变化;
b) 奖励值随迭代次数的变化,奖励值随仿真时间的变化
c) 机器利用率随迭代次数的变化,机器利用率随仿真时间的变化
d) 资源利用率热力图
⑬训练过程:
a) 要有预热过程(参考brain_machine_S.py),然后再开始智能体训练