A library for local search and stochastic optimization in Go.

View project onGitHub

Introduction

Welcome to the site for finch, a library for local search and stochastic optimization in Go. The following algorithms have been implemented in this project:

  • Hill climbing (steepest ascent, random-restart and Stochastic
  • Beam Search (standard and stochastic)
  • Tabu search (standard and stochastic)
  • Simulated annealing
  • Genetic algorithms

Click the links on the right for more information on the individual algorithms. The code for this project is all open source and can be found on this project's GitHub page.

Using Finch

Finch was designed for use with Go 1.2. Some of the examples also use the Plotinum library for producing plots of the output. All of the functions were built to be as general as possible, so that they are useful for a wide variety of problems. In order to allow for this flexibility, the functions are built so that certain sub-functions must be passed in as parameters. On the examples page, there are some basic examples of sub-functions to be passed in to the main optimization functions that can be easily modified for a wide range of problems.

Modifying the code

The code is subject to the MIT License, a copy of which can be found in the GitHub repository. Please feel free to use or modify the code subject to the terms of the license. And please reach out if you have any suggestions for improvements.