繁体   English   中英

用Java实现调度算法

[英]Implementing Scheduling Algorithms with Java

有没有人曾经处理过Java的作业调度问题? 我必须处理资源受限的项目调度问题,并想要求一些实用技巧。 有没有好的库可用于实现算法? 我应该使用哪些有效的数据结构?

编辑

好像我没有解释得对。 我想解决资源受限的项目调度问题(RCPSP),它已知具有不同启发式的NP-complete。 问题定义如下:

项目由一组A = {1,...,n}的活动组成,这些活动必须在一组R = {1,...,m}的资源上执行。 活动j∈A要求rjk≥0个单位的资源k∈R在其非可抢占处理时间pj≥0。每个资源k∈R具有有限容量Rk> 0。活动之间存在优先关系,例如活动j∈A在所有直接前任完成之前无法启动。 目标是找到优先级和资源容量可行的时间表,以最小化整体完工时间。

OpenSymphony Quartz Scheduller是完成任务的正确工具。

来自Quartz的网页:

“什么是Quartz?

Quartz是一个功能齐全的开源作业调度服务,可以与几乎任何Java EE或Java SE应用程序集成或一起使用 - 从最小的独立应用程序到最大的电子商务系统。 Quartz可用于创建简单或复杂的计划,以执行数十,数百甚至数万个作业; 任务被定义为标准Java组件的作业,几乎可以执行任何您可以编程的任务。 Quartz Scheduler包含许多企业级功能,例如JTA事务和集群。

Quartz可以免费使用,根据Apache 2.0许可证授权。

请阅读我们的概述以获取更多快速信息。“

JDK 1.6已经非常好了。 看看java.util.concurrent.ScheduledThreadPoolExecutor

AMPL是一种可以用于此的建模语言,它可以编译成混合整数线性程序并使用多个求解器求解。 我建议使用GNU MathProg建模语言,它是AMPL语言的一个子集,您可以将它与GLPK求解器一起使用。 这是一个非常常见的问题,您可能会找到一个非常接近您想要做的示例。

编辑:实际上glpk带有它自己的建模语言,它只是AMPL的一个子集,这可能会使事情变得更容易。

NP完整规划问题有几个库: Drools Planner (开源,ASL java),JGap,cpsolver,opents,......

您可以使用backSolver来解决此问题,使用有限容量调度模型

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM