2017-07-27 1 views
0

私はCplexを初めて使用していますPathOfEdge(作業経路がiと交差するノードの集合)とPathOfOut(作業経路がiと交差しないノードの集合)という2つの集合を定義したい) cplexでは、どのようにPathOfOutを設定することができますか?プレックスで2つのセットを定義する

// Basic network configuration nodes and links 

{string} Hubs = ...; 

tuple link { 

    key string link_id; 
    string org; 
    string dst; 
} 
tuple demand { 
    string org; 
    string dst; 
} 
tuple path_edge 
{ demand request; 
    int k_sp; 

    {link} Links = ...; 
    // basic demand creation based on origin and destination node. 
    {demand} Demands ={<source,tail>|source in Hubs, tail in Hubs: source!= tail }; 
    //Set of eligible routes for recovery of the ith span failure. 
    {link} PathOfDemands[Demands][K_sp]=...; 

PathOfEdgeは正しいですか?

//PathOfEdge 
{path_edge} PathOfEdge[l in Links]= {<dem,k>|dem in Demands, k in K_sp : l in PathOfDemands[dem][k]}; 

ネットワークにおけるk最短経路のための私のコードの小さな部分:

PathOfDemands=[ 
//node1 
//node1->2 

[{<link1 , node1, node2>}, {<link2, node1, node6>,<link11, node6, node2>},  {<link2 , node1, node6>,<link5 , node6, node5>,<link6 , node5, node3>,<link13, node3, node2>}], 

//node 1->6 
[{<link2 , node1, node6>},  {<link1, node1, node2>,<link3 , node2, node6>},  {<link1, node1, node2>,<link4 , node2, node3>,<link14, node3, node5>,<link12, node5, node6>}], 

//node 1->3 
[{<link1 , node1, node2>,<link4 , node2, node3>},  {<link2 , node1, node6>,<link11, node6, node2>,<link4 , node2, node3>}, {<link2 , node1, node6>, <link5 , node6, node5>,<link6 , node5, node3>}], 

//node 1->5 
[{<link2 , node1, node6>,<link5 , node6, node5>}, {<link1 , node1, node2>,<link3 , node2, node6>,<link5 , node6, node5>},  {<link1 , node1, node2>, <link3 , node2, node6>,<link6 , node3, node5>}], 

//node 1->4 
[{<link1 , node1, node2>,<link4 , node2, node3>,<link8 , node3, node4>},  {<link2 , node1, node6>,<link5 , node6, node5>,<link7 , node5, node4>},  {<link1 , node1, node2>,<link5 , node3, node4>,<link5 , node6, node5>,<link7 , node5, node4>}], 

//node2 

//node2->1 
. 
. 
. 
//node 6->5 

ノードとネットワークのリンク。

//define nodes of n6s8 network. 
     Hubs = { 
      node1, 
      node2, 
      node3, 
      node4, 
      node5, 
      node6, 

    }; 
    // 
    Links = { 
     <link1 , node1, node2>, 
     <link2 , node1, node3>, 
     <link3 , node2, node3>, 
     <link4 , node2, node4>, 
     <link5 , node3, node4>, 
     <link6 , node3, node5>, 
     <link7 , node4, node5>, 
     <link8 , node4, node6>, 
     <link9 , node5, node6>, 
    ....} 

答えて

1

これは右になります。

tuple link { 
    key string link_id; 
    string org; 
    string dst; 
} 

{link} Links={<"l1","A","B">,<"l2","B","C">,<"l3","C","D">,<"l4","D","E">}; 

// basic demand creation based on origin and destination node. 
{int} Demands = {1,2}; 
{int} K_sp={3,4}; 

//Set of eligible routes for recovery of the ith span failure. 
{link} PathOfDemands[Demands][K_sp]=[[ 
{<"l1","A","B">,<"l3","C","D">,<"l4","D","E">}, 
{<"l2","B","C">,<"l3","C","D">,<"l4","D","E">}], 
[{<"l1","A","B">,<"l2","B","C">,<"l4","D","E">}, 
{<"l1","A","B">,<"l2","B","C">,<"l3","C","D">}] 
]; 

tuple path_edge 
{ int request; 
    int k_sp; 
} 

//PathOfEdge 
{path_edge} PathOfEdge[l in Links]= 
{<dem,k>|dem in Demands, k in K_sp : l in PathOfDemands[dem][k]}; 


execute 
{ 
    writeln(PathOfEdge); 
} 

[{<1 3> <2 3> <2 4>} {<1 4> <2 3> <2 4>} {<1 3> <1 4> <2 4>} { 
     <1 3> <1 4> <2 3>}] 

し、後で

{path_edge} PathOfOut[l in Links]= 
{<dem,k>|dem in Demands, k in K_sp : l not in PathOfDemands[dem][k]}; 

execute 
{ 
    writeln(PathOfOut); 
} 

を与えるを与えます

について

関連する問題