物流应用的图算法和理论?

时间:2011-12-16 14:59:07

标签: graph graph-algorithm

嗯,这是一个非常复杂的问题,但我会尝试描述我的目标。

目标:给定一组 n 地理定位节点(作业),我必须将其分发给 y 员工(子图?) ,每天。

当我必须考虑以下限制来执行此任务时,复杂性就出现了:

  1. 每位员工都有负载限制(考虑熟练程度和工作时间)

  2. 每个作业(节点)都有关联的负载值,例如要执行的优先级和时间花费。

  3. 并非所有工作都会在某一天执行。所以,其中一些必须被排除在外,必须重视(即使那些更为遥远)。

  4. 必须考虑搜索参加此工作的最佳距离(或覆盖范围)。

  5. 必须避免2个员工覆盖区域的重叠。

  6. 范围:每天约有350个收入工作,达到aprox。有2000个就业岗位,有25个就业岗位,占地面积约1.5万平方米。

    我有一些关于图论的基本知识,比如Djistra的最短路径,一些背包问题,后问题等等......但这是一个更复杂的问题。

    所以任何方向或建议都表示赞赏。为此,我的意思是我必须学习/实施哪些理论来实现这些目标?

    PS:我不确定这个问题是在这里还是在数学堆栈交换中被问到,但是因为我猜有很多算法涉及到我决定在这里发布。 此外,我必须说,我一直在谷歌搜索,但有很多图理论名称,直到现在我发现没有一个适合我的问题。

    最诚挚的问候, 保罗布埃诺。

1 个答案:

答案 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确定计划?

  1. 对于每个可能的计划,软件都可以计算ATCGR 很容易,所以蛮力方法似乎是一种选择。 不幸的是,你有25名员工和2000个待处理的工作 意味着有太多的可能性来找到最佳计划 在合理的时间内蛮力。
  2. 另一个简单的选择是 贪婪的方法:在计算ATCGR时,只考虑从计划开始到计划的一部分 第一次重新计划的那一刻。请注意,该软件将重新计算 计划每次其中一名员工完成工作,所以如果贪婪的方法有很多 更短的可能计划,因此可能性更小。我相信蛮力的解决方案可以通过蛮力找到。
  3. 我认为没有办法找到一个确切的解决方案 蛮力方法以外的问题,但应用暴力 武力是不可能的(见上文)。如果你不满意的话 贪婪的方法,并希望近似的解决方案 相反,整个问题,你可以开发一个算法 类似于为此开发的近似算法 travelling salesman problem (TSP) 即可。这并不容易,因为你有同一组城市的多个“推销员”。