嗯,这是一个非常复杂的问题,但我会尝试描述我的目标。
目标:给定一组 n 地理定位节点(作业),我必须将其分发给 y 员工(子图?) ,每天。
当我必须考虑以下限制来执行此任务时,复杂性就出现了:
每位员工都有负载限制(考虑熟练程度和工作时间)
每个作业(节点)都有关联的负载值,例如要执行的优先级和时间花费。
并非所有工作都会在某一天执行。所以,其中一些必须被排除在外,必须重视(即使那些更为遥远)。
必须考虑搜索参加此工作的最佳距离(或覆盖范围)。
必须避免2个员工覆盖区域的重叠。
范围:每天约有350个收入工作,达到aprox。有2000个就业岗位,有25个就业岗位,占地面积约1.5万平方米。
我有一些关于图论的基本知识,比如Djistra的最短路径,一些背包问题,后问题等等......但这是一个更复杂的问题。
所以任何方向或建议都表示赞赏。为此,我的意思是我必须学习/实施哪些理论来实现这些目标?
PS:我不确定这个问题是在这里还是在数学堆栈交换中被问到,但是因为我猜有很多算法涉及到我决定在这里发布。 此外,我必须说,我一直在谷歌搜索,但有很多图理论名称,直到现在我发现没有一个适合我的问题。最诚挚的问候, 保罗布埃诺。
答案 0 :(得分:2)
你的问题有一个复杂的动态:新的工作岗位不断到来;旅行和/或完成工作可能比预期花费更多时间或更少时间;由于生病,活跃员工的数量可能会发生变化;我认为处理动态的最佳方法是每次新工作到来,员工完成工作,或者活跃员工数量变化(等),计划软件重新分配活跃员工中的所有已知工作,并重新确定他们分配给他们的所有工作的路径(如果有这么多工作,则提前几天)。这必须以最佳方式完成(见下文)。
现在我们遇到一个更简单的问题:在所有员工之间分配所有工作,并在给定时间点确定最佳的路径。计划软件知道员工所在的城市以及未完成的工作所在的位置,并且能够计算任何一对城市之间的最佳路径。 “最佳”是指具有最低成本的那个,并不总是最短的成本。城市和它们之间的最佳路径形成加权图:城市是节点,路径是边缘。 边缘的正面费用(旅行价格)和节点的负面费用(每次工作后的收入)一个特定的城市。)
想象一下,我们已经获得了重新计算的计划,它已被发送给员工,他们开始执行它。他们在做什么?他们中的一些人可能在他们的实际位置有未完成的工作,其中一些人将前往下一个城市,在那里完成工作。请注意,计划的执行是连续的:在特定时刻,正在从事某项工作的员工会产生负成本,而正在旅行的员工会产生正成本。可以轻松计算每个员工生成成本的比率:对于在职员工,-[income after actual job] / [time required to complete the job]
,对于差旅员工,[cost of travel] / [travel time]
(对于较长的计划,非活动期间:即夜晚,周末和假期也应该考虑在内 - 这些也是成本计算器,就像旅行一样。在给定的时刻,总成本生成率(TCGR)是所有员工的成本生成率的总和。 计划的总成本是TCGR在计划的总时间跨度(TTSP)中的积分。我想最合理的目标是最小化分数TCGR / TTSP
,即找到最小平均TCGR(ATCGR)的计划。
规划软件如何以最小的ATCGR确定计划?