All Downloads are FREE. Search and download functionalities are using the official Maven repository.

mgo.test.TestOSE.scala Maven / Gradle / Ivy

package mgo.test

import mgo.evolution._
import better.files._

object RastriginOSE extends App {
  import algorithm._
  import niche._
  import OSE._

  def dimensions = 3

  val ose = OSE(
    mu = 100,
    lambda = 100,
    fitness = (x, _) => Vector(rastrigin.compute(x)),
    limit = Vector(10.0),
    origin =
      (c, _) =>
        boundedGrid(
          lowBound = Vector.fill(dimensions)(-10.0),
          highBound = Vector.fill(dimensions)(10.0),
          definition = Vector.fill(dimensions)(100))(c),
    continuous = rastrigin.continuous(dimensions))

  val (finalState, finalPopulation) =
    ose.
      until(afterGeneration(5000)).
      trace { (s, is) => println(s.generation + " " + s.s._1.size) }.
      eval(new util.Random(42))

  File("/tmp/ose.csv") write OSE.result(ose, finalState, finalPopulation).map(_.continuous.mkString(",")).mkString("\n")
}

object NoisyRastriginOSE extends App {

  import algorithm._
  import niche._
  import NoisyOSE._

  def dimensions = 3

  val ose = NoisyOSE(
    mu = 100,
    lambda = 100,
    fitness = (rng, x, _) => Vector(rastrigin.compute(x) + rng.nextGaussian() * 0.25),
    aggregation = averageAggregation(_),
    limit = Vector(10.0),
    origin =
      (c, _) =>
        boundedGrid(
          lowBound = Vector.fill(dimensions)(-10.0),
          highBound = Vector.fill(dimensions)(10.0),
          definition = Vector.fill(dimensions)(100))(c),
    continuous = rastrigin.continuous(dimensions))

  val (finalState, finalPopulation) =
    ose.
      until(afterGeneration(50000)).
      trace { (s, is) => println(s.generation + " " + s.s._1.size) }.
      eval(new util.Random(42))

  File("/tmp/ose.csv") write NoisyOSE.result(ose, finalState, finalPopulation).map(_.continuous.mkString(",")).mkString("\n")
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy