Geatpy is a high-performance GEA toolbox for Python.
Project description
The Genetic and Evolutionary Algorithm Toolbox for Python
Introduction
Website (including documentation): https://www.geatpy.com
Tutorial pdf: https://github.com/geatpy-dev/geatpy/tree/master/geatpy/doc/tutorial
Demo: https://github.com/geatpy-dev/geatpy/tree/master/geatpy/demo
Contact us: http://www.geatpy.com/support
Source code: https://github.com/geatpy-dev/geatpy/tree/master/geatpy/source-code
Bug reports: https://github.com/geatpy-dev/geatpy/issues
Franchised blog https://blog.csdn.net/qq_33353186
It provides:
global optimization capabilities in Python using genetic and evolutionary algorithm to solve problems unsuitable for traditional optimization approaches.
a great many of genetic and evolutionary operators, so that you can deal with single or multi-objective optimization problems.
It can work faster with numpy+mkl. If you want to speed your projects, please install numpy+mkl.
Installation
From pip:
pip install geatpy
From source:
python setup.py install
Attention: Geatpy requires numpy>=1.12.1 and matplotlib>=2.0.0, the installation program will help you install all the requires. But if something wrong happened, you have to install all requires by yourselves.
Versions
The version of Geatpy on github is the latest version suitable for Python >= 3.5
You can also update Geatpy by executing the command:
pip install --upgrade geatpy
Quick start
You can use Geatpy to solve single or multi-objective optimization problems mainly in two ways:
Create a script, write all the codes on it and run. It’s the easiest way, but it needs much too codes and is not good for reuse.
Using templets and functional interfaces. For example, we try to find the Pareto front of DTLZ1, do as the following:
2.1) Write DTLZ1 function on a file named “aimfuc.py” as a functional interfaces:
“””aimfuc.py”””
# DTLZ1
def aimfuc(Chrom, M = 3): # M is the dimensions of DTLZ1.
x = Chrom.T # Chrom is a numpy array standing for the chromosomes of a population
XM = x[M-1:]
k = x.shape[0] - M + 1
gx = 100 * (k + np.sum((XM - 0.5) ** 2 - np.cos(20 * np.pi * (XM - 0.5)), 0))
ObjV = (np.array([[]]).T) * np.zeros((1, Chrom.shape[0])) # define ObjV to recod function values
ObjV = np.vstack([ObjV, 0.5 * np.cumprod(x[:M-1], 0)[-1] * (1 + gx)])
for i in range(2, M):
ObjV = np.vstack([ObjV, 0.5 * np.cumprod(x[: M-i], 0)[-1] * (1 - x[M-i]) * (1 + gx)])
ObjV = np.vstack([ObjV, 0.5 * (1 - x[0]) * (1 + gx)])
return ObjV.T # use ‘.T’ to change ObjV so that each row stands for function values of each individual of the population
2.2) Write the main script using NSGA-II templet of Geatpy to solve the problem.
“””main.py”””
import numpy as np
import geatpy as ga # import geatpy
AIM_M = __import__(‘aimfuc’) # get the address of objective function DTLZ1
AIM_F = ‘DTLZ1’ # You can set DTL1,2,3 or 4
“””==================================variables setting================================”””
ranges = np.vstack([np.zeros((1,7)), np.ones((1,7))]) # define the ranges of variables in DTLZ1
borders = np.vstack([np.ones((1,7)), np.ones((1,7))]) # define the borders of variables in DTLZ1
FieldDR = ga.crtfld(ranges, borders) # create the FieldDR
“””=======================use sga2_templet to find the Pareto front===================”””
[ObjV, NDSet, NDSetObjV, times] = ga.nsga2_templet(AIM_M, AIM_F, None, None, FieldDR, problem = ‘R’, maxormin = 1, MAXGEN = 1000, MAXSIZE = 2000, NIND = 50, SUBPOP = 1, GGAP = 1, selectStyle = ‘tour’, recombinStyle = ‘xovdprs’, recopt = 0.9, pm = None, distribute = False, drawing = 1)
The partial of the result can be seen in:
https://github.com/geatpy-dev/geatpy/blob/master/geatpy/demo/DTLZ_demo/Pareto%20Front.png
To get more examples and more tutorials, please link to http://www.geatpy.com/tutorials.
There are also some demos in Geatpy’s source. Including ZDT1/2/3/4/6、 DTLZ1/2/3/4、single-objective examples、discrete problem solving and so forth.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file geatpy-1.0.7.tar.gz
.
File metadata
- Download URL: geatpy-1.0.7.tar.gz
- Upload date:
- Size: 22.6 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: Python-urllib/3.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c75a5fb5f1010e64ff8f066c38df57268ede609cc8a44531c111750e05beaa18 |
|
MD5 | 7719cf326d1fd77a3348c04626be4931 |
|
BLAKE2b-256 | d869ce385b885501a13449fa5af5850217b0975aec75be0b70e971f8ee4f926a |
File details
Details for the file geatpy-1.0.7-py3-none-any.whl
.
File metadata
- Download URL: geatpy-1.0.7-py3-none-any.whl
- Upload date:
- Size: 23.0 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: Python-urllib/3.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 819a866c2c9cb9a4e2f4040abf490474a732fb97deee5ec6c77506ecb3c9730d |
|
MD5 | 9e299eafa23c7d3591a594393c33b8ae |
|
BLAKE2b-256 | 1126035f91752ae051b1cf1b7c2ce7f56337023640e0f5f290c43dd035d1c0c3 |