Skip to main content

Geatpy is a high-performance GEA toolbox for Python.

Project description

The Genetic and Evolutionary Algorithm Toolbox for Python

Build Status platform versions

Introduction

  1. Website (including documentation): https://www.geatpy.com

  2. Tutorial pdf: https://github.com/geatpy-dev/geatpy/tree/master/geatpy/doc/tutorial

  3. Demo: https://github.com/geatpy-dev/geatpy/tree/master/geatpy/demo

  4. Contact us: http://www.geatpy.com/support

  5. Source code: https://github.com/geatpy-dev/geatpy/tree/master/geatpy/source-code

  6. Bug reports: https://github.com/geatpy-dev/geatpy/issues

  7. Franchised blog https://blog.csdn.net/qq_33353186

It provides:

  1. global optimization capabilities in Python using genetic and evolutionary algorithm to solve problems unsuitable for traditional optimization approaches.

  2. 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

  1. From pip:

    pip install geatpy
  2. 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:

  1. 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.

  2. 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, LegV): # LegV is a legal-sign column vector for the population

M = 3 # M is the dimensions of DTLZ1.

x = Chrom.T # Chrom is a numpy array standing for the chromosomes of the 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, LegV] # 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 moea_nsga2_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 = True, 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

geatpy-1.1.2.tar.gz (26.2 MB view details)

Uploaded Source

Built Distribution

geatpy-1.1.2-py3-none-any.whl (26.5 MB view details)

Uploaded Python 3

File details

Details for the file geatpy-1.1.2.tar.gz.

File metadata

  • Download URL: geatpy-1.1.2.tar.gz
  • Upload date:
  • Size: 26.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.6

File hashes

Hashes for geatpy-1.1.2.tar.gz
Algorithm Hash digest
SHA256 598cd8b37130087fa24ea0da90f722a229d65a372a5f586e2d96235d3b839db1
MD5 85cf8ee47264447a1454913668ebdfb5
BLAKE2b-256 bd39b327b6d1be728208c2913e4187bdbf7c8c11cfac698b9bb2ed3e23f2206e

See more details on using hashes here.

File details

Details for the file geatpy-1.1.2-py3-none-any.whl.

File metadata

  • Download URL: geatpy-1.1.2-py3-none-any.whl
  • Upload date:
  • Size: 26.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.6

File hashes

Hashes for geatpy-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 295e796895a38e2349d6931792f44502fb90a49fb3b84e62d6afaa7de5b6d86c
MD5 22ef9094ead3e51e5e62cd4ead5f654c
BLAKE2b-256 73d574a018b51e4e30e49855f44f1080b7849dce523845a5844d2ffff8556807

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page