我有一个复杂的问题,我必须从先前构建的图形中评估边缘的总和.朱莉娅似乎没有处理带边的条件和.
这是一个类似于我想要解决的问题的简单问题:
module EssaiModule
using LightGraphs, MetaGraphs
g = DiGraph(6)
mg = MetaDiGraph(g, 1.0)
add_vertex!(mg)
add_edge!(mg,1,2)
add_edge!(mg,1,3)
add_edge!(mg,1,4)
add_edge!(mg,2,4)
add_edge!(mg,2,5)
add_edge!(mg,3,5)
add_edge!(mg,5,6)
add_edge!(mg,4,6)
set_props!(mg,3,Dict(:port=>1,:vessel=>2))
set_props!(mg,1,Dict(:port=>1,:vessel=>0))
set_props!(mg,2,Dict(:port=>1,:vessel=>0))
set_props!(mg,4,Dict(:port=>1,:vessel=>2))
set_props!(mg,5,Dict(:port=>0,:vessel=>2))
set_props!(mg,6,Dict(:port=>0,:vessel=>0))
SI = sum(1 for e in edges(mg);get_prop(g,dst(e),:vessel)==2 && get_prop(g,dst(e),:port)==1)
println(SI)
end
Run Code Online (Sandbox Code Playgroud)
当我测试它时,我得到了错误
#LoadError: MethodError: no method matching dst(::Irrational{:e})
Run Code Online (Sandbox Code Playgroud)
我真的需要弄清楚如何与条件求和,因为在我的实际问题中,我将这个和放在一个约束中,就像这样,边ed和和x变量之和:
@constraint(model, cM[e in edges(g)], x[e] + sum(x[ed] for ed in edges(g) ; fn1(ed) == 2 && fn2(ed) == 1) <= 1 + y)
Run Code Online (Sandbox Code Playgroud)
我有错误信息说
#LoadError: UndefVarError: ed not …Run Code Online (Sandbox Code Playgroud)