Decision Optimization

Decision Optimization

Delivers prescriptive analytics capabilities and decision intelligence to improve decision-making.


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Heterogenous VRPTW

    Posted 06/22/20 05:00 PM
    Hi everyone,

    I'm trying to implement a a Heterogenous VRP with Time Windows, however my code can´t find any solution and i don't understand why, if you please could help me! I'm already trying for a long time to solve this problem, bur it seems like impossible. I'll leave my code here, any doubt pls tell me.

    using CP;

    //Veiculos

    int v=...;
    range veiculos = 1..v;
    int M=1000;
    int DM=30000;
    //Clientes

    int NumeroClientes=...;
    range clientes=1..NumeroClientes;
    range clientesEarmazem=0..(NumeroClientes+1);//inclui o ponto de início no armazém e pontop de chegada ao armazém

    //Capacidade
    int Capacidade [veiculos]=...;

    //Procura
    int Procura [clientes]=...;

    //Janelas Temporais
    int LBTW[clientesEarmazem]=...;
    int UBTW[clientesEarmazem]=...;


    float S[clientesEarmazem];//Tempo de Serviço
    float dist [clientesEarmazem][clientesEarmazem]=...;
    float tempo [clientesEarmazem][clientesEarmazem]=...;

    float custo[veiculos]=...;

    execute TempoServico {
    for (var i in clientesEarmazem){
    if (i==0|| i==NumeroClientes+1) {
    S[i]==0;
    } else{
    S[i]=2.5+1.5*(Procura[i]/6);
    }
    }
    }

    //Variáveis de decisão

    dvar boolean x[veiculos][clientesEarmazem][clientesEarmazem];//Valor é 1 se o arco for percorrido
    dvar int W[veiculos][clientesEarmazem]; //variável de tempo
    dexpr float maxTempoPerdidoEntreClientes = max( i, j in clientesEarmazem)(LBTW[i]+ tempo [i][j] - UBTW[i]);

    //Função Objectivo

    minimize sum (k in veiculos, i,j in clientesEarmazem) (dist[i][j]*x[k][i][j]*custo[k]);

    subject to {
    //nenhum nó se visita a si próprio qualquer que seja o veiculo
    ct01: forall (i in clientesEarmazem, k in veiculos)
    x[k][i][i]==0;

    //Cada Cliente é visitado exatamente 1x
    ct02: forall (i in clientes)
    sum (k in veiculos, j in clientesEarmazem) x[k][i][j] == 1;

    //Quantidade transportada tem de ser menor que a capacidade do veículo
    ct03: forall ( k in veiculos)
    sum (i in clientes, j in clientesEarmazem) (Procura[i] * x[k][i][j]) <= Capacidade[k];

    //A um nó não pode ser atribuído mais que 1 veículo
    ct04: forall(k in veiculos)
    sum (j in clientes) x[k][0][j]==1;

    // Um veiculo so pode regressar de 1 nó
    ct05: forall (k in veiculos)
    sum (i in clientesEarmazem) x[k][i][NumeroClientes+1] <=1;

    //Um veículo que se dirige a um cliente terá de partir desse mesmo cliente
    ct06: forall (p in clientes, k in veiculos)
    sum (i in clientesEarmazem) x[k][i][p]- sum (j in clientesEarmazem) x[k][p][j]==0;
    //Janelas Temporais
    forall(i in clientesEarmazem, k in veiculos)
    LBTW[i] <= W[k][i] <= UBTW[i];

    //Cumprimento das janelas temporais
    ct08: forall (i,j in clientesEarmazem, k in veiculos)
    W[k][i] + S[i] + tempo [i][j] - W[k][j] <= (1-x[k][i][j])*M;
    //W[k][i] + S[i] + tempo [i][j] - (1-x[k][i][j])*maxTempoPerdidoEntreClientes <= W[k][j];

    //limitação do número de veículos à frota disponível
    ct10: forall(k in veiculos, j in clientesEarmazem)
    sum (k in veiculos, j in clientesEarmazem) x[k][0][j]<= v;

    //limitação da duração da rota
    ct11: forall (k in veiculos)
    W[k][NumeroClientes+1]-W[k][0]<=DM;
    /*ct11: forall (k in veiculos)
    sum(i in clientesEarmazem, j in clientesEarmazem)(tempo[i][j]+S[j])*x[k][i][j]<=DM; */


    };

    ------------------------------
    Mpicao
    ------------------------------

    #DecisionOptimization


  • 2.  RE: Heterogenous VRPTW

    Posted 06/23/20 01:00 AM
    What do you mean "it cannot find a solution"? Does it claim the model to be infeasible or does it not find a solution within a certain timeframe? In any case, in order to help you we would also need to see the data for your model because the issue may be the size or some data specifics. By the way, do you get optimal solutions for smaller instances of your model?

    ------------------------------
    Daniel Junglas
    ------------------------------



  • 3.  RE: Heterogenous VRPTW

    Posted 06/23/20 07:03 AM
    Hi Daniel, 

    Thanks for your aswer. I've already let the model run for 10 hours and it couldn´t find any solution, so probably the model is infesiable. I'll atach my .dat file and the excel file. I've already tried with samaller instances, like 20 nodes, and it works, but  my goal it's to get a solution for a bigger population.


    ------------------------------
    Manuel Eusébio
    ------------------------------