我希望创建一个系统,您可以输入您想要在大学学习的课程(3-7门课程),然后选择喜好(早晨,白天,晚上,夜晚/ M,T,W,TR , F)。
我需要一种方法,以便当程序查询数据库(MySQL)时,它返回根据这些参数进行的最佳可能的计划。我在php中写它。
有人知道最好的方法吗?或者链接到我可以理解的一些示例代码?
答案 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)
这是一个难以优化的问题。 这是一个提议的启发式(随机跳转)。