All Projects → cpmech → goga

cpmech / goga

Licence: BSD-3-Clause license
Go evolutionary algorithm is a computer library for developing evolutionary and genetic algorithms to solve optimisation problems with (or not) many constraints and many objectives. Also, a goal is to handle mixed-type representations (reals and integers).

Programming Languages

go
31211 projects - #10 most used programming language
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to goga

tiny gp
Tiny Genetic Programming in Python
Stars: ✭ 58 (+48.72%)
Mutual labels:  genetic-algorithm, evolutionary-algorithms, evolutionary-algorithm, evolutionary-computation
GeneticAlgorithmForFeatureSelection
Search the best feature subset for you classification mode
Stars: ✭ 82 (+110.26%)
Mutual labels:  genetic-algorithm, evolutionary-algorithms, evolutionary-algorithm
opt4j
Modular Java framework for meta-heuristic optimization
Stars: ✭ 25 (-35.9%)
Mutual labels:  genetic-algorithm, evolutionary-algorithms, evolutionary-algorithm
Geneticalgorithmpython
Source code of PyGAD, a Python 3 library for building the genetic algorithm and training machine learning algorithms (Keras & PyTorch).
Stars: ✭ 435 (+1015.38%)
Mutual labels:  optimization, genetic-algorithm, evolutionary-algorithms
GeneticsJS
Evolutionary algorithms library for the web 🧬
Stars: ✭ 25 (-35.9%)
Mutual labels:  genetic-algorithm, evolutionary-algorithms, evolutionary-computation
datafsm
Machine Learning Finite State Machine Models from Data with Genetic Algorithms
Stars: ✭ 14 (-64.1%)
Mutual labels:  genetic-algorithm, evolutionary-algorithms, evolutionary-computation
bio ik
MoveIt kinematics_base plugin based on particle optimization & GA
Stars: ✭ 104 (+166.67%)
Mutual labels:  optimization, genetic-algorithm, evolutionary-algorithm
Pagmo2
A C++ platform to perform parallel computations of optimisation tasks (global and local) via the asynchronous generalized island model.
Stars: ✭ 540 (+1284.62%)
Mutual labels:  optimization, genetic-algorithm, evolutionary-algorithms
Eaopt
🍀 Evolutionary optimization library for Go (genetic algorithm, partical swarm optimization, differential evolution)
Stars: ✭ 718 (+1741.03%)
Mutual labels:  optimization, genetic-algorithm, evolutionary-algorithms
Jenetics
Jenetics - Genetic Algorithm, Genetic Programming, Evolutionary Algorithm, and Multi-objective Optimization
Stars: ✭ 616 (+1479.49%)
Mutual labels:  optimization, genetic-algorithm, evolutionary-algorithms
Windows11-Optimization
Community repository, to improve security and performance of Windows 10 and windows 11 with tweaks, commands, scripts, registry keys, configuration, tutorials and more
Stars: ✭ 17 (-56.41%)
Mutual labels:  optimization, optimizer, optimisation
evolvable
An evolutionary computation framework
Stars: ✭ 43 (+10.26%)
Mutual labels:  genetic-algorithm, evolutionary-algorithm, evolutionary-computation
zoofs
zoofs is a python library for performing feature selection using a variety of nature-inspired wrapper algorithms. The algorithms range from swarm-intelligence to physics-based to Evolutionary. It's easy to use , flexible and powerful tool to reduce your feature size.
Stars: ✭ 142 (+264.1%)
Mutual labels:  optimization, genetic-algorithm, evolutionary-algorithms
geneticalgorithm2
Supported highly optimized and flexible genetic algorithm package for python
Stars: ✭ 36 (-7.69%)
Mutual labels:  genetic-algorithm, evolutionary-algorithms
biteopt
Derivative-Free Optimization Method for Global Optimization (C++)
Stars: ✭ 91 (+133.33%)
Mutual labels:  genetic-algorithm, evolutionary-algorithms
GARI
GARI (Genetic Algorithm for Reproducing Images) reproduces a single image using Genetic Algorithm (GA) by evolving pixel values.
Stars: ✭ 41 (+5.13%)
Mutual labels:  genetic-algorithm, evolutionary-algorithms
falcon
A WordPress cleanup and performance optimization plugin.
Stars: ✭ 17 (-56.41%)
Mutual labels:  optimization, optimizer
neuroevolution-robots
Neuroevolution demo through TensorFlow.js, Neataptic, and Box2D
Stars: ✭ 31 (-20.51%)
Mutual labels:  genetic-algorithm, evolutionary-algorithms
evoplex
Evoplex is a fast, robust and extensible platform for developing agent-based models and multi-agent systems on networks. It's available for Windows, Linux and macOS.
Stars: ✭ 98 (+151.28%)
Mutual labels:  evolutionary-algorithms, evolutionary-computation
geneal
A genetic algorithm implementation in python
Stars: ✭ 47 (+20.51%)
Mutual labels:  optimization, genetic-algorithm

