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, 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


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.0.7.tar.gz (22.6 MB view details)

Uploaded Source

Built Distribution

geatpy-1.0.7-py3-none-any.whl (23.0 MB view details)

Uploaded Python 3

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

Hashes for geatpy-1.0.7.tar.gz
Algorithm Hash digest
SHA256 c75a5fb5f1010e64ff8f066c38df57268ede609cc8a44531c111750e05beaa18
MD5 7719cf326d1fd77a3348c04626be4931
BLAKE2b-256 d869ce385b885501a13449fa5af5850217b0975aec75be0b70e971f8ee4f926a

See more details on using hashes here.

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

Hashes for geatpy-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 819a866c2c9cb9a4e2f4040abf490474a732fb97deee5ec6c77506ecb3c9730d
MD5 9e299eafa23c7d3591a594393c33b8ae
BLAKE2b-256 1126035f91752ae051b1cf1b7c2ce7f56337023640e0f5f290c43dd035d1c0c3

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