用于为传输问题优化生成非等成本阵列的算法

时间:2010-05-31 18:09:06

标签: c# algorithm optimization

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

优化器工作正常,但如果两个成本相等,则解决方案包含一个路径,即最小路径数。 (将其视为负载平衡路由器;如果两条路由的成本相同,则两者都使用它们。)

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

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

当前的实现基本上不是很好(我不会在这里粘贴我的GOTO代码,你们都要模拟),我想改进它。 我的目标是否有名称,是否有标准实施?

实施例: {1,1,2,3,4,5}(tol = 0.05)变为{1,1.05,2,3,4,5}

2 个答案:

答案 0 :(得分:0)

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

危险!前面的伪代码......

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++

答案 1 :(得分:0)

不要过于挑剔,但我认为你在描述最短的路径问题。

OR中的“运输问题”是一个更具体的问题,有一组起源和一组目的地。在您的问题中,您有几个点的路径,但有时您会得到两条最短的路径,因为成本加起来相同。对?

这是一个很好的paper处理所有对中最短路径问题的冗余。