Я не правильно инициализирую свой список? Попытка добавить в пустой список возвращает только последнее значение - R - PullRequest
0 голосов
/ 07 октября 2019

Здесь maxFlowFordFulkerson() возвращает значение для максимального потока, которое равно 28, когда я использую матрицу arcs в качестве аргумента. Однако мне нужно умножить столбец capacity в дугах на константу k, чтобы увидеть, как на максимальный поток влияет увеличение емкости, и сохранить эти значения в матрице sensitivity. Я настроил tempArcs как временную версию матрицы arcs с емкостями, умноженными на k[i].

Моя проблема заключается в том, что единственными значениями, которые сохраняются в потоках, являются значения изПоследняя итерация. Я думал, что правильно инициализировал свои списки, так почему это не дает мне другие значения?

library(optrees)

nodes = c(1:8)

from = c(1,1,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7)
to = c(2,3,4,5,4,6,7,3,5,7,2,6,8,5,7,8,6,8)
capacity = c(20,15,10,15,13,15,10,13,10,12,15,7,10,7,8,8,8,10)
arcs = cbind(from, to, capacity)

k = c(1:10)
flows = c()
for (i in seq_along(k))
  tempArcs = cbind(arcs[,-3], arcs[,3]*k[i])
  max = maxFlowFordFulkerson(nodes, tempArcs)
  flows = append(flows, max$max.flow)

sensitivity = cbind(k, flows)
sensitivity

       k flows
 [1,]  1   280
 [2,]  2   280
 [3,]  3   280
 [4,]  4   280
 [5,]  5   280
 [6,]  6   280
 [7,]  7   280
 [8,]  8   280
 [9,]  9   280
[10,] 10   280
...