在 CPLEX 中将路径定义为一组边序列
Defining paths as a set of sequences of edges in CPLEX
我有一个道路网络图,由节点集 N={1,2,3,...} 和两对节点之间的边集组成,如 E={(1,3), (1 ,5), (2,3), (2,4).....}。我也想定义一组路径,作为一组边缘序列,这样 Links= {((1,3),(3,2),(2,4)),((1,3), (3,5)), ((2,3),(3,6),(6,5),(5,2)),...}.
下面是我的代码的初始化,作为例子:
int N={1,2,3,4,5,6}
tuple edge
{int i;
int j;
}
{edge} E={<1,3>, <1,5>, <2,3>, <2,4>, <3,2>, <3,4>, <3,5>, <3,6>, <5,6>, <5,4>, <6,4>};
在这里我不知道如何继续将路径集定义为一组边序列。如果您能帮助我,我将不胜感激!提前致谢..
你可以试试集合数组:
{int} N={1,2,3,4,5,6};
tuple edge
{int i;
int j;
}
{edge} E={<1,3>, <1,5>, <2,3>, <2,4>, <3,2>, <3,4>, <3,5>, <3,6>, <5,6>, <5,4>, <6,4>};
{edge} Links[E]= [{<1,3>,<3,2>,<2,4>},{<1,3>, <3,5>}];
execute
{
writeln(Links);
}
然后如果你需要一个 dvar 布尔数组
{int} N={1,2,3,4,5,6};
tuple edge
{int i;
int j;
}
{edge} E={<1,3>, <1,5>, <2,3>, <2,4>, <3,2>, <3,4>, <3,5>, <3,6>, <5,6>, <5,4>, <6,4>};
{edge} Links[E]= [{<1,3>,<3,2>,<2,4>},{<1,3>, <3,5>}];
execute
{
writeln(Links);
}
tuple t
{
edge e;
int rank;
}
{t} s=union(e in E) {<e,i> | i in 1..card(Links[e])};
execute
{
writeln(s);
}
dvar boolean x[s];
subject to
{
}
我有一个道路网络图,由节点集 N={1,2,3,...} 和两对节点之间的边集组成,如 E={(1,3), (1 ,5), (2,3), (2,4).....}。我也想定义一组路径,作为一组边缘序列,这样 Links= {((1,3),(3,2),(2,4)),((1,3), (3,5)), ((2,3),(3,6),(6,5),(5,2)),...}.
下面是我的代码的初始化,作为例子:
int N={1,2,3,4,5,6}
tuple edge
{int i;
int j;
}
{edge} E={<1,3>, <1,5>, <2,3>, <2,4>, <3,2>, <3,4>, <3,5>, <3,6>, <5,6>, <5,4>, <6,4>};
在这里我不知道如何继续将路径集定义为一组边序列。如果您能帮助我,我将不胜感激!提前致谢..
你可以试试集合数组:
{int} N={1,2,3,4,5,6};
tuple edge
{int i;
int j;
}
{edge} E={<1,3>, <1,5>, <2,3>, <2,4>, <3,2>, <3,4>, <3,5>, <3,6>, <5,6>, <5,4>, <6,4>};
{edge} Links[E]= [{<1,3>,<3,2>,<2,4>},{<1,3>, <3,5>}];
execute
{
writeln(Links);
}
然后如果你需要一个 dvar 布尔数组
{int} N={1,2,3,4,5,6};
tuple edge
{int i;
int j;
}
{edge} E={<1,3>, <1,5>, <2,3>, <2,4>, <3,2>, <3,4>, <3,5>, <3,6>, <5,6>, <5,4>, <6,4>};
{edge} Links[E]= [{<1,3>,<3,2>,<2,4>},{<1,3>, <3,5>}];
execute
{
writeln(Links);
}
tuple t
{
edge e;
int rank;
}
{t} s=union(e in E) {<e,i> | i in 1..card(Links[e])};
execute
{
writeln(s);
}
dvar boolean x[s];
subject to
{
}