Algoritmo Genetico em Python e Numpy
Project description
PyGENEC
Genetic algorithm in Python and Numpy.
Instalation
$ pip install pygenec
Or
$ python setup.py install
Usage
from numpy import exp, array, mgrid
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
from matplotlib.animation import FuncAnimation
from pygenec.populacao import Populacao
from pygenec.selecao.roleta import Roleta
from pygenec.cruzamento.kpontos import KPontos
from pygenec.mutacao.flip import Flip
from pygenec.evolucao import Evolucao
def func(x, y):
tmp = 3 * exp(-(y + 1) ** 2 - x **2)*(x - 1)**2 \
- (exp(-(x+ 1) ** 2 - y **2) / 3 )\
+ exp(-x **2 - y ** 2) * (10 * x **3 - 2 * x + 10 * y ** 5)
return tmp
def bin(x):
cnt = array([2 ** i for i in range(x.shape[1])])
return array([(cnt * x[i,:]).sum() for i in range(x.shape[0])])
def xy(populacao):
colunas = populacao.shape[1]
meio = int(colunas / 2)
maiorbin = 2.0 ** meio - 1.0
nmin = -3
nmax = 3
const = (nmax - nmin) / maiorbin
x = nmin + const * bin(populacao[:,:meio])
y = nmin + const * bin(populacao[:,meio:])
return x, y
def avaliacao(populacao):
x, y = xy(populacao)
tmp = func(x, y)
return tmp
genes_totais = 16
tamanho_populacao = 100
populacao = Populacao(avaliacao, genes_totais, tamanho_populacao)
selecao = Roleta(populacao)
cruzamento = KPontos(tamanho_populacao)
mutacao = Flip(pmut=0.9)
evolucao = Evolucao(populacao, selecao, cruzamento, mutacao)
evolucao.nsele = 10
evolucao.pcruz = 0.5
fig = plt.figure(figsize=(100, 100))
ax = fig.add_subplot(111, projection="3d")
X, Y = mgrid[-3:3:30j, -3:3:30j]
Z = func(X,Y)
ax.plot_wireframe(X, Y, Z)
x, y = xy(populacao.populacao)
z = func(x, y)
graph = ax.scatter(x, y, z, s=50, c='red', marker='D')
def update(frame):
evolucao.evoluir()
x, y = xy(populacao.populacao)
z = func(x, y)
graph._offsets3d = (x, y, z)
ani = FuncAnimation(fig, update, frames=range(10000), repeat=False)
plt.show()
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
pygenec-1.1.1.tar.gz
(9.1 kB
view details)
Built Distribution
pygenec-1.1.1-py3-none-any.whl
(20.7 kB
view details)
File details
Details for the file pygenec-1.1.1.tar.gz
.
File metadata
- Download URL: pygenec-1.1.1.tar.gz
- Upload date:
- Size: 9.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f6727defc9414c06df27df386595ac5c63112039779f826b3cc81970712690fa |
|
MD5 | 0a124b7fb614359e0f5e2be37270ac76 |
|
BLAKE2b-256 | cac95bebe883d4ceb71da8803b13337c662b127ed0737b25d8d7ef5424838b83 |
File details
Details for the file pygenec-1.1.1-py3-none-any.whl
.
File metadata
- Download URL: pygenec-1.1.1-py3-none-any.whl
- Upload date:
- Size: 20.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9273fccffd0018f4b461e58d465e3681c3d987d3b6bede7c65c1c43923eb1a1 |
|
MD5 | 6b763aa7e950ea856389ce7077c9d4d1 |
|
BLAKE2b-256 | c9801531e60e2cffc846c498d02ec8180eb9a4fcfae91ecb54e564d3ca11debe |