Python Cuda Genetic Algorithm Package
Project description
📦pycuga
Pycuga (PYthon CUda Genetic Algorithm) provides a package for performing island-based genetic algorithm on Python and CUDA.
- Methods for migartion, selection and mutation are implemented already. Users only need to pick the method during initialisation.
- User needs to define evaluation using Cuda code.
Motivation
- When I worked on my previous project on Solving Maximum Satisfiability Problem using CUDA, I realised a lot of code could be reused, which save a lot of development time for solving other optimisation problems using genetic algorithm and CUDA.
Parameters
| Methods currently supported | |
|---|---|
| Selection | Elitism, Roulette Wheel |
| Crossover | One (point), Two (points), Uniform |
| Mutation | Number |
pip install pycuga
p1 = PyCUGA(constArr, chromosomeSize, stringPlaceholder, mutationNumber, selectionMode, crossoverMode)
p1. launchKernel(islandSize, blockSize , chromosomeNo, isTime, timeAllowed, migrationRounds, rounds)
-
constArr (numpy array): defines the details of the problem
-
chromosomeSize (int): number of variables in a chromosome
-
stringPlaceholder (string): defines the evalutaion method and other constants
-
mutationNumber (int): /
-
selectionMode (string): "elitism" or "roulettewheel"
-
crossoverMode (string): "one" or "two" or "uniform"
-
islandSize (int): size of an island
-
blockSize (int): Cuda block size
-
chromosomeNo (int): number of chromosomes
-
migrationRounds (int): number of rounds per migration
-
isTime (bool): stopped by time or number of rounds
-
timeAllowed (int): seconds allowed
-
rounds (int): total number of rounds
Examples here.
Colab MaxSat example here.
Limitations
- Use multiples of 32 (for chromosome parameters) to avoid bugs and increase efficiency.
- Island migration is limited to 1 item currently
- Lack unit testing
❗Disclaimer
This is a mini project which I've put quite a lot of time and effort into, but I can't take responsibility for any bugs nor errors.
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 Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pycuga-0.0.14-py3-none-any.whl.
File metadata
- Download URL: pycuga-0.0.14-py3-none-any.whl
- Upload date:
- Size: 20.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef65e42816c67f9acf64667daddfec71b4c3318f02d7d5bd41f20dc2b5f8c8fa
|
|
| MD5 |
7dbcd75cc7f386fa6b4c3847e988379e
|
|
| BLAKE2b-256 |
7f17e5d358000f4745bded9600f9537308d317e6e790be8fa07ad625aa11c057
|