Routing telephone calls


    {  Exmpl12.3-1_RoutingPhoneCalls.mpl  }

    {  Applications of Optimization with Xpress-MP  }

    {  Chapter 12.3, Routing Telephone Calls,  Size: 16x17,  Page 245 }


TITLE
    RoutingPhoneCalls;

INDEX
    call := (n_ni,n_t,n_v,ni_v,p_t);
    arc  := (n_ni,n_p,p_n,p_ni,p_v,ni_n,ni_p,ni_t,v_p,v_t,t_v,t_ni);
    path := 1..17;

DATA
    Cap[arc] := (120,300,300,300,200,120,300,80,200,70,70,80);
    Dem[call] := (100, 80, 75,100, 70);
    Route[path,arc] := [1,n_ni,1,
                        2,n_p,1,2,p_ni,1,
                        3,n_p,1,3,p_v,1,3,v_t,1,3,t_ni,1,
                        4,n_p,1,4,p_v,1,4,v_t,1,
                        5,n_p,1,5,p_ni,1,5,ni_t,1,
                        6,n_ni,1,6,ni_t,1,
                        7,n_ni,1,7,ni_p,1,7,p_v,1,7,v_t,1,
                        8,n_p,1,8,p_v,1,
                        9,n_p,1,9,p_ni,1,9,ni_t,1,9,t_v,1,
                       10,n_p,1,10,ni_t,1,10,t_v,1,
                       11,n_ni,1,11,ni_t,1,11,t_v,1,
                       12,ni_n,1,12,n_p,1,12,p_v,1,
                       13,ni_p,1,13,p_v,1,
                       14,ni_t,1,14,t_v,1,
                       15,p_v,1,15,v_t,1,
                       16,p_n,1,16,n_ni,1,16,ni_t,1,
                       17,p_ni,1,17,ni_t,1]
    CIndex[path,call] := [1,n_ni,1,
                          2,n_ni,1,
                          3,n_ni,1,
                          4,n_t,1,
                          5,n_t,1,
                          6,n_t,1,
                          7,n_t,1,
                          8,n_v,1,
                          9,n_v,1,
                         10,n_v,1,
                         11,n_v,1,
                         12,ni_v,1,
                         13,ni_v,1,
                         14,ni_v,1,
                         15,p_t,1,
                         16,p_t,1,
                         17,p_t,1];

VARIABLE
    Flow[path];

MODEL

    MAX TotFlow = SUM(path: Flow);

SUBJECT TO

    FlowWithinDemand[call] -> FDEM:
        SUM(path: Flow WHERE CIndex > 0) <= Dem;

    ArcCapacities[arc] -> ACAP:
        SUM(path: Flow WHERE Route > 0) <= Cap;

INTEGER
    Flow;

END


Back To Top | Maximal Home Page | List of Models | Previous Page | Next Page