Example #1
0
  @Override
  public void performIteration(NichingAlgorithm alg) {
    Preconditions.checkState(
        alg.getOptimisationProblem() instanceof DeratingOptimisationProblem,
        "DeratingNichePSO can only be used with DeratingOptimisationProblem.");
    DeratingOptimisationProblem problem =
        (DeratingOptimisationProblem) alg.getOptimisationProblem();

    List<PopulationBasedAlgorithm> subswarms =
        List.<PopulationBasedAlgorithm>iterableList(alg.getPopulations());
    subswarms =
        onMainSwarm(Algorithms.<PopulationBasedAlgorithm>initialise())
            .andThen(phase1(alg))
            .andThen(onSubswarms(clearDeratingSolutions(problem)))
            .andThen(phase2(alg))
            .andThen(joinAndMerge(alg, subswarms))
            .f(
                NichingSwarms.of(
                    alg.getMainSwarm(), Collections.<PopulationBasedAlgorithm>emptyList()))
            ._2();

    problem.clearSolutions();
    problem.addSolutions(
        subswarms
            .map(Solutions.getPosition().o(Algorithms.<PopulationBasedAlgorithm>getBestSolution()))
            .toCollection());
    alg.setPopulations(Lists.newLinkedList(subswarms.toCollection()));
    alg.getMainSwarm().setOptimisationProblem(problem);
    // dont need to set the main swarm because it gets reinitialised
  }
  @Test
  public void offspringCreation() {
    Individual i1 = new Individual();
    Individual i2 = new Individual();

    i1.put(Property.CANDIDATE_SOLUTION, Vector.of(0.0, 1.0, 2.0, 3.0, 4.0));
    i2.put(Property.CANDIDATE_SOLUTION, Vector.of(5.0, 6.0, 7.0, 8.0, 9.0));

    i1.setFitnessCalculator(new MockFitnessCalculator());
    i2.setFitnessCalculator(new MockFitnessCalculator());

    List<Individual> parents = Lists.newArrayList(i1, i2);

    CrossoverOperator crossoverStrategy = new CrossoverOperator();
    crossoverStrategy.setCrossoverStrategy(new OnePointCrossoverStrategy());
    crossoverStrategy.setCrossoverProbability(ConstantControlParameter.of(1.0));
    List<Individual> children = crossoverStrategy.crossover(fj.data.List.iterableList(parents));

    Vector child1 = (Vector) children.get(0).getPosition();
    Vector child2 = (Vector) children.get(1).getPosition();
    Vector parent1 = (Vector) i1.getPosition();
    Vector parent2 = (Vector) i2.getPosition();

    Assert.assertEquals(2, children.size());
    for (int i = 0; i < i1.getDimension(); i++) {
      Assert.assertNotSame(child1.get(i), parent1.get(i));
      Assert.assertNotSame(child1.get(i), parent2.get(i));
      Assert.assertNotSame(child2.get(i), parent1.get(i));
      Assert.assertNotSame(child2.get(i), parent2.get(i));
    }
  }
  @Override
  public Object fromBinaryJava(byte[] bytes, Class<?> manifest) {
    OrderFormat orderFormat =
        SerializationExtension.get(system).deserialize(bytes, OrderFormat.class).get();

    return new Order(orderFormat.id, List.iterableList(orderFormat.items), orderFormat.cancelled);
  }
Example #4
0
  /** {@inheritDoc} */
  @Override
  public void algorithmInitialisation() {
    topology =
        fj.data.List.iterableList(initialisationStrategy.<HoneyBee>initialise(optimisationProblem));

    int numWorkerBees = (int) (workerBeePercentage.getParameter() * topology.length());
    P2<fj.data.List<HoneyBee>, fj.data.List<HoneyBee>> split = topology.splitAt(numWorkerBees);
    this.workerBees = split._1();
    this.onlookerBees =
        split
            ._2()
            .map(
                new F<HoneyBee, HoneyBee>() {
                  public HoneyBee f(HoneyBee b) {
                    return new OnlookerBee((WorkerBee) b);
                  }
                });

    explorerBee.setExplorerBeeUpdateLimit(this.explorerBeeUpdateLimit);
  }
Example #5
0
  private List<Integer> getNeighbourhood(final E e) {
    int currentIteration = getIteration();
    if (currentIteration > lastIteration || nHoods == null || perCall) {
      lastIteration = currentIteration;
      nHoods =
          getNeighbourhoods(distanceMeasure, radius, neighbourhoodSize)
              .f(
                  P.p(
                      List.<Entity>iterableList((java.util.List<Entity>) entities).zipIndex(),
                      List.<List<Integer>>nil()));
    }

    final int index = entities.indexOf(e);
    return nHoods
        .find(
            new F<List<Integer>, Boolean>() {
              @Override
              public Boolean f(List<Integer> a) {
                return a.exists(Equal.intEqual.eq(index));
              }
            })
        .orSome(List.single(index));
  }