Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
168 commits
Select commit Hold shift + click to select a range
3cefc5f
Added the initial problem class for the EvoNN algorithm
delamorte May 16, 2019
72f6cca
Added method to calculate and optimize training error
delamorte May 17, 2019
711a1bc
Changed parameter names
delamorte May 17, 2019
2763854
All the functions added to the Problem class
delamorte May 22, 2019
69cf122
Add files via upload
delamorte May 23, 2019
2ec4774
Add files via upload
delamorte May 23, 2019
3c16b8a
started working on a population class for EvoNN
delamorte May 23, 2019
3a613c8
updated gitignore
delamorte May 23, 2019
1c017b8
Merge branch 'evoNN' of github.com:delamorte/pyRVEA into evoNN
delamorte May 23, 2019
6505b27
Added 'delete' and 'archive' methods to population_evonn
delamorte May 23, 2019
6d8fd6d
Added comments
delamorte May 23, 2019
5465227
Fixed weight matrix to use bias correctly
delamorte May 23, 2019
cf19948
Added crossover and mutation functions to Recombination package
delamorte May 24, 2019
becdc13
Formatted files
delamorte May 24, 2019
215bdf1
Added crossover and mutation functions
delamorte May 24, 2019
0cee2ae
added nested function to remove repetition
delamorte May 24, 2019
3d5c03d
Added delete_or_keep method
delamorte May 24, 2019
bd89444
added documentation to Recombination functions
delamorte May 28, 2019
16c3731
added move_prey function to PPGA
delamorte May 29, 2019
4806f40
refactored PPGA class
delamorte May 29, 2019
43c1ee9
implemented predator moving and killing
delamorte Jun 3, 2019
e55e3d9
preys now move based on probability
delamorte Jun 5, 2019
b599195
added non dominated ranking method
delamorte Jun 5, 2019
5782cf5
added more test functions
delamorte Jun 6, 2019
32264d2
fixed a bug in PPGA mating function, where the parents where also
delamorte Jun 7, 2019
e158546
optimized the mutation function by inlining a nested function mutate()
delamorte Jun 7, 2019
2fc1722
Project file/folder refactoring
delamorte Jun 10, 2019
0e0461b
Merged Population and population_evonn.py classes
delamorte Jun 11, 2019
f82d348
Add files via upload
delamorte Jun 11, 2019
39d7b03
Put pycharproject files to .gitignore
delamorte Jun 11, 2019
c6e9db5
Add files via upload
delamorte Jun 11, 2019
b648d75
created model class to represent trained models
delamorte Jun 13, 2019
02cf91b
poetry add Black
delamorte Jun 13, 2019
ed0347c
added example file
delamorte Jun 17, 2019
c30f960
began work on EvoDN2
delamorte Jun 17, 2019
baf6ed0
population class can now handle deep neural networks
delamorte Jun 19, 2019
0b70d44
implemented a faster way of randomly killing connections
delamorte Jun 19, 2019
4cb1369
EvoNN population now created in evonn_problem class
delamorte Jun 19, 2019
481a975
EvoDN2 algorithm completed (needs testing)
delamorte Jun 20, 2019
973d1be
added some documentation
delamorte Jun 24, 2019
3800229
added more tests
delamorte Jun 25, 2019
96e8666
new tests comparing evoNN & evoDN with other machine learning tools
delamorte Jun 25, 2019
d2f78e1
more tests
delamorte Jun 26, 2019
0d82087
added new mutation method
delamorte Jun 27, 2019
e9fa954
fixed calculation error in gaussian mutation
delamorte Jun 27, 2019
8d3a918
changed number of nodes back to random
delamorte Jun 28, 2019
b5ac22c
remade optimization in activation func evodn2_problem
delamorte Jun 28, 2019
71409e2
copied the changes and optimizations from evodn2 to evonn
delamorte Jun 28, 2019
24b3dbb
Modified Population class to be more universal
delamorte Jul 1, 2019
b9597b8
Edited tests
delamorte Jul 1, 2019
eacbb18
Individuals in population are now a list of any objects or arrays
delamorte Jul 2, 2019
e9ac8cf
Fixed exception type
delamorte Jul 2, 2019
5ad80f2
Individuals now created in separate file
delamorte Jul 2, 2019
91bdb9e
dataproblem class now handles training of the models
delamorte Jul 3, 2019
4590738
generalized parameter passing to the models and in dataproblem.py
delamorte Jul 4, 2019
94e27d8
Delete bounded_polynomial_mutation.py
delamorte Jul 4, 2019
3fc4ea8
Delete simulated_binary_crossover.py
delamorte Jul 4, 2019
2652da9
Merge branch 'master' into evoNN
delamorte Jul 4, 2019
d226938
Merge pull request #1 from delamorte/evoNN
delamorte Jul 4, 2019
a4aa0ef
generalized parameter passing to EAs in pop.evolve
delamorte Jul 4, 2019
ae67bf3
renamed minimize_error to optimize_layer
delamorte Jul 4, 2019
9ed0668
added optimize() and plot_pareto() methods to dataproblem
delamorte Jul 4, 2019
22ec079
added a manual model selection method
delamorte Jul 5, 2019
adde364
Create docs
delamorte Jul 5, 2019
2c60b41
Delete docs
delamorte Jul 5, 2019
8a57e8e
Create creating_models.md
delamorte Jul 5, 2019
89dd19e
added documentation
delamorte Jul 5, 2019
3cde1c4
Merge branch 'master' of github.com:delamorte/pyRVEA
delamorte Jul 5, 2019
b0326cd
more references
delamorte Jul 5, 2019
5e4a13f
more testing
delamorte Jul 5, 2019
7318397
simplified structure of evonn and evodn models
delamorte Jul 9, 2019
ab22610
changed default parameters for training back to normal
delamorte Jul 9, 2019
5c0f399
new recombination (xover+mut) method for evonn
delamorte Jul 10, 2019
ec392b1
models can now be trained with all algorithms
delamorte Jul 10, 2019
550e547
fix: predator max moves calculation error
delamorte Jul 10, 2019
1389076
fixed plot and log naming
delamorte Jul 10, 2019
c8b5178
fix: appending trained models to dict in dataproblem
delamorte Jul 10, 2019
17df563
Renamed recombination methods
delamorte Jul 11, 2019
efde2d0
fixed incorrect parameter setting in create_individuals
delamorte Jul 15, 2019
427c2a0
Update creating_models.md
delamorte Jul 15, 2019
1265640
Update creating_models.md
delamorte Jul 15, 2019
efccc76
fixed fonseca-fleming function to work with n variables
delamorte Jul 15, 2019
9d903f8
Update and rename creating_models.md to creating_models_example.md
delamorte Jul 15, 2019
6abfbe3
removed some unused attributes in evonn and evodn2 classes
delamorte Jul 15, 2019
3b8c2c8
Delete evodn2_vs_mlp.py
delamorte Jul 16, 2019
55c69fc
Delete evonn_example.py
delamorte Jul 16, 2019
3bc70e9
Merge branch 'master' of github.com:delamorte/pyRVEA
delamorte Jul 16, 2019
9c3add0
added missing documentation
delamorte Jul 16, 2019
95e4652
added & improved documentation
delamorte Jul 16, 2019
2df75f7
Merge branch 'master' of github.com:delamorte/pyRVEA
delamorte Jul 16, 2019
bc26b38
added sphinx documentation
delamorte Jul 16, 2019
97002b8
test_functions are now called by testproblem class
delamorte Jul 17, 2019
d386caf
EA parameters are now passed as a separate dict instead of kwargs
delamorte Jul 17, 2019
7ef25c3
Update creating_models_example.md
delamorte Jul 17, 2019
cf52c10
sphinx docs
delamorte Jul 17, 2019
e1b8f32
sphinx htmls
delamorte Jul 17, 2019
6e582c9
sym link index
delamorte Jul 17, 2019
85eab9a
delete symlink
delamorte Jul 17, 2019
2ad47ba
delete symlink
delamorte Jul 17, 2019
7339bbc
ignore sphinx files
delamorte Jul 17, 2019
f77e6fa
ignore sphinx files
delamorte Jul 17, 2019
a9f19a4
sphinx docs
delamorte Jul 17, 2019
8cdb569
gitignore
delamorte Jul 17, 2019
f76597f
Update creating_models_example.md
delamorte Jul 17, 2019
83a025b
Update creating_models_example.md
delamorte Jul 17, 2019
e414589
fixed lhs training data creating method to work correctly
delamorte Jul 17, 2019
f4edfd9
fixed some incorrect parameters in PPGA
delamorte Jul 17, 2019
a9b7736
Update creating_models_example.md
delamorte Jul 17, 2019
eca1477
Update creating_models_example.md
delamorte Jul 17, 2019
e080cb8
started work on BioGP
delamorte Jul 18, 2019
b478670
Merge branch 'master' of github.com:delamorte/pyRVEA
delamorte Jul 18, 2019
391f14d
updated documentation
delamorte Jul 23, 2019
9d1d931
simplified conditionals in grow_tree
delamorte Jul 24, 2019
fbaeec5
Made subclasses for different types of nodes
delamorte Jul 25, 2019
89b5c07
Models can now be trained with BioGP
delamorte Jul 25, 2019
43d4493
added crossover and mutation for biogp
delamorte Jul 26, 2019
cfed8cc
added tournament selection
delamorte Jul 26, 2019
00127a6
added height-fair crossover
delamorte Jul 30, 2019
e77677a
added point and mono mutation methods
delamorte Jul 30, 2019
9bedb9d
moved grow_tree to node instance method
delamorte Jul 31, 2019
f331ed0
use base Node class instead of TerminalNode and FunctionNode
delamorte Aug 1, 2019
3053378
height-fair xover now functions correctly
delamorte Aug 1, 2019
cff95c9
fixed probability calculation
delamorte Aug 1, 2019
de61b38
node depths are now calculated correctly after xover and mut
delamorte Aug 1, 2019
2eeb14e
fixed standard mutation method
delamorte Aug 1, 2019
b735d2f
renamed bioGP class to more generic TournamentGA
delamorte Aug 2, 2019
dd88c44
renamed TournamentGA -> TournamentEA
delamorte Aug 2, 2019
322da11
fixed population.delete returning wrong selection
delamorte Aug 2, 2019
401e5b9
added update_fitness to population
delamorte Aug 2, 2019
8143aa6
added update_fitness to population
delamorte Aug 2, 2019
13d4995
Merge branch 'bioGP' of github.com:delamorte/pyRVEA into bioGP
delamorte Aug 2, 2019
0f14bd8
fixed fitness calculations in Population class to work with all EAs
delamorte Aug 5, 2019
ba858ca
updated .gitignore
delamorte Aug 7, 2019
316123d
simplified logfile creation
delamorte Aug 7, 2019
0b49b53
updated gitignore
delamorte Aug 7, 2019
b7c7fc7
delete
delamorte Aug 7, 2019
3a21f04
Merge pull request #3 from delamorte/bioGP
delamorte Aug 7, 2019
d39d823
updated sphinx docs
delamorte Aug 7, 2019
128fcb0
parameter adjusting
delamorte Aug 8, 2019
8aae63f
Create README.md
delamorte Aug 8, 2019
3564659
Update README.md
delamorte Aug 8, 2019
940cde4
Update README.md
delamorte Aug 8, 2019
5d4ff9f
Update README.md
delamorte Aug 8, 2019
c317ff5
Update README.md
delamorte Aug 8, 2019
10de935
Update README.md
delamorte Aug 8, 2019
7af7a92
Add files via upload
delamorte Aug 8, 2019
abd581f
Update README.md
delamorte Aug 8, 2019
88a2f92
changed some default parameters
delamorte Aug 8, 2019
589aae8
Update creating_models_example.md
delamorte Aug 9, 2019
9f77683
Update creating_models_example.md
delamorte Aug 9, 2019
3d563ed
set some better defaults for test functions
delamorte Aug 9, 2019
2f85152
fixed slowRVEA parameter handling
delamorte Aug 9, 2019
3d1eeee
Merge branch 'master' of github.com:delamorte/pyRVEA
delamorte Aug 9, 2019
4b46cb1
Update README.md
delamorte Aug 9, 2019
5ee4ab1
Update README.md
delamorte Aug 9, 2019
4cfdae0
Update creating_models_example.md
delamorte Aug 9, 2019
dc4d158
Update README.md
delamorte Aug 13, 2019
fa79eac
Update creating_models_example.md
delamorte Aug 13, 2019
3bcfdcb
Update README.md
delamorte Aug 13, 2019
29d4b11
Update README.md
delamorte Aug 13, 2019
9a7f121
model parameters now also passed as dict
delamorte Aug 13, 2019
52a03eb
Merge branch 'master' of github.com:delamorte/pyRVEA
delamorte Aug 13, 2019
1c150eb
Update creating_models_example.md
delamorte Aug 13, 2019
ec1fa95
adjusted some default parameters
delamorte Aug 13, 2019
73d41a4
fixed surrogates_predict method in dataproblem
delamorte Aug 13, 2019
257c6ed
Merge branch 'master' of github.com:delamorte/pyRVEA
delamorte Aug 13, 2019
e9db47e
final master commit
delamorte Aug 14, 2019
dbc4ce3
tested zdt1 problem with biogp and evodn2
delamorte Aug 14, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 16 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
results/
4results/
Backup_results/
# Byte-compiled / optimized / DLL files
__pycache__/
Expand Down Expand Up @@ -52,6 +52,7 @@ coverage.xml
*.cover
.hypothesis/
.pytest_cache/
temp.py

