1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
|
%global _empty_manifest_terminate_build 0
Name: python-pygenetic
Version: 1.0.2
Release: 1
Summary: An Efficient Python Genetic Algorithm API
License: MIT
URL: https://github.com/danny311296/pygenetic
Source0: https://mirrors.aliyun.com/pypi/web/packages/7e/3d/713e2ffa28051701909f21a67dd1a25933cbf92e56a7c76335c26abe5c48/pygenetic-1.0.2.tar.gz
BuildArch: noarch
Requires: python3-rstr
Requires: python3-numpy
Requires: python3-matplotlib
%description
# pygenetic: An Efficient Generic, User-friendly Python Genetic Algorithm API
[](https://travis-ci.com/danny311296/pygenetic) [](https://opensource.org/licenses/mit-license.php) [](https://pygenetic.readthedocs.io/en/latest/?badge=latest)
pygenetic is a Python Genetic Algorithm API which is User-Friendly as well as Generic in nature unlike most GA APIs which make a trade off between the two.
## Motivation

While some APIs like DEAP and many more recent ones which are very efficient and generic are less user friendly in nature, other APIs like genetics and other smaller ones which are the best in terms of user friendliness, they are less generic. This API intends to strike a balance - good in terms of both user friendliness and genericity.
## Features
* Presence of both High-Level(`SimpleGA`) and Low-Level API(`GAEngine`) which users can use as per need.
* Very generic API - Users can customize different part of the GA be it Evolution, Statistics, Different handlers, Chromosome Representations.
* Supports efficient evolution execution using Apache Spark. This is highly scalable as more workers can be deployed. Parallelization of fitness evaluation, selection, crossovers and mutations are taken care of.
* Supports Adaptive Mutation Rates based on how diverse the population is.
* Supports Hall of Fame(best ever chromosome) Injection so that the best chromosome isn't lost in later generations due to the selection method used.
* Supports Efficient Iteration Halt
* Supports Visualization of Statistics like max, min, avg, diversity of fitnesses, mutation rates. Users can also define custom statistics
* Supports usage of multiple crossovers and mutations in one GA execution to enhance diversity
* Supports Population Control(control the population size or allow it grow/shrink) which users can make use of in various research purposes
* Provides a bunch of Standard Selection, Crossovers, Mutations and Fitness Functions
* Provides continue evolve feature so users can continue from previous evolutions instead of starting all over again.
* Provides ANN Best Topology finder using GA functionality
## Installation
pygenetic is published on pypi(https://pypi.org/project/pygenetic/) and can be easily installed by:
```sh
$ pip3 install pygenetic
```
For using pyspark functionality, install `pyspark` , Apache Spark, Scala and JVM.
For using the ANN Topology Finder, install `tensorflow` and `keras`
## Tests
The various tests are present in the `tests/` directory. The main API tests can tested by:
```sh
$ pytest tests/modules
```
## Usage
### High Level API Basic Usage
```
from pygenetic import SimpleGA
ga = SimpleGA.SimpleGA(minValue=1,maxValue=120,
noOfGenes=20,fitness_func=lambda x:sum(x),
duplicates=False,population_size=1000,
fitness_type='max')
ga.evolve(100)
print(ga.best_fitness)
```
### Low Level API Basic Usage
```
from pygenetic import ChromosomeFactory, GAEngine, Utils
factory = ChromosomeFactory.ChromosomeRangeFactory(
noOfGenes=8,minValue=1,maxValue=8)
ga = GAEngine.GAEngine(factory,100,fitness_type=('equal',8)
,mut_prob = 0.3)
ga.addCrossoverHandler(Utils.CrossoverHandlers.distinct)
ga.addMutationHandler(Utils.MutationHandlers.swap)
ga.setSelectionHandler(Utils.SelectionHandlers.best)
ga.setFitnessHandler(Utils.Fitness.addition)
ga.evolve(10)
print(ga.best_fitness)
```
### For more advanced usages and tutorials
Our python package is extensively documented on [ReadTheDocs](https://pygenetic.readthedocs.io/en/latest). Also, refer [this](https://github.com/danny311296/pygenetic/blob/master/examples/tutorial.md) for step by step tutorials.
Refer `examples` for examples of solving different GAs using pygenetic
## GA Online Execution
Install python `flask` and run
```sh
$ python3 flask/views.py
```
Input all the various fields needed for the GA. You can run the GA online and get the best 5 chromosomes of each generations followed by statistics. You can also download the equivalent pygenetic code based on all user inputs in the form
## Authors
* [Bharatraj S Telkar](https://github.com/BharatRajT)
* [Daniel Isaac](https://github.com/danny311296)
* [Shreyas V Patil](https://github.com/pshreyasv100)
## Special Mentions
* Special thanks to Ganesh K, Rahul Bhardwaj and Hardik Surana who lended their UI made for their Design Patterns project (https://github.com/ganesh-k13/GOF-Templates) as an intial template for us to work on for our Web GUI.
* Special thanks to our Project Guide Prof.Chitra G M
### License: MIT
%package -n python3-pygenetic
Summary: An Efficient Python Genetic Algorithm API
Provides: python-pygenetic
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-pip
%description -n python3-pygenetic
# pygenetic: An Efficient Generic, User-friendly Python Genetic Algorithm API
[](https://travis-ci.com/danny311296/pygenetic) [](https://opensource.org/licenses/mit-license.php) [](https://pygenetic.readthedocs.io/en/latest/?badge=latest)
pygenetic is a Python Genetic Algorithm API which is User-Friendly as well as Generic in nature unlike most GA APIs which make a trade off between the two.
## Motivation

While some APIs like DEAP and many more recent ones which are very efficient and generic are less user friendly in nature, other APIs like genetics and other smaller ones which are the best in terms of user friendliness, they are less generic. This API intends to strike a balance - good in terms of both user friendliness and genericity.
## Features
* Presence of both High-Level(`SimpleGA`) and Low-Level API(`GAEngine`) which users can use as per need.
* Very generic API - Users can customize different part of the GA be it Evolution, Statistics, Different handlers, Chromosome Representations.
* Supports efficient evolution execution using Apache Spark. This is highly scalable as more workers can be deployed. Parallelization of fitness evaluation, selection, crossovers and mutations are taken care of.
* Supports Adaptive Mutation Rates based on how diverse the population is.
* Supports Hall of Fame(best ever chromosome) Injection so that the best chromosome isn't lost in later generations due to the selection method used.
* Supports Efficient Iteration Halt
* Supports Visualization of Statistics like max, min, avg, diversity of fitnesses, mutation rates. Users can also define custom statistics
* Supports usage of multiple crossovers and mutations in one GA execution to enhance diversity
* Supports Population Control(control the population size or allow it grow/shrink) which users can make use of in various research purposes
* Provides a bunch of Standard Selection, Crossovers, Mutations and Fitness Functions
* Provides continue evolve feature so users can continue from previous evolutions instead of starting all over again.
* Provides ANN Best Topology finder using GA functionality
## Installation
pygenetic is published on pypi(https://pypi.org/project/pygenetic/) and can be easily installed by:
```sh
$ pip3 install pygenetic
```
For using pyspark functionality, install `pyspark` , Apache Spark, Scala and JVM.
For using the ANN Topology Finder, install `tensorflow` and `keras`
## Tests
The various tests are present in the `tests/` directory. The main API tests can tested by:
```sh
$ pytest tests/modules
```
## Usage
### High Level API Basic Usage
```
from pygenetic import SimpleGA
ga = SimpleGA.SimpleGA(minValue=1,maxValue=120,
noOfGenes=20,fitness_func=lambda x:sum(x),
duplicates=False,population_size=1000,
fitness_type='max')
ga.evolve(100)
print(ga.best_fitness)
```
### Low Level API Basic Usage
```
from pygenetic import ChromosomeFactory, GAEngine, Utils
factory = ChromosomeFactory.ChromosomeRangeFactory(
noOfGenes=8,minValue=1,maxValue=8)
ga = GAEngine.GAEngine(factory,100,fitness_type=('equal',8)
,mut_prob = 0.3)
ga.addCrossoverHandler(Utils.CrossoverHandlers.distinct)
ga.addMutationHandler(Utils.MutationHandlers.swap)
ga.setSelectionHandler(Utils.SelectionHandlers.best)
ga.setFitnessHandler(Utils.Fitness.addition)
ga.evolve(10)
print(ga.best_fitness)
```
### For more advanced usages and tutorials
Our python package is extensively documented on [ReadTheDocs](https://pygenetic.readthedocs.io/en/latest). Also, refer [this](https://github.com/danny311296/pygenetic/blob/master/examples/tutorial.md) for step by step tutorials.
Refer `examples` for examples of solving different GAs using pygenetic
## GA Online Execution
Install python `flask` and run
```sh
$ python3 flask/views.py
```
Input all the various fields needed for the GA. You can run the GA online and get the best 5 chromosomes of each generations followed by statistics. You can also download the equivalent pygenetic code based on all user inputs in the form
## Authors
* [Bharatraj S Telkar](https://github.com/BharatRajT)
* [Daniel Isaac](https://github.com/danny311296)
* [Shreyas V Patil](https://github.com/pshreyasv100)
## Special Mentions
* Special thanks to Ganesh K, Rahul Bhardwaj and Hardik Surana who lended their UI made for their Design Patterns project (https://github.com/ganesh-k13/GOF-Templates) as an intial template for us to work on for our Web GUI.
* Special thanks to our Project Guide Prof.Chitra G M
### License: MIT
%package help
Summary: Development documents and examples for pygenetic
Provides: python3-pygenetic-doc
%description help
# pygenetic: An Efficient Generic, User-friendly Python Genetic Algorithm API
[](https://travis-ci.com/danny311296/pygenetic) [](https://opensource.org/licenses/mit-license.php) [](https://pygenetic.readthedocs.io/en/latest/?badge=latest)
pygenetic is a Python Genetic Algorithm API which is User-Friendly as well as Generic in nature unlike most GA APIs which make a trade off between the two.
## Motivation

While some APIs like DEAP and many more recent ones which are very efficient and generic are less user friendly in nature, other APIs like genetics and other smaller ones which are the best in terms of user friendliness, they are less generic. This API intends to strike a balance - good in terms of both user friendliness and genericity.
## Features
* Presence of both High-Level(`SimpleGA`) and Low-Level API(`GAEngine`) which users can use as per need.
* Very generic API - Users can customize different part of the GA be it Evolution, Statistics, Different handlers, Chromosome Representations.
* Supports efficient evolution execution using Apache Spark. This is highly scalable as more workers can be deployed. Parallelization of fitness evaluation, selection, crossovers and mutations are taken care of.
* Supports Adaptive Mutation Rates based on how diverse the population is.
* Supports Hall of Fame(best ever chromosome) Injection so that the best chromosome isn't lost in later generations due to the selection method used.
* Supports Efficient Iteration Halt
* Supports Visualization of Statistics like max, min, avg, diversity of fitnesses, mutation rates. Users can also define custom statistics
* Supports usage of multiple crossovers and mutations in one GA execution to enhance diversity
* Supports Population Control(control the population size or allow it grow/shrink) which users can make use of in various research purposes
* Provides a bunch of Standard Selection, Crossovers, Mutations and Fitness Functions
* Provides continue evolve feature so users can continue from previous evolutions instead of starting all over again.
* Provides ANN Best Topology finder using GA functionality
## Installation
pygenetic is published on pypi(https://pypi.org/project/pygenetic/) and can be easily installed by:
```sh
$ pip3 install pygenetic
```
For using pyspark functionality, install `pyspark` , Apache Spark, Scala and JVM.
For using the ANN Topology Finder, install `tensorflow` and `keras`
## Tests
The various tests are present in the `tests/` directory. The main API tests can tested by:
```sh
$ pytest tests/modules
```
## Usage
### High Level API Basic Usage
```
from pygenetic import SimpleGA
ga = SimpleGA.SimpleGA(minValue=1,maxValue=120,
noOfGenes=20,fitness_func=lambda x:sum(x),
duplicates=False,population_size=1000,
fitness_type='max')
ga.evolve(100)
print(ga.best_fitness)
```
### Low Level API Basic Usage
```
from pygenetic import ChromosomeFactory, GAEngine, Utils
factory = ChromosomeFactory.ChromosomeRangeFactory(
noOfGenes=8,minValue=1,maxValue=8)
ga = GAEngine.GAEngine(factory,100,fitness_type=('equal',8)
,mut_prob = 0.3)
ga.addCrossoverHandler(Utils.CrossoverHandlers.distinct)
ga.addMutationHandler(Utils.MutationHandlers.swap)
ga.setSelectionHandler(Utils.SelectionHandlers.best)
ga.setFitnessHandler(Utils.Fitness.addition)
ga.evolve(10)
print(ga.best_fitness)
```
### For more advanced usages and tutorials
Our python package is extensively documented on [ReadTheDocs](https://pygenetic.readthedocs.io/en/latest). Also, refer [this](https://github.com/danny311296/pygenetic/blob/master/examples/tutorial.md) for step by step tutorials.
Refer `examples` for examples of solving different GAs using pygenetic
## GA Online Execution
Install python `flask` and run
```sh
$ python3 flask/views.py
```
Input all the various fields needed for the GA. You can run the GA online and get the best 5 chromosomes of each generations followed by statistics. You can also download the equivalent pygenetic code based on all user inputs in the form
## Authors
* [Bharatraj S Telkar](https://github.com/BharatRajT)
* [Daniel Isaac](https://github.com/danny311296)
* [Shreyas V Patil](https://github.com/pshreyasv100)
## Special Mentions
* Special thanks to Ganesh K, Rahul Bhardwaj and Hardik Surana who lended their UI made for their Design Patterns project (https://github.com/ganesh-k13/GOF-Templates) as an intial template for us to work on for our Web GUI.
* Special thanks to our Project Guide Prof.Chitra G M
### License: MIT
%prep
%autosetup -n pygenetic-1.0.2
%build
%py3_build
%install
%py3_install
install -d -m755 %{buildroot}/%{_pkgdocdir}
if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
pushd %{buildroot}
if [ -d usr/lib ]; then
find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/lib64 ]; then
find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/bin ]; then
find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/sbin ]; then
find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
touch doclist.lst
if [ -d usr/share/man ]; then
find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst
fi
popd
mv %{buildroot}/filelist.lst .
mv %{buildroot}/doclist.lst .
%files -n python3-pygenetic -f filelist.lst
%dir %{python3_sitelib}/*
%files help -f doclist.lst
%{_docdir}/*
%changelog
* Fri Jun 09 2023 Python_Bot <Python_Bot@openeuler.org> - 1.0.2-1
- Package Spec generated
|