是否有人知道为任务创建最佳时间表的工具?我有许多服务器,运行多个数据库,各种脚本可以从每个数据库导入和转换数据。
我目前正在手动安排各种cronjobs,但这很容易出错并且难以解决异常,例如由于异常大的数据负载而导致运行时间异常长。我正在考虑编码每个任务之间的资源和依赖关系,并创建一个计划程序来搜索最佳的任务执行序列,以便每个任务在最不可能干扰任何其他任务时运行。
我见过Drools Planner,但这是不合适的,因为它的复杂性和开销很大。
答案 0 :(得分:1)
NP完成,所以如果您想要接近最佳状态,则无法避免一定程度的复杂性和CPU开销。
我认为你有两个选择:
快速构建启发式,例如 First Fit Decreasing :根据难度降低(=与之碰撞的任务数量,......)对任务进行排序,按此顺序,将它们分配到最佳剩余点。这不会接近最优,但它会快速,简单并且开销很低。
出于兴趣,Planner的复杂性吓到了你?
答案 1 :(得分:0)
任务调度问题属于NP完全集。因此,没有一种算法可以为您提供最佳答案。
但是有近乎最佳的答案。
技术: 1)基于启发式算法 - HEFT,MinMin,MaxMin等...... 2)基于元启发式算法 - 遗传算法,粒子群优化等...
或者你可以发明新的算法。
我可以分享简单的代码,如果你愿意,可以生成接近最佳的时间表。