Example #1
0
  /** Find an initial solution */
  public void initialization() {
    // ----------------------------------------
    // Setup the initialization
    setInit(
        (TRSPConstructiveHeuristic)
            getParams()
                .newInstance(
                    RUN_INIT_HEUR,
                    getInstance(),
                    getParams(),
                    getTourCtrHandler(),
                    getParams().newInitCostDelegate()));
    // ----------------------------------------
    mInitTimer.reset();
    mInitTimer.start();
    if (getParams().get(TRSPGlobalParameters.ALNS_PARALLEL)) {
      // TODO parallelize this
      int size =
          Math.min(
              getParams().get(TRSPGlobalParameters.ALNS_PALNS_POOL_SIZE),
              getParams().get(TRSPGlobalParameters.THREAD_COUNT));
      mInitPool = new ArrayList<TRSPSolution>(size);
      while (mInitPool.size() < size) {
        getInit().call();
        mInitPool.add(getInit().getSolution());
      }
      Collections.sort(mInitPool, new SolutionComparator<>(OptimizationSense.MINIMIZATION));
      mInitSol = mInitPool.get(mInitPool.size() - 1).clone();
    } else {
      getInit().call();
      setInitSol(getInit().getSolution());
    }
    mInitTimer.stop();

    getInitSol().getCostDelegate().unsetUnservedPenalty();
    getInitSol().getCostDelegate().evaluateSolution(getInitSol(), true, true);
  }