Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 购物路径优化算法?_Algorithm_Optimization_Graph_Vehicle Routing - Fatal编程技术网

Algorithm 购物路径优化算法?

Algorithm 购物路径优化算法?,algorithm,optimization,graph,vehicle-routing,Algorithm,Optimization,Graph,Vehicle Routing,有许多商店提供不同价格的商品。商店可能不提供特定的产品。商店可以相互连接(街道) 任务是找到一条从(和返回)某个家乡的最优路线(循环),使总价格最小。总价格是物品价格和商店之间距离的总和 每家商店都知道商品的价格。此信息无需访问商店 这些解释是: 买家/旅行者想要购买物品列表,可能是所有物品 每件商品至少在一家商店有售 商店之间的距离表示为成本,因此在计算路线的总成本时,可以简单地将其添加到购买物品的成本中 商店可以参观不止一次,但这会增加旅行时间,从而增加路线的总成本 我使用进行了初始建

有许多商店提供不同价格的商品。商店可能不提供特定的产品。商店可以相互连接(街道)

任务是找到一条从(和返回)某个家乡的最优路线(循环),使总价格最小。总价格是物品价格和商店之间距离的总和

每家商店都知道商品的价格。此信息无需访问商店

这些解释是:

  • 买家/旅行者想要购买物品列表,可能是所有物品
  • 每件商品至少在一家商店有售
  • 商店之间的距离表示为成本,因此在计算路线的总成本时,可以简单地将其添加到购买物品的成本中
  • 商店可以参观不止一次,但这会增加旅行时间,从而增加路线的总成本

我使用进行了初始建模,将商店(和家)建模为一个有向图(距离/成本为权重),其中每个节点(商店)都包含它提供的产品的所有价格列表

我的第一次尝试是创建一个蛮力解决方案,我通过迭代所有解决方案成功了。然后,对于每个周期,我计算旅行成本和物品成本(即周期商店中出现的最低价格)

现在,上述方法可以工作,但不能扩展:对于n个节点、e个边和c个基本电路(),枚举所有循环的时间复杂度是
O((n+e)(c+1))
。循环(电路)的数量增长非常快:

# random 'streetlike' shop-graphs

number of shops: 3, cycles: 2
number of shops: 4, cycles: 11
number of shops: 5, cycles: 11
number of shops: 6, cycles: 60
number of shops: 7, cycles: 229
number of shops: 8, cycles: 868
number of shops: 9, cycles: 1399
number of shops: 10, cycles: 61139
number of shops: 11, cycles: 60066
number of shops: 12, cycles: 1246579
number of shops: 13, cycles: 7993420
对于更具可伸缩性的问题描述,有什么建议吗?我在考虑动态或线性规划的解决方案,但我很想听听你的想法



更新:找到了一篇关于这个主题的完整博士论文:

一分钟前这里有一条评论,它链接到了维基百科的条目,关于这个确切的问题:

在该页面上,有一些文章的链接,介绍了各种解决方案方法:

动态规划:

-- (这可能只会找到一个“相当好”的解决方案,不一定是绝对最好的,但可能会快得多)


编辑:谢谢,@soulcheck--你的评论消失了一会儿,但是现在又回来了。

我认为我们需要更多的信息-如果总的“成本”是旅行的距离加上花费的钱,那么我们会挣扎,因为它们不是相同的单位-所以如果距离便宜,那么这就成了旅行推销员问题的一个例子-确定每次的最低成本项目,然后计算路线为了得到它们,如果距离与物品的成本相比是昂贵的,那么我们就有不同的问题


小结-我认为如果你加上constaint,这个问题就完全解决了-每行驶一英里需要花费$R$单位的钱,然后我们就可以开始构建解决方案了…

这个问题很好。但是Python和它有什么关系吗?听起来很简单——就是哪儿都不要去,什么都不要买。总价格最小化:)商品的可用性和价格是否可供查找,还是必须访问商店才能了解可用性和价格?@BenS所有价格都是已知的。这些信息不需要访问商店。但是,严肃地说,有什么限制?你必须参观每家商店吗?每件商品你都要买一件吗?如果你参观一家商店,你必须购买里面的东西吗?您能否在返程途中再次光顾商店,以最大限度地降低旅行成本?你是说商店之间的距离也是用成本来表示的,与物品的成本是一样的吗?我对这个问题做了一些澄清(希望如此)。商店之间的距离和购买价格在同一维度。节点之间的成本是已知的,可以用边上的权重来表示。啊哈-现在更清楚了-尽管我认为Ian的答案正是你想要的…Joe,你需要提高答案的质量。请阅读。你好,罗伯特-可以。。。你能给我一些更具体的反馈吗?如果我很粗鲁,我道歉,这肯定不是我的本意:(感谢链接,我会尝试看看算法是否适用。没问题;)我删除了它,因为实际上可能有一些约束使这个问题成为另一个问题,但当约束被澄清后,我再次发布了它