# Translations
*.mo
Expand All @@ -70,7 +71,7 @@ instance/
.scrapy

# Sphinx documentation
docs/_build/
# _build

# PyBuilder
target/
Expand Down Expand Up @@ -125,4 +126,16 @@ dmypy.json
# Pyre type checker
.pyre/

*.json
*.json

# vsCode settings
.vscode/

# Pycharm files
.idea/

*.csv

# Graphviz files
*.gv
*.gv.png
70 changes: 0 additions & 70 deletions .vscode/launch.json

This file was deleted.

7 changes: 0 additions & 7 deletions .vscode/settings.json

This file was deleted.

14 changes: 10 additions & 4 deletions Example.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@
Visit the github/binder page for further information.
"""
from pyrvea.Population.Population import Population
from pyrvea.Problem.baseProblem import baseProblem
from pyrvea.Problem.baseproblem import BaseProblem
from pyrvea.EAs.PPGA import PPGA
from pyrvea.EAs.RVEA import RVEA
from pyrvea.EAs.slowRVEA import slowRVEA
from pyrvea.EAs.NSGAIII import NSGAIII
from optproblems import dtlz


class newProblem(baseProblem):
class newProblem(BaseProblem):
"""New problem description."""

def objectives(self, decision_variables):
Expand All @@ -29,9 +31,13 @@ def objectives(self, decision_variables):
lattice_resolution = 4
population_size = 105

pop = Population(problem)
pop = Population(
problem,
crossover_type="simulated_binary_crossover",
mutation_type="bounded_polynomial_mutation",
)

pop.evolve(NSGAIII)
pop.evolve(RVEA)

pop.non_dominated()
refpoint = 2
Expand Down
Binary file added Tests/EvoNNModel_ppga_ZDT1_1000pareto.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Tests/EvoNNModel_rvea_ZDT1_1000pareto.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Tests/PPGAEvoNNModelZDT1_1000f1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Tests/PPGAEvoNNModelZDT1_1000f2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Tests/ZDT1_1000.xls
Binary file not shown.
Binary file added ZDT1_1000.xls
Binary file not shown.
Binary file added biogp.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file removed docs/.nojekyll
Empty file.
9 changes: 5 additions & 4 deletions docs/Makefile
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
# Minimal makefile for Sphinx documentation
#

# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?=
SPHINXBUILD ?= sphinx-build
SOURCEDIR = .
BUILDDIR = _build

Expand All @@ -16,4 +17,4 @@ help:
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
1 change: 0 additions & 1 deletion docs/README.md

This file was deleted.

103 changes: 103 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
# Evolutionary algorithms in pyRVEA

- [EvoNN](#what-is-evonn)
- [EvoDN2](#what-is-evodn2)
- [BioGP](#what-is-biogp)
- [PPGA](#what-is-ppga)
- [Notes](#notes)
- [References](#references)

## Introduction
The engineering and scientific data that one receives from experiments or simulations from any industry is often very noisy, one needs to have a model to process them effectively. It is, however, very difficult to build a model which captures only the correct trends in the data while devoid of any implicit noise. The models can easily be overfitted so that they capture every fluctuation in the data set, both significant and noisy, or underfitted where some major trends may remain undetected or unrepresented.

Evolutionary neural networks and genetic programming have succesfully been utilized to come around this problem and create balanced models. Thus, the purpose of these models is not to achieve the tightest fit, or the lowest training error, but to construct models that capture the correct trends in the data, while avoiding the problems of overfitting and underfitting.

Neural networks and genetic programming have efficiently been utilized for these purposes. This project introduces Python implementations of three evolutionary algrorithms, [EvoNN](#what-is-evonn), [EvoDN2](#what-is-evodn2) and [BioGP](#what-is-biogp). The models can be trained and optimized using the genetic algorithms available in pyRVEA. A predator-prey genetic algorithm ([PPGA](#what-is-ppga)) was also implemented in Python for this project. The user can choose to train and optimize the models with the existing reference vector (RVEA) algorithms, or using the PPGA.

These algorithms use a concept of an optimal tradeoff between two objectives, leading to a [Pareto frontier](https://en.wikipedia.org/wiki/Pareto_efficiency#Pareto_frontier). When there are conflicting requirements in a problem, it essentially leads to a situation where none of the objectives would be able to attain their individual best. The Pareto frontier consists of solutions where the optima are contained in a set of best possible tradeoffs between the objectives.

## What is EvoNN?
In **Evo**lutionary **N**eural **N**etwork [[1]](#1) [[2]](#2), the population consists of feed-forward neural networks. Each network consists of an input layer, a hidden layer and an output layer. The data is fed to the networks via input nodes, which pass the information to a hidden layer, where each active connection receives a nonzero weight. The number of connections increases the complexity of the model. The hidden layer also includes a bias term. Then through a transfer function the hidden layer passes the values onwards to the next level where the weights are optimized and passed to the final output of the network.

![EvoNN](https://raw.githubusercontent.com/delamorte/pyRVEA/master/docs/evonn.png "An example EvoNN model")

*Figure 1. An example EvoNN model. [[7]](#7)*

The evolution happens in the lower part of the network (i.e. between the input layer and the hidden layer), where the weights are optimized using a genetic algorithm (see available [algorithms](https://htmlpreview.github.io/?https://github.com/delamorte/pyRVEA/blob/master/docs/_build/html/pyrvea.EAs.html) in pyRVEA). The two objectives to optimize here are the model's accuracy and complexity. Thus, both the training error and the complexity need to be minimized. The weights are altered using crossover and mutation operations. The upper part of the network is then optimized using a Linear Least Square (LLSQ) approach, which ensures the mathematical convergence to the Pareto front. The evolutionary algorithm then chooses the fittest of the individuals (the ones with the best tradeoff between accuracy and complexity) to go on to the next generation.

## What is EvoDN2?
**Evo**lutionary **D**eep Neural **N**etwork [[3]](#3) is an extension to EvoNN using deep neural networks and has the capacity for deep learning. The principle of EvoDN2 is the same as EvoNN, but the structure of the networks is different. In EvoDN2, each network consists of multiple subnets, which take in subsets of the input variables so that each variable is used at least once. The subnets have an input layer and multiple hidden layers, and they are optimized just as EvoNN using a genetic algorithm. Finally, the subnets converge on a linear layer, optimized by LLSQ and are mapped to an output. Each subnet has a randomized number of layers and nodes on each layers based on the bounds set by the user. The number of subnets can also be set.

![EvoDN2](https://raw.githubusercontent.com/delamorte/pyRVEA/master/docs/evodn.png "An example EvoDN2 model")

*Figure 2. An example EvoDN2 model. [[3]](#3)*

The advantage of EvoDN2 over EvoNN is that it fares much better with larger data sets, which can have thousands of data points. With smaller data sets EvoDN2 performs similarly to EvoNN, although EvoDN2 models tend to have a tighter fit.

The complexity calculation of EvoDN2 is also different from EvoNN. With EvoDN2, the complexity is calculated as the product function of all weight matrices within a subnet, and these weights are the summed together to get the total complexity of the model. This way the connections with a larger magnitude of weight values contribute more to the final value, and inactive connections will be discounted.

## What is BioGP?
BioGP [[4]](#4) is a **Bi**-**o**bjective **g**enetic **p**rogramming technique, which similarly to EvoNN and EvoDN2 minimizes the model's training error and complexity using genetic algorithms. Whereas many conventional GP algorithms tend to only focus on minimizing the error, one advantage of BioGP is that by calculating the best possibly tradeoff between the error and the complexity, overfitting and underfitting can be addressed. BioGP is designed so that for the first number of generations, it minimizes the training error, after which it switches to bi-objective mode minimizing both error and complexity.

The benefit of genetic programming in general is the flexibility of allowing the user to select the mathematical operations (function set and terminal set) involved in building the model. BioGP is also designed to combat bloat, where the models may grow larger and larger in size without increasing the fitness.

The BioGP models are represented with a tree encoding. GP achieves its learning by utilizing a function set containing user-defined mathematical operations like division or square root, and a terminal set containing the variables and the constants. The advantage of GP is that it does not require any pre-defined configuration of weights, biases and transfer functions and thus, it can evolve any mathematical function representing the system being modeled.

The BioGP tree has a linear node at the top (code-wise, the linear node is at depth=0), from which a number of subtrees emerge. Each of these subtrees represent a nonlinear function, consisting of function nodes and terminal nodes. The linear node takes a weighted sum of the outputs of the subtrees, adds a bias value, and optimizes the weights using LLSQ to calculate the final output of the tree. To handle bloat, BioGP uses a parameter called error reduction ratio which provides a simple quantification of the contribution that a single subtree makes toward the performance of the model. If the contribution is less than the limit set by the user, that subtree is terminated and a new one is grown in its place.

![BioGP](https://raw.githubusercontent.com/delamorte/pyRVEA/master/docs/biogp.png "An example BioGP model")


*Figure 3. An example BioGP tree. [[4]](#4)*

The complexity of the model depends on the number of function nodes in the tree, and the tree's total depth. A scalar parameter is used in the complexity function allowing the user to control whether the depth or the number of function nodes should weigh more in the calculation.

## What is PPGA?
**P**redatory-**P**rey **G**enetic **A**lgorithm [[5]](#5) [[6]](#6)

A population of prey signify the various models or solutions to the problem at hand. Weaker prey, i.e. bad models or solutions, are killed by predators. The predators and prey are placed in a lattice, in which they are free to roam.

In each generation, each predator gets a certain number of turns to move about and hunt in its neighbourhood, killing the weaker prey, according to a fitness criteria. After this, each prey gets a certain number of moves to pursue a random walk and to reproduce with other prey. Each reproduction step generates two new prey from two parents, by crossing over their attributes and adding random mutations. After each prey has completed its move, the whole process starts again.

As the weaker individuals get eliminated in each generation, the population as a whole becomes more fit, i.e. the individuals get closer to the true pareto-optimal solutions.

## Notes

The algorithms presented here have been created earlier in MATLAB, and these Python implementations have been using that code as a basis. Python code has been written by Niko Rissanen under the supervision of professor Nirupam Chakraborti.

The source code of pyRVEA is implemented by Bhupinder Saini.

## Contact

If you have any questions about the code, please contact:

Bhupinder Saini: bhupinder.s.saini@jyu.fi

Project researcher at University of Jyväskylä.

Rissanen Niko: nijosari@student.jyu.fi

Research assistant at University of Jyväskylä.

## References

#### 1
Chakraborti, N. (2014). Strategies for evolutionary data driven modeling in chemical and metallurgical Systems. In Applications of Metaheuristics in Process Engineering (pp. 89-122). Springer, Cham.

#### 2
Pettersson, F., Chakraborti, N., & Saxén, H. (2007). A genetic algorithms based multi-objective neural net applied to noisy blast furnace data. Applied Soft Computing, 7(1), 387-397.

#### 3
Swagata R., Bhupinder S., Chakrabarti, N. and Chakraborti, N. (2019). A new Deep Neural Network algorithm employed in the study of mechanical properties of micro-alloyed steel. Department of Metallurgical and Materials Engineering, Indian Institute of Technology.

#### 4
Giri, B. K., Hakanen, J., Miettinen, K., & Chakraborti, N. (2013). Genetic programming through bi-objective genetic algorithms with a study of a simulated moving bed process involving multiple objectives. Applied Soft Computing, 13(5), 2613-2623.

#### 5
Laumanns, M., Rudolph, G., & Schwefel, H. P. (1998). A spatial predator-prey approach to multi-objective optimization: A preliminary study. In International Conference on Parallel Problem Solving from Nature (pp. 241-249). Springer, Berlin, Heidelberg.

#### 6
Li, X. (2003). A real-coded predator-prey genetic algorithm for multiobjective optimization. In International Conference on Evolutionary Multi-Criterion Optimization (pp. 207-221). Springer, Berlin, Heidelberg.

#### 7
Bhupinder S. Optimization of Vanadium Microalloyed Steel Composition Using Evolutionary Deep Learning Techniques. Master's thesis. Department of Metallurgical and Materials Engineering, Indian Institute of Technology.
Binary file modified docs/_build/doctrees/README.doctree
Binary file not shown.
Binary file not shown.
Binary file modified docs/_build/doctrees/environment.pickle
Binary file not shown.
Binary file modified docs/_build/doctrees/index.doctree
Binary file not shown.
Binary file not shown.
Binary file removed docs/_build/doctrees/pyRVEA.EAs.doctree
Binary file not shown.
Binary file removed docs/_build/doctrees/pyRVEA.OtherTools.doctree
Binary file not shown.
Binary file removed docs/_build/doctrees/pyRVEA.Population.doctree
Binary file not shown.
Binary file removed docs/_build/doctrees/pyRVEA.Problem.doctree
Binary file not shown.
Binary file removed docs/_build/doctrees/pyRVEA.Recombination.doctree
Binary file not shown.
Binary file removed docs/_build/doctrees/pyRVEA.Selection.doctree
Binary file not shown.
Binary file added docs/_build/doctrees/pyrvea.EAs.doctree
Binary file not shown.
Binary file added docs/_build/doctrees/pyrvea.OtherTools.doctree
Binary file not shown.
Binary file added docs/_build/doctrees/pyrvea.Population.doctree
Binary file not shown.
Binary file added docs/_build/doctrees/pyrvea.Problem.doctree
Binary file not shown.
Binary file added docs/_build/doctrees/pyrvea.Recombination.doctree
Binary file not shown.
Binary file added docs/_build/doctrees/pyrvea.Selection.doctree
Binary file not shown.
Binary file added docs/_build/doctrees/pyrvea.doctree
Binary file not shown.
2 changes: 1 addition & 1 deletion docs/_build/html/.buildinfo
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: d041dea352c4b59a784f5b68df7e5d13
config: efb815af13ea31610fd3ab35acb78487
tags: 645f666f9bcd5a90fca523b33c5a78b7
Loading