Оптимизация СМО
Автор
function flGplot(flG, flI, nl, надпись)
fG = SimpleDiGraph(length(nl))
edge_weights = Dict()
for i in 1:size(flG, 2)
add_edge!(fG, flG[1, i], flG[2, i])
edge_weights[(flG[1, i], flG[2, i])] = flI[i]
end
sources = unique(flG[1, :])
targets = unique(flG[2, :])
all_nodes = 1:length(nl);
node_x = zeros(length(all_nodes))
node_y = zeros(length(all_nodes))
for node in all_nodes
if node in sources
node_x[node] = 0.0
elseif node in targets
node_x[node] = 4.0
else
node_x[node] = 2.0
end
end
for (i, node) in enumerate(all_nodes)
node_y[node] = 1.0 - (i-1) / (length(all_nodes)-1) * 2.0
end
gplot(fG, node_x, node_y,
nodelabel=nl,
edgelabel=[edge_weights[(e.src, e.dst)] for e in edges(fG)],
nodefillc=colorant"rgb(245, 64, 33)",
arrowlengthfrac=0.15,
edgelabelc=colorant"black",
edgestrokec=colorant"#2E5CB8",
EDGELINEWIDTH = 0.8,
NODESIZE = 0.06,
nodelabelc=colorant"white",
nodelabelsize=10,
edgelabelsize=15,
edgelabeldisty=-0.9,
title=надпись
)
end