Algorithm 旅行推销员将折旧物品运送到不同的市场

Algorithm 旅行推销员将折旧物品运送到不同的市场,algorithm,estimation,traveling-salesman,Algorithm,Estimation,Traveling Salesman,解决以下问题时,什么是好的启发方法 Quality Blimps Inc.正寻求将其销售扩大到其他城市 (N) ,所以他们雇你当推销员飞往其他城市销售 小飞艇。乘坐飞艇旅行可能会很贵,所以你需要 确定每次旅行要带多少只小飞艇以及什么时候 返回总部获取更多信息。高质量的飞艇有无限的空间 小飞艇的供应 在你访问的每个城市,你只能卖出一艘飞艇,但是 你不需要访问每一个城市,因为有些城市的旅行费用很高 成本。每个城市都有一个飞艇销售的初始价格,但这个 随着更多的飞艇销售(以及 新奇感逐渐消失)。找到一条

解决以下问题时,什么是好的启发方法

Quality Blimps Inc.正寻求将其销售扩大到其他城市 (N) ,所以他们雇你当推销员飞往其他城市销售 小飞艇。乘坐飞艇旅行可能会很贵,所以你需要 确定每次旅行要带多少只小飞艇以及什么时候 返回总部获取更多信息。高质量的飞艇有无限的空间 小飞艇的供应

在你访问的每个城市,你只能卖出一艘飞艇,但是 你不需要访问每一个城市,因为有些城市的旅行费用很高 成本。每个城市都有一个飞艇销售的初始价格,但这个 随着更多的飞艇销售(以及 新奇感逐渐消失)。找到一条利润最大化的好路线

这一挑战类似于标准的旅行推销员问题,但有一些额外的曲折:推销员需要跟踪自己的旅行成本和飞艇的成本。每个城市都有不同的价格,这些价格都会随着他的旅程而下降。什么是快速算法(即n logn)来实现利润最大化


以某种方式运输物品的价格使TSP更简单。如果销售员在A城市,想去B,他可以比较直接去B的成本和先回总部接更多的飞艇的成本。也就是说,通过A乘一艘额外的飞船到B更便宜还是在两者之间返回更便宜。该检查将创建一系列循环旅行,然后销售人员可以通过循环旅行获得最高收入。但是,首先,什么是确定这些循环的好方法呢

这是一个搜索问题。假设网络比暴力所能解决的要大,那么最好的算法就是。

解决此类问题的算法通常是“多次运行解决方案,选择最佳的一种”。此外,要选择下一步要尝试的解决方案,请使用以前迭代的结果


对于一个特定的算法,尝试使用剪枝、模拟退火、禁忌搜索、遗传算法、神经网络(按照我发现的相关顺序)进行回溯。此外,泰勒·德登提出的蒙特卡罗树搜索想法看起来很酷。

我已经阅读了原始问题。由于城市数量众多,因此不可能得到确切的答案。近似算法是唯一的选择。正如@maniek提到的,AA有很多选择。如果你以前有过AA的经验,那将是最好的,你可以选择一个你熟悉的,并得到一个大致的答案。然而,如果你以前没有做过AA,也许你可以从修剪的回溯开始

对于此问题,您可以轻松获得以下修剪规则:

  • 带尽可能少的飞艇。这意味着,当你从总部出发,访问A、B、C……城市,然后返回总部(你可以将其视为一轮),你带来的飞艇数量与你将访问的城市数量相同
  • 随着销售价格越来越低,当它低于旅行费用时,这个城市将永远不会被参观。这就给出了回溯法的结束
  • 您甚至可以首先将KNN应用于位于附近的多个城市的集群。然后从总部出发,参观每个小组


    总而言之,这确实是一个悬而未决的问题。没有最佳答案。可能在案例1中,使用回溯给出了最佳答案,而在案例2中,模拟退火是最佳答案。只要计算出大概的答案就足够了,实现这个目标有很多方法。总之,真正的最佳方法是编写尽可能多的AAs,然后比较这些结果并输出最佳结果。

    这看起来像是一个经典的优化问题,我知道可以用模拟退火算法处理(我认为这是20世纪80年代Wintek electronic CAD autoplacement程序的第一次商业应用。大多数优化算法可以处理许多变量的问题,比如你的问题——问题是正确设置适应度算法,以便得到最佳解(在您的情况下,成本最低)

    其他优化算法可能值得一看——我只是有实现模拟退火算法的经验


    (如果你选择模拟退火的路线,你可能会想得到p.J.van Laarhoven和E.H.Aarts的《模拟退火:理论和应用(数学及其应用)》,但你必须找到它,因为它已经绝版了(甚至可能是我在20世纪80年代用过的那本书)

    不一定循环。例如,如果回溯的成本低于继续前往另一个城市的成本,销售员可能会决定去
    HQ->A->B->C->D->C->B->E->B->A->HQ
    。旅行推销员和O(nlogn)不太合拍(除非p=NP,然后谁知道呢)。然而,这个问题对我来说更像是一个问题。@amit,如果P=NP,TSP的
    O(nlogn)
    解决方案将非常尴尬everyone@Shahbaz,你只能在一个城市里出售一个单元,所以你不能两次回到同一个城市。@amit,这只是一个近似的解决方案,我认为它需要在不到O(n^2)的时间内完成。