Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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
C# 运输优化问题的非等成本数组生成算法_C#_Algorithm_Optimization - Fatal编程技术网

C# 运输优化问题的非等成本数组生成算法

C# 运输优化问题的非等成本数组生成算法,c#,algorithm,optimization,C#,Algorithm,Optimization,我有一个优化器,它使用所有可能路径的成本矩阵来解决运输问题 该优化程序可以很好地工作,但如果两个成本相等,则该解决方案将包含一条超过最小路径数的路径。把它看作是负载平衡路由器;如果两条路线的成本相同,您将同时使用它们 我想要最少数量的路线,要做到这一点,我需要一个成本矩阵,在一定的公差范围内,没有两个相等的成本 目前,我正在通过一个烘焙函数传递成本矩阵,该函数测试每个条目是否与其他条目相等,如果匹配,则将其移动固定百分比。然而,这种方法似乎需要N^2个比较,如果起始值都相同,最后的成本将大r^N

我有一个优化器,它使用所有可能路径的成本矩阵来解决运输问题

该优化程序可以很好地工作,但如果两个成本相等,则该解决方案将包含一条超过最小路径数的路径。把它看作是负载平衡路由器;如果两条路线的成本相同,您将同时使用它们

我想要最少数量的路线,要做到这一点,我需要一个成本矩阵,在一定的公差范围内,没有两个相等的成本

目前,我正在通过一个烘焙函数传递成本矩阵,该函数测试每个条目是否与其他条目相等,如果匹配,则将其移动固定百分比。然而,这种方法似乎需要N^2个比较,如果起始值都相同,最后的成本将大r^N。r是任意的固定百分比。还有一个问题是,通过乘以百分比,您最终将位于另一个值之上。因此,问题似乎有一个递归元素,或者至少是重复检查,这会使代码膨胀

当前的实现基本上不是很好,我不会在这里使用代码粘贴我的GOTO,让大家都来模拟,我想改进它。我所追求的东西有名字吗?有标准的实现吗

例如:
{1,1,2,3,4,5}tol=0.05变为{1,1.05,2,3,4,5}

不要将所有值相互比较,尝试更线性的方法:

危险!前面的伪代码

seen = {}
for i=0:
  for j=0:
    if cost_matrix[i,j] in seen:
      cost_matrix[i,j] = cost_matrix[i,j]+percentage
    append cost_matrix[i,j] to seen
    j++
  i++

不要太挑剔,但我认为你描述的是一个最短路径问题

OR中的运输问题是一个更为具体的问题,有一组起点和一组目的地。在你的问题中,你有通过几个点的路径,但有时你会得到两条最短路径,因为成本加起来等于总成本。对吧?


这里有一个关于处理所有对中的冗余最短路径问题的好方法

我想你在任务中可能会错过一些条件。为什么不能使用具有适当平衡比率的整套路径?如果您对可以使用的路径数量有限制,那么它也应该应用于您的最短路径集。基本上,这实际上不是一个流通过的路径问题。我正在寻找一个最小的集,将做运输,并为此我可能会采取所有冗余。消除冗余的一种方法是人为增加成本。这是一种改进,但我不仅仅是在寻找精确的匹配。。。因此,我需要一个在seed函数中项的tol范围内的函数,而不是in-seed。