Flujo de costo mínimo: optimización de red en R

Estoy tratando de implementar un "Costo mínimo de flujo de red"solución de problema de transporte enR.

Entiendo que esto podría implementarse desde cero usando algo comolpSolve. Sin embargo, veo que hay un convenienteigraph implementación para "Flujo máximo". Tal solución preexistente sería mucho más conveniente, pero no puedo encontrar una función equivalente para el Costo mínimo.

Hay unigraph función que calcula las soluciones de flujo de red de costo mínimo, o hay una manera de aplicar eligraph::max_flow funcionar a un problema de costo mínimo?

igraph ejemplo de red:

library(tidyverse)
library(igraph)

edgelist <- data.frame(
  from = c(1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6, 7, 8),
  to = c(2, 3, 4, 5, 6, 4, 5, 6, 7, 8, 7, 8, 7, 8, 9, 9),
  capacity = c(20, 30, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99),
  cost = c(0, 0, 1, 2, 3, 4, 3, 2, 3, 2, 3, 4, 5, 6, 0, 0))

g <- graph_from_edgelist(as.matrix(edgelist[,c('from','to')]))

E(g)$capacity <- edgelist$capacity
E(g)$cost <- edgelist$cost

plot(g, edge.label = E(g)$capacity)
plot(g, edge.label = E(g)$cost)

Esta es una red con bordes direccionales, un "nodo fuente" (1) y un "nodo sumidero" (9). Cada borde tiene una "capacidad" (aquí a menudo se pone como 99 para ilimitado) y un "costo" (el costo de una unidad que fluye a través de este borde). Quiero encontrar el vector entero de flujos (x, longitud = 9) que minimiza el costo mientras transmite un flujo predefinido a través de la red (digamos 50 unidades, desde el nodo 1 al nodo 9).

Descargo de responsabilidad: esta publicación hizo una pregunta similar, pero no dio como resultado una respuesta satisfactoria y está bastante anticuada (2012).

Respuestas a la pregunta(2)

Su respuesta a la pregunta