我是整个旅行商问题以及stackoverflow的新手,所以如果我说一些不太正确的话,请告诉我.
介绍:
我正在尝试为涉及多个国家(地区)内的多个城市(节点)的游戏编写利润/时间优化的多重交易算法,其中:
问题参数:
内存中已存在一个数据库(python:sqlite),它根据源城市和目的地城市进行交易,中间的最短路径城市作为数组和金额,以及限制因素及其总资本回报率(或在没有任何因素限制的情况下,那么只是给出总资本回报最高的方法).
优化
首先,我意识到因为我对时间有限制,并且我知道每一跳需要多长时间(包括-1用于启动交易),我可以将图形限制为跳数低于或等于的所有交易max_hops=int(max_time/route_time) -1.我删除了不属于这个时间限制的交易数据库的元素,修剪最短路径长度大于的城市max_hops.
我再次进入交易数据库,其中包括我当前城市与所有现有交易的起始城市之间的最短路径,而不是我当前的城市,并给予他们0%的回报.我会将这些限制在城市啤酒花的数量小于的地方max_hops,我还会计算当前城市到起始城市加上交易最短路径的啤酒花是否会超出max_hops并删除那些超出此限制的城市.
然后我采取其余的交易,(current_city->starting_city)并在所有目的地和起始城市之间添加0%的交易路线,因为啤酒花不会超过max_hops
然后,我为所有不在交易数据库中的城市做最后一次修剪,作为起始城市,目的地城市或最短路径城市阵列的一部分.
图搜索 我留下了一个(多)较小的交易图表,在时限内(即30分钟)可行.
因为所有连接的节点都是相邻的,所以连接默认都是加权1.我将%return除以交易中的跳数然后取倒数并加上+ 1(这意味着一个权重为1.01) 100%回程路线).在收益率为0%的情况下,我加上...... 2?
它应该返回最有利可图的路线......
大多,
当我遗留金钱或空间并通过路径离散到单一贸易路线时,如何添加获取多条路线的能力?由于在城市内以多种价格和数量出售货物的性质,将会有很多重叠的路线.
我如何惩罚启动新的贸易路线?
图搜索在这种情况下是否有用?
在旁注,