摘要: 本文系统整理了 GitHub 上与多目标柔性作业车间调度问题(Multi-Objective Flexible Job Shop Scheduling Problem, MOFJSP)相关的开源代码,涵盖传统进化算法、增强型 NSGA-II、深度强化学习等多种技术路线,并对各仓库的优化目标、算法实现、对应论文和适用场景进行详细分析,帮助研究者快速定位合适的基线或实验平台。

一、背景:什么是 MOFJSP?

柔性作业车间调度问题(FJSP) 是经典 Job Shop Scheduling Problem(JSP)的扩展版本。在 JSP 中每道工序只能在指定机器上加工,而在 FJSP 中每道工序可以在多台候选机器中选择一台执行,因此调度决策包含两个耦合子问题:

  • 工序排序(Operation Sequencing, OS):确定各工序的加工顺序
  • 机器分配(Machine Assignment, MS):为每道工序选择具体的加工机器

FJSP 本身已是 NP-hard 问题。多目标 FJSP(MOFJSP) 在此基础上同时优化多个相互冲突的目标,常见目标组合如下:

优化目标 符号 说明
最大完工时间 C m a x C_{max} Cmax 所有工件完成加工的最晚时刻
能耗 E E E 机器加工、空闲、启停的综合能耗
机器负载均衡 L B LB LB 各机器工作量的方差或极差
总拖期 T T T 工件超过交货期的惩罚总量
碳排放 C O 2 CO_2 CO2 加工过程的碳足迹

由于多目标之间存在冲突(如压缩 C m a x C_{max} Cmax 往往需要同时开启更多机器,增加能耗),MOFJSP 的求解结果通常是一组帕累托最优解集(Pareto Front),而非单一最优值。主流求解算法以 NSGA-II1、MOEA/D2 为代表,近年来深度强化学习方法(DRL)也开始向多目标场景延伸。


二、重点仓库逐一分析

1. Enhanced_NSGA-II_EFJSP-TT

项目 详情
地址 https://github.com/Barbale98/Enhanced_NSGA-II_EFJSP-TT
语言 Python
Stars 25
对应论文 硕士论文:Enhanced Genetic Algorithm to Solve the Energy-efficient Flexible Job Shop Scheduling Problem · ResearchGate

问题定义: 带运输时间约束的能效柔性作业车间调度问题(EFJSP-TT)。在标准 MOFJSP 基础上引入工序间的机器间运输时间,更贴近真实制造场景。

优化目标:

  • Makespan( C m a x C_{max} Cmax
  • 总能耗(加工能耗 + 空闲能耗)

算法体系(由简到繁,循序渐进):

NSGAII.py        ← 标准 NSGA-II(基线)
VNS_NSGAII.py    ← NSGA-II + 变邻域搜索(VNS)
EVNS_NSGAII.py   ← 增强版:MDR 初始化 + VNS + NSGA-II

核心创新点:MDR(Mixed Dispatching Rules)初始化。针对 makespan 和能耗两个目标分别设计启发式初始化策略,混合调度规则生成高质量初始种群,显著提升收敛速度。另含 MILP 精确模型(Gurobi 求解)用于小规模实例验证。

数据集: Brandimarte 标准实例

环境依赖: Python 3.x,Gurobi(精确模型部分可选)

适合场景: 研究含运输约束的能效 FJSP,或学习 NSGA-II 与局部搜索的混合策略设计


2. NSGA-II-FJSP

项目 详情
地址 https://github.com/aslongaslihappy/NSGA-II-FJSP
语言 Python
Stars 4
对应论文 无(作者独立实现,未关联学术论文)

问题定义: 标准双目标 FJSP,代码结构清晰,适合入门与快速复现。

优化目标:

  • Makespan
  • 总能耗

算法实现要点:

  • 经典 OS/MS 双层染色体编码
  • 快速非支配排序(Fast Non-dominated Sorting)
  • 拥挤距离选择(Crowding Distance Selection)
  • 二元锦标赛父代选择

数据格式: 兼容 .txt.fjs 两种标准 FJSP 实例格式

输出: 批量实验结果自动导出 CSV,并生成帕累托前沿 PNG 可视化图

环境依赖: Python 3.x,numpy,matplotlib

适合场景: MOFJSP 入门学习、NSGA-II 标准实现的参考代码


3. NSGA-II-FJSP-AGVs

项目 详情
地址 https://github.com/aslongaslihappy/NSGA-II-FJSP-AGVs
语言 Python
Stars 3
对应论文 无(作者独立实现,未关联学术论文)

问题定义: 在 MOFJSP 基础上引入自动导引车(AGV),将物料搬运过程纳入调度决策,是工业落地场景下更完整的建模方式。

优化目标:

  • Makespan
  • 总能耗(机器加工能耗 + AGV 满载/空载行驶能耗 + 机器空闲能耗)

染色体结构(三段编码):

[ 工序排序 OS ] | [ 机器分配 MS ] | [ AGV 路径分配 ]

遗传算子:

  • 工序段:POX 交叉(Precedence Operation Crossover)
  • 机器/AGV 段:均匀交叉(Uniform Crossover)

数据集: Bilge & Ulusoy、Brandimarte

环境依赖: Python 3.x,numpy,matplotlib

适合场景: 研究机器调度与 AGV 物料搬运联合优化问题


4. BioAI_Project(kDEN-NSGA-II)

项目 详情
地址 https://github.com/Avalon-S/BioAI_Project
语言 Python
来源 意大利特伦托大学《生物启发人工智能》课程项目(2025)
对应论文 无(课程项目,非正式学术发表)

注意: 本仓库为课程项目成果,代码完整度较高,但未经过正式同行评审,引用时请注意区分。

问题定义: 三目标 FJSP,在标准双目标基础上新增机器负载均衡目标。

优化目标:

  • Makespan
  • 机器负载均衡(Load Balancing)
  • 总空闲时间(Total Idle Time)

算法创新(kDEN-NSGA-II):

改进点 说明
混合初始化 启发式 + 混沌 + 随机三种策略混合生成初始种群
自适应交叉 单点、均匀、加工时间感知三种交叉策略自适应切换
kNN 密度选择 基于 k 近邻密度估计保持种群多样性,替代标准拥挤距离
外部精英档案 维护 Pareto 最优解档案,防止优质解被淘汰
局部搜索变异 引入局部搜索提升解的局部精细化能力

对比基线: 标准 NSGA-II、ACO(蚁群算法)、NSGA-III、SPEA-II

数据集: Barnes、Brandimarte、Dauzere 三大标准集

适合场景: 研究多样性保持机制、学习对 NSGA-II 的多种改进策略


5. Using-HGAT-RL-to-solve-MOFJSP-problems

项目 详情
地址 https://github.com/beginner-Jiang/Using-HGAT-RL-to-solve-MOFJSP-problems
语言 Python(PyTorch)
对应论文 相关论文尚未正式发表(作者在 README 中注明,发表后将更新引用)

问题定义: 显式多目标 FJSP(MOFJSP),基于异构图表示的深度强化学习框架,同时提供完整的多方法横向对比实验体系。

优化目标:

  • Makespan( C m a x C_{max} Cmax
  • 负载均衡(Load Balance, L B LB LB
  • 总拖期(Total Tardiness, T t a r d y T_{tardy} Ttardy

核心方法:HGAT + PPO(层次化强化学习)

状态建模:异构析取图(Heterogeneous Disjunctive Graph)
          ├── 工序节点(含工时、状态特征)
          ├── 机器节点(含负载、利用率特征)
          └── 工件节点(含交货期、拖期特征)

特征提取:异构图注意力网络(HGAT)
策略优化:近端策略优化(PPO)
决策层次:层次化 RL(高层:工序选择 → 低层:机器分配)

完整基线对比体系(该仓库最大价值所在):

类别 方法
启发式规则 SPT、EDD、LBD、FIFO、MOPNR、MWKR
进化算法 NSGA-II、MOEA/D
DRL(简单网络) DQN+MLP、PPO+MLP
DRL(图网络) PPO+GAT
本文方法 HGAT+PPO(层次化 RL)

环境依赖: Python 3.x,PyTorch,torch-geometric

适合场景: 深度强化学习求解 MOFJSP 的研究入口,或需要"一套代码完成启发式/进化/DRL 横向对比"的实验


6. NSGA_II-for-FJSP

项目 详情
地址 https://github.com/InTheFuture7/NSGA_II-for-FJSP
语言 MATLAB
对应论文 参考以下文献实现(未绑定单篇论文):① 张守京《求解多目标双资源柔性车间调度问题的改进 NSGA-II 算法》;② 吴秀丽《考虑可再生能源的多目标柔性流水车间调度问题》;③ 黄学文《求解柔性作业车间调度的遗传算法综述》

问题定义: 双目标 FJSP,代码中含能耗和交货期计算函数,具备扩展至四目标的基础。

优化目标:

  • 总加工时长(Makespan)
  • 机器负荷均衡(Machine Load Balance)
  • (代码已含能耗、交货期计算,可扩展)

算法实现: 标准 NSGA-II,包含快速非支配排序、锦标赛选择、遗传交叉与变异、帕累托前沿输出

适合场景: MATLAB 用户的 MOFJSP 基线,或从 MATLAB 迁移至 Python 的过渡参考


三、汇总对比

仓库 目标数 优化目标 算法 语言 对应论文
Enhanced_NSGA-II_EFJSP-TT 2 makespan + 能耗 NSGA-II + VNS + MDR Python 硕士论文(ResearchGate)
NSGA-II-FJSP 2 makespan + 能耗 NSGA-II Python 无(独立实现)
NSGA-II-FJSP-AGVs 2 makespan + 能耗(含AGV) NSGA-II Python 无(独立实现)
BioAI_Project 3 makespan + 负载 + 空闲时间 kDEN-NSGA-II Python 无(课程项目)
HGAT-RL-MOFJSP 3 makespan + 负载 + 拖期 HGAT+PPO(DRL) Python 待发表
NSGA_II-for-FJSP 2 makespan + 机器负载 NSGA-II MATLAB 参考多篇中文文献

结论:以上 6 个仓库均属于真正的多目标 FJSP 开源实现。


四、更多值得关注的相关仓库

4.1 通用多目标优化框架

这类框架不直接实现 FJSP,但提供完善的多目标算法库,只需继承接口、定义 FJSP 评价函数即可使用,适合快速搭建自定义实验。

pymoo — Python 多目标优化库

  • 地址: https://github.com/anyoptimization/pymoo
  • 内置算法: NSGA-II、NSGA-III、MOEA/D、SPEA2、HypE 等
  • 特点: 文档完善,支持 Pareto 前沿可视化,学术界使用最广泛的 Python 多目标框架

BIMK/PlatEMO — MATLAB 多目标优化平台

  • 地址: https://github.com/BIMK/PlatEMO
  • 内置算法: 150+ 种多目标/多任务进化算法
  • 特点: GUI 界面,算法横向对比友好,适合 MATLAB 用户

4.2 面向能耗的多目标 JSP(可借鉴能耗建模方式)

jMetal/JSP — 能效多目标作业车间调度

  • 地址: https://github.com/jMetal/JSP
  • 对应论文: Energy-Aware Multi-Objective Job Shop Scheduling Optimization with Metaheuristics in Manufacturing Industries: A Critical Survey, Results, and Perspectives,Applied Sciences,2022 · DOI: 10.3390/app12031491
  • 优化目标: makespan + 总能耗
  • 数据集: 11 个标准实例(5×10 至 20×100 规模)
  • 说明: 研究对象为标准 JSP 而非 FJSP,但能耗建模框架(机器工作/空闲/启停能耗分层建模)可直接借鉴至 FJSP

4.3 深度强化学习 FJSP 基线

以下两个仓库以单目标为主,但图神经网络状态表示方式是多目标 DRL 扩展的重要基础。

wrqccc/FJSP-DRL — 双注意力网络调度

  • 地址: https://github.com/wrqccc/FJSP-DRL
  • 对应论文: Flexible Job Shop Scheduling via Dual Attention Network-Based Reinforcement Learning,IEEE Transactions on Neural Networks and Learning Systems,2023
  • 说明: 代码质量高,结构清晰;提出双注意力网络(DAN)联合建模工序与机器特征,是 FJSP 领域 DRL 方法的重要基线

Lei-Kun/End-to-end-DRL-for-FJSP — 多动作 PPO

  • 地址: https://github.com/Lei-Kun/End-to-end-DRL-for-FJSP
  • 对应论文: A multi-action deep reinforcement learning framework for flexible Job-shop scheduling problem,Expert Systems with Applications,2022,Vol. 205,117796
  • 说明: Multi-PPO 架构,工序选择与机器分配联合决策;被引 260+,ESI 高被引论文

ClouDaDaDa/DFJSPT_code — 含运输约束的动态 FJSP

  • 地址: https://github.com/ClouDaDaDa/DFJSPT_code
  • 说明: 2025 年最新成果,分层多智能体 DRL,含 AGV 运输约束,是目前动态多目标 FJSP+DRL 的较新实现

4.4 基准数据集

仓库 说明
SchedulingLab/fjsp-instances 标准 FJSP 实例集合(Brandimarte、Kacem、Dauzere 等经典集)
Lei-Kun/FJSP-benchmarks DRL 研究常用 benchmark 实例
FJSPLib 含已知最优解的 benchmark 库,适合验证算法上界

五、如何选择适合你的仓库

根据不同研究需求,推荐路线如下:

场景一:入门 / 快速复现双目标 FJSP
→ 首选 aslongaslihappy/NSGA-II-FJSP,代码结构最清晰,兼容标准实例格式

场景二:研究含约束的能效 FJSP(含运输时间)
Barbale98/Enhanced_NSGA-II_EFJSP-TT,有论文对应,算法体系完整

场景三:研究 AGV + 机器联合调度
aslongaslihappy/NSGA-II-FJSP-AGVs,目前少数含 AGV 能耗建模的开源实现

场景四:三目标 FJSP + NSGA-II 改进研究
Avalon-S/BioAI_Project,改进点丰富,对比基线完整(注意:课程项目,非正式论文)

场景五:多目标 DRL 求解,需要与传统算法完整对比
beginner-Jiang/Using-HGAT-RL-to-solve-MOFJSP-problems,启发式 / 进化 / DRL 三类方法均有实现

场景六:自定义问题 + 多算法横向对比
→ Python 用户用 pymoo,MATLAB 用户用 PlatEMO,自定义 FJSP Problem 类接入即可


六、总结与趋势

多目标 FJSP 是智能制造调度领域的核心研究方向。梳理上述开源实现,可以归纳出以下几个发展趋势:

1. NSGA-II 仍是传统方法的主流基线
绝大多数仓库以 NSGA-II 为骨架,在种群初始化(MDR、混沌初始化)、多样性保持(kNN 密度)、局部搜索(VNS、禁忌搜索)等环节进行改进,形成了丰富的变体体系。

2. 优化目标从"双目标"走向"多约束"
从早期的 makespan + 机器负载,逐步扩展至能耗、碳排放、AGV 运输距离、拖期等工业实际约束;"能耗感知"和"碳中和"调度是近年论文的高频主题。

3. 深度强化学习向多目标方向延伸
基于图神经网络(GNN/GAT)的 DRL 方法在单目标 FJSP 上已取得突破,2024-2025 年涌现出若干多目标 DRL 工作,beginner-Jiang/Using-HGAT-RL-to-solve-MOFJSP-problems 是目前可见的最完整多目标 DRL 框架之一。

4. 工业约束细化、场景落地加速
含 AGV 运输、机器故障、动态工件到达、多工厂分布式调度等复杂约束的开源代码日益增多,调度研究正从"学术 benchmark"向"真实产线"迁移。


参考文献

仓库对应论文:

  • wrqccc/FJSP-DRL:Wang R, Wang G, Sun J, et al. Flexible Job Shop Scheduling via Dual Attention Network-Based Reinforcement Learning. IEEE Transactions on Neural Networks and Learning Systems, 2023. DOI: 10.1109/TNNLS.2023.3306421 · arXiv: 2305.05119

  • Lei-Kun/End-to-end-DRL-for-FJSP:Lei K, Guo P, Zhao W, et al. A multi-action deep reinforcement learning framework for flexible Job-shop scheduling problem. Expert Systems with Applications, 2022, 205: 117796. DOI: 10.1016/j.eswa.2022.117796

  • jMetal/JSP:Palacios J J, et al. Energy-Aware Multi-Objective Job Shop Scheduling Optimization with Metaheuristics in Manufacturing Industries: A Critical Survey, Results, and Perspectives. Applied Sciences, 2022, 12(3): 1491. DOI: 10.3390/app12031491

  • Barbale98/Enhanced_NSGA-II_EFJSP-TT:Enhanced Genetic Algorithm to Solve the Energy-efficient Flexible Job Shop Scheduling Problem(硕士论文). ResearchGate


如有补充、勘误或发现新的相关仓库,欢迎在评论区留言交流。


  1. Deb K, Pratap A, Agarwal S, et al. A fast and elitist multiobjective genetic algorithm: NSGA-II. IEEE Transactions on Evolutionary Computation, 2002, 6(2): 182-197. DOI: 10.1109/4235.996017 ↩︎

  2. Zhang Q, Li H. MOEA/D: A multiobjective evolutionary algorithm based on decomposition. IEEE Transactions on Evolutionary Computation, 2007, 11(6): 712-731. DOI: 10.1109/TEVC.2007.892759 ↩︎

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