类调度算法显示与标准的最佳匹配?

时间:2011-10-09 18:58:29

标签: php mysql algorithm scheduling

我希望创建一个系统,您可以输入您想要在大学学习的课程(3-7门课程),然后选择喜好(早晨,白天,晚上,夜晚/ M,T,W,TR , F)。

我需要一种方法,以便当程序查询数据库(MySQL)时,它返回根据这些参数进行的最佳可能的计划。我在php中写它。

有人知道最好的方法吗?或者链接到我可以理解的一些示例代码?

3 个答案:

答案 0 :(得分:1)

您可能想尝试一些约束编程(CSP)库....在CSP中您说明了问题(通常是NP Hard),并且库使用一些启发式(模拟退火,禁忌搜索)或详尽的DFS来解决它一些技巧(弧一致性,搜索空间剃须)......它可以解决数千个变量的NPC问题......但是它设置黑盒系统的“精细”参数有点狡猾......

答案 1 :(得分:1)

这是NP完全的。

如果您想要简单快速的东西,请编写构造启发式,例如First Fit Decreasing。简单地说,它根据难度(学生大小,......)订购课程,并在最佳剩余时间段和房间分配一个。您可以在PHP中轻松完成此操作。

如果你想做得正确,就像@malejpavouk所说,使用CP库。它将首先使用构造启发式,然后执行元启发式,如禁忌搜索,模拟退火,... Here's a open source course scheduling implementation in Java.寻找一个好的PHP CP库。

答案 2 :(得分:0)

这是一个难以优化的问题。 这是一个提议的启发式(随机跳转)。

  1. 获取一组约束(首选项)。
  2. 还有一套课程。
  3. 使用MySQL查询获取所选课程的可能时间。
  4. 选择一套可行的课程。
  5. 根据约束对集合进行评分。
  6. 如果分数足够好,请停止。
  7. 否则,请更改随机选择的一门课程的小时数。
  8. 返回第4步。