Skip to content

Java library for randomized optimization. Includes several toy problems and experimention harness

Notifications You must be signed in to change notification settings

kylejmcintyre/mcopt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 

Repository files navigation

mcopt

Java library for randomized optimization. Includes several toy problems and experimentation harness.

This code was developed primarily in support of my enrollment in CS7641 at Georgia Tech. It supports hill-climbing, simulated annealing, genetic algorithms (extensible crossover/mutation capabilities) as well as a wrapper around ABAGAIL's (https://github.com/pushkar/ABAGAIL) implementation of the MIMIC algorithm.

Highlights include:

  • Uses Java generics to represent the problem's encoding type. Thus the algorithms are separate from various possible encoding types.
  • Toy problems for "I'm thinking of a number", Four Peaks, and Graph Maximum Cut
  • Support for automatic termination of the optimization loop
  • Support for automatic restarts
  • Experiment harness handles invoking RO algorithm multiple times and computing summary statistics on performance
  • Computes useful metrics such as the average number of fitness function evaluations to maximize a problem with a known solution, or the cost in fitness function evals per unit of fitness for problems where the optimum is unkown.

See example.tsv in this directory for example experiment output from the four peaks problem.

mcopt can be used for continuous space problems. I used it to optimize weights in an ANN. However, no continous examples are currently included in the repo. MIMIC only works on BitSet problems.

Dependencies:

  • Apache commons lang3
  • Apache commons math
  • ABAGAIL (optional, required to use MIMIC)

About

Java library for randomized optimization. Includes several toy problems and experimention harness

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages