昨天在试图入睡时我开始考虑如何解决下面的问题,并意识到我无法想出一个好的算法.这不是学校作业,即使它看起来像一个,我只是想找到答案.:)
基本上让我们想象一下商店员工的工作时间表.该计划应根据一系列要求生成计划建议.
要求是:
什么是解决这个问题的最佳方法?也许函数式编程更适合解决这个问题?
编辑:现在我知道这种类型的问题被称为"资源约束调度".由于"调度"通常指的是诸如计划任务或线程之类的事情,因此对此有点困难.对于那些仍然认为我要求提供家庭作业解决方案的人(尽管我上面另有明确说法),你可以查看我以前的问题,我认为他们清楚地表明我不是学生......
前两点是问题的约束.第三点表示对候选解决方案进行排序的方法,如果您将其正式化,则会出现优化问题.实际上,您正在尝试最小化工作分布的差异.
请注意,由于约束,问题可能没有可接受的解决方案.
这是一个组合优化问题,您可以使用整数线性规划方法或大致使用随机局部搜索方法(它们也称为元启发式或许多其他名称)来解决它,例如遗传算法,模拟退火,禁忌搜索,迭代局部搜索,蚁群优化等.
这类特殊问题被称为Job Scheduling,有很多关于它的文献有很多变种.
如果这不是作业,我认为这应该足以满足你的好奇心,如果它是我想我告诉你你可以看到什么.