用Java实现调度算法

问题描述 投票:0回答:5

你们中有人用 Java 处理过作业调度问题吗? 我必须处理一个资源受限的项目调度问题,想请教一些实用的技巧。是否有任何好的库可用于实现算法?我应该使用哪些有效的数据结构?

编辑

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

一个项目由一组 A = {1, ..., n} 的活动组成,这些活动必须在一组 R = {1, ..., m} 的资源上执行。活动 j ∈ A 在其不可抢占的处理时间 pj ≥ 0 期间需要 rjk ≥ 0 单位的资源 k ∈ R。每个资源 k ∈ R 的容量有限 Rk > 0。活动之间存在优先关系,使得一个活动 j ∈ A 不能在其所有直接前辈完成之前开始。目标是找到一个优先级和资源容量可行的时间表,以最大限度地减少总体制造时间。

java algorithm optimization data-structures scheduling
5个回答
1
投票

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

来自 Quartz 的网页:

“什么是石英?

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

Quartz 可免费使用,在 Apache 2.0 许可证下获得许可。

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


1
投票

JDK 1.6 已经有很好的了。 看看 java.util.concurrent.ScheduledThreadPoolExecutor


1
投票

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

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


1
投票

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.