Skip to content

willweiao/Flexible-Job-Shop-Scheduling-Optimization

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Flexible-Job-Shop-Scheduling-Optimization

使用数据集:Brandimarte FJSP Dataset (Credit to the repository: SchedulingLab/fjsp-instances)

模型参考:柔性车间作业调度(Flexible Job-shop Scheduling Problem, FJSP)

完成进度:

08/23 完成简化模型的建模以及对case mk01的求解、可视化

08/24 修改了模型存在的问题,主要是原模型缺少约束使每台机器上同一时间最多只有一个工序在加工,导致模型直接得到了LP松弛的最佳下界。修改后的模型可以计算出一个近优的可行解来。但是现在问题是无法有效地推进下界使得Gurobi的求解过程收敛,虽然在time limit内可以对mk01和mk02找到一个几乎最优解来,但是无法证明其最优性。同时,在解问题mk03,mk04和mk05时,因为规模的加大求解时间大幅增加,从而导致在time limit中,模型已无法找到足够多的可行解了,因而无法再有效了。需要对模型进行进一步的改良。

08/24 二次更新:多次求解尝试后发现问题出在求解器很难找到一个可行的起点,启发式也一直没构造出解,因此考虑尝试使用贪心调度构造一个一定可行的起点,并且在之后的调试过程中refine了LB和UB,终于成功求解mk04,但mk03以及mk05仍未能成功求解,或许需要进一步的改良.

08/25 修改了生成可行初解的方式:不再通过手动构造贪心调度的方式,而是先解原问题的LP松弛模型,根据LP的分数解来构造可行初解。但是目前模型仍然存在问题,依然无法求解出mk03和mk05。注意到控制台输出的求解每步输出和没有做LP松弛之前类似,后续需要排查问题会先从模型是否成功求解了Lp松弛以及是否成功构造了一个可行调度等方面入手。已验证确认LP松弛以及生成可行初解没有问题,问题确定为剪枝部分,即warmstart_adj函数的问题。

08/31 通过修改has_incumbent函数,以及修改了warm_start的导入问题,成功解决了mk03和mk05的求解问题。算出来了比lp松弛SSGS的解更优的可行解。接下来是去求解剩余的case。

09/07 成功求解了mk06和mk07,开始结构化算法。

09/09 求解了mk08和mk09,mk08的求解还算正常,mk09求解过程也没问题,但是由于问题规模的增大,现在第一阶段求解就要花到10分钟左右时间,这就使得算法可能还没走到启发式构造解和第二阶段推界的步骤就因为时间上限停止了。我需要思考一下在大规模问题情境下算法应该怎么样进行改进。

09/14 把方法包装为类对象。现在只需要在main.py中修改实例名然后运行。

未来计划:

  • 完成对全部15个case的求解与可视化
  • 利用元启发式算法求解并与精确算法进行比较
  • 增加其他可能的实际约束(due date, weight, 序列换型相关,物料到达窗口等)
  • 其他可能的改善

About

FJSP modeling and solving Brandimarte instances

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages