【问题标题】:R programme for solving TP with my method用我的方法解决TP的R程序
【发布时间】:2020-10-16 15:53:34
【问题描述】:

我开发了解决TP的新方法,但是我的编程速度很慢, 能帮忙写个程序吗???

**III. AOCM 算法 STEP 1. 从运输表的每一行的每个元素中减去最小成本,并将其放在该元素的右上方。

STEP 2.从运输表的每一列的每个元素中减去最小的成本,并将其放在该元素的右下方。

STEP 3. 创建一个新矩阵,其元素是步骤 1 和步骤 2 的元素的右上和右下的平均值。

第 4 步。通过取行和列中的最小值和下一个最小值之间的差值来查找行和列罚分。

步骤 5. 确定最大罚分并将最大可能数量分配给相应行或列中元素最小值的单元格。 如果最大罚分之间存在平局,则可以通过取最小元素和次小元素之间的差来打破平局,如果仍然没有打破平局,则重复下一个最小元素的过程,以此类推,如果仍然没有打破平局,则选择随意。

步骤 6。重复步骤 5 到步骤 6,直到满足轮辋要求。

步骤 7. 将这些分配的值放入相应单元格中的原始 TT 中。

步骤 8. 计算 TT 的运输成本。此计算为单位运输成本与分配数量的乘积之和。**

【问题讨论】:

  • @cbo 请看这里
  • 好的,有很多! :)
  • 是的。我的编程速度很慢,你能给我推荐一本学习“R”的好书吗
  • 免费在线可以看R for Data Science,更多参考here

标签: r


【解决方案1】:

在第 4 点之后我还没有完全理解您的作业,但这应该可以帮助您开始(使用您在第一个问题中提供的数据):

dfr <- read.table(text = "10  7 19 11
        5  5  7  8
        12  9 13 11
        8 10 11  9")

# step 1 to 2
drow <- apply(dfr, 1, function(x){x-min(x)})
dcol <- apply(dfr, 2, function(x){x-min(x)})

# 3
dmean <- (drow + dcol)/2
dmean
#>    [,1] [,2] [,3] [,4]
#> V1  4.0    1  7.5  1.5
#> V2  0.0    0  0.0  1.0
#> V3  9.5    3  5.0  3.0
#> V4  3.5    4  3.0  1.0

# 4 row & col penalties
drow_min <- apply(dmean, 1, function(x){
    xord <- x[order(x)] ;
    xord[2] - xord[1]})
drow_min
#>  V1  V2  V3  V4 
#> 0.5 0.0 0.0 2.0

dcol_min <- apply(dmean, 2, function(x){
    xord <- x[order(x)] ;
    xord[2] - xord[1]})
dcol_min
#> [1] 3.5 1.0 3.0 0.0

那么你可以在 5 中使用 ifelsestructure ; while 为 6 并使用 readr::write_excel_csv() 将您的数据导出回 excel。

祝你好运!

【讨论】:

猜你喜欢
  • 2013-08-14
  • 2020-02-01
  • 1970-01-01
  • 2022-06-12
  • 2016-01-28
  • 1970-01-01
  • 2012-01-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多