Issue with vehicle break

Can anyone help me out with the break constraint in JSPRIT? For your reference, I have created this small code.

package com.graphhopper.jsprit.examples;

import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm;
import com.graphhopper.jsprit.core.algorithm.box.Jsprit;
import com.graphhopper.jsprit.core.problem.Location;
import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem;
import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.FleetSize;
import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingTransportCosts;
import com.graphhopper.jsprit.core.problem.job.Break;
import com.graphhopper.jsprit.core.problem.job.Service;
import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution;
import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindow;
import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl;
import com.graphhopper.jsprit.core.problem.vehicle.VehicleType;
import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl;
import com.graphhopper.jsprit.core.reporting.SolutionPrinter;
import com.graphhopper.jsprit.core.util.Solutions;
import com.graphhopper.jsprit.core.util.VehicleRoutingTransportCostsMatrix;

import java.util.Collection;

/**

  • Illustrates how you can use jsprit with an already compiled distance and time matrix.

  • @author schroeder
    */
    public class CostMatrixExample {
    public static void main(String[] args) {
    VehicleType type = VehicleTypeImpl.Builder.newInstance(“type”).addCapacityDimension(0, 50).setCostPerDistance(1).setCostPerTime(2).build();

     Break lunchBreak = Break.Builder.newInstance("Lunch")
         .setServiceTime(1) // 1 minutes
         .setTimeWindow(TimeWindow.newInstance(15, 20))
         .build();
    
     VehicleImpl vehicle = VehicleImpl.Builder.newInstance("vehicle")
         .setStartLocation(Location.newInstance("0")).setType(type).setBreak(lunchBreak).build();
    
     Service s1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(Location.newInstance("1")).build();
     Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(Location.newInstance("2")).build();
     Service s3 = Service.Builder.newInstance("3").addSizeDimension(0, 1).setLocation(Location.newInstance("3")).build();
    /*
      * Assume the following symmetric distance-matrix
     * from,to,distance
     * 0,1,10.0
     * 0,2,20.0
     * 0,3,5.0
     * 1,2,4.0
     * 1,3,1.0
     * 2,3,2.0
     *
     * and this time-matrix
     * 0,1,5.0
     * 0,2,10.0
     * 0,3,2.5
     * 1,2,2.0
     * 1,3,0.5
     * 2,3,1.0
     */
     //define a matrix-builder building a symmetric matrix
     VehicleRoutingTransportCostsMatrix.Builder costMatrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(true);
     costMatrixBuilder.addTransportDistance("0", "1", 10.0);
     costMatrixBuilder.addTransportDistance("0", "2", 20.0);
     costMatrixBuilder.addTransportDistance("0", "3", 5.0);
     costMatrixBuilder.addTransportDistance("1", "2", 4.0);
     costMatrixBuilder.addTransportDistance("1", "3", 1.0);
     costMatrixBuilder.addTransportDistance("2", "3", 2.0);
    
     costMatrixBuilder.addTransportTime("0", "1", 10.0);
     costMatrixBuilder.addTransportTime("0", "2", 20.0);
     costMatrixBuilder.addTransportTime("0", "3", 5.0);
     costMatrixBuilder.addTransportTime("1", "2", 4.0);
     costMatrixBuilder.addTransportTime("1", "3", 1.0);
     costMatrixBuilder.addTransportTime("2", "3", 2.0);
    
     VehicleRoutingTransportCosts costMatrix = costMatrixBuilder.build();
    
     VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().setFleetSize(FleetSize.FINITE).setRoutingCost(costMatrix)
         .addVehicle(vehicle).addJob(s1).addJob(s2).addJob(s3).build();
    
     VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp);
    
     Collection<VehicleRoutingProblemSolution> solutions = vra.searchSolutions();
    
     SolutionPrinter.print(Solutions.bestOf(solutions));
     SolutionPrinter.print(vrp, Solutions.bestOf(solutions), SolutionPrinter.Print.VERBOSE);
    

    }
    }
    Here, no matter what time window I specify in my lunch break, for almost all of the cases JSPRIT assigns the break before delivering any order. I am facing the same issue in my big project. Any idea about this?

±--------±---------------------±----------------------±----------------±----------------±----------------±----------------+
| route | vehicle | activity | job | arrTime | endTime | costs |
±--------±---------------------±----------------------±----------------±----------------±----------------±----------------+
| 1 | vehicle | start | - | undef | 0 | 0 |
| 1 | vehicle | break | Lunch | 0 | 16 | 0 |
| 1 | vehicle | service | 1 | 26 | 26 | 30 |
| 1 | vehicle | service | 2 | 30 | 30 | 42 |
| 1 | vehicle | service | 3 | 32 | 32 | 48 |
| 1 | vehicle | end | - | 37 | undef | 63 |
±-------------------------------------------------------------------------------------------------------------------------------+

As you can see break is always assigned in the beginning.
Can anyone help me out?