Goga – Go Evolutionary/Genetic Algorithm

Goga is a computer library for developing evolutionary algorithms based on the differential evolution and/or genetic algorithm concepts. The goal of these algorithms is to solve optimisation problems with (or not) many constraints and many objectives. Also, problems with mixed-type representations with real numbers and integers are considered by Goga.

See the documentation for more details (e.g. how to call functions and use structures).

GoDoc

The core algorithms in Goga are well explained in my paper entitled Parallel evolutionary algorithm for constrained single and multi objective optimisation which was rejected (due to silly reasons such as too long) from IEEE Transactions on Evolutionary Computation but accepted in Applied Soft Computing.

The original version for IEEE contains all the equations and is nicely formatted. You can get them freely from here:

  1. Part I: Methods, single and two-objective test cases
  2. Part II: Multi/many-objective test cases and applications

The shorter and slightly improved (published) version is also freely availabe from here:

  1. Summary of GOGA Algorithms; see also [1, 2]

Examples

Check out more examples here

Output of cross-in-tray.go
// objective function
func fcn(f, g, h, x []float64, y []int, cpu int) {
	f[0] = -0.0001 * Pow(Abs(Sin(x[0])*Sin(x[1])*Exp(Abs(100-Sqrt(Pow(x[0], 2)+Pow(x[1], 2))/Pi)))+1, 0.1)
}

// main function
func main() {

	// problem definition
	nf := 1 // number of objective functions
	ng := 0 // number of inequality constraints
	nh := 0 // number of equality constraints

	// the solver (optimiser)
	var opt goga.Optimiser
	opt.Default()                    // must call this to set default constants
	opt.FltMin = []float64{-10, -10} // must set minimum
	opt.FltMax = []float64{+10, +10} // must set maximum
	opt.Nsol = 80
	opt.Nsamples = 100

	// initialise the solver
	opt.Init(goga.GenTrialSolutions, nil, fcn, nf, ng, nh)

	// solve problem
	opt.RunMany("", "", false)

	// stat
	opt.PrintStatF(0)
}

Installation

1 Install dependencies:

Goga depends on the Gosl Go Scientific Library, therefore, please install Gosl first.

2 Install Goga:

go get github.com/cpmech/goga

Documentation

Here, we call user-defined types as structures. These are simply Go types defined as struct. Some may think of these structures as classes. Goga has several global functions as well and tries to avoid complicated constructions.

An allocated structure is called here an object and functions attached to this object are called methods. The variable holding the pointer to an object is always named o in Goga (e.g. like self or this).

Some objects need to be initialised before usage. In this case, functions named Init have to be called (e.g. like constructors).

Bibliography

Goga is included in the following works:

  1. Pedroso DM, Bonyadi MR, Gallagher M (2017) Parallel evolutionary algorithm for single and multi-objective optimisation: differential evolution and constraints handling, Applied Soft Computing http://dx.doi.org/10.1016/j.asoc.2017.09.006
  2. Pedroso DM (2017) FORM reliability analysis using a parallel evolutionary algorithm, Structural Safety 65:84-99 http://dx.doi.org/10.1016/j.strusafe.2017.01.001

Authors and license

See the AUTHORS file.

Unless otherwise noted, the Goga source files are distributed under the BSD-style license found in the LICENSE file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].