-
Notifications
You must be signed in to change notification settings - Fork 334
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
ljvmiranda921
committed
Jul 30, 2017
1 parent
7daed48
commit a39f117
Showing
2 changed files
with
65 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -34,6 +34,7 @@ Launching pad | |
:maxdepth: 2 | ||
:caption: General | ||
|
||
intro | ||
features | ||
installation | ||
authors | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
============ | ||
Introduction | ||
============ | ||
|
||
It's all a treasure hunt | ||
------------------------- | ||
|
||
Imagine that you and your friends are looking for a treasure together. | ||
The treasure is magical, and it rewards not only the one who finds it, | ||
but also others based on their proximity. Your group knows, | ||
approximately, where the treasure is, but not exactly sure of its definite | ||
location. | ||
|
||
Your group then decided to split up and all of you received | ||
walkie-talkies and metal detectors. The purpose of the walkie-talkie is | ||
to inform everyone of your current position, while the metal detectors | ||
indicate if you are near the treasure. In return, you gain knowledge of | ||
the location of your friends, and also their proximity to the treasure. | ||
|
||
As a member of the group, you have two options: | ||
|
||
* Ignore your friends, and just search for the treasure the way you want it. Problem is, if you didn't find it, and you're far away from it, you get a very low reward. | ||
|
||
* Using the information you gather from your group, coordinate and find the treasure together. The best way is to know who is the one nearest to the treasure, and move towards that person. | ||
|
||
Here, it is evident that by using the information you can gather from | ||
your friends, you can increase the chances of finding the treasure, and | ||
at the same time maximize the group's reward. This is the basics of | ||
Particle Swarm Optimization (PSO). The group is called the *swarm*, | ||
you are a *particle*, and the treasure is the *global optimum* [CI2007]_. | ||
|
||
.. [CI2007] A. Engelbrecht, "An Introduction to Computational Intelligence," John Wiley & Sons, 2007. | ||
Particle Swarm Optimization (PSO) | ||
--------------------------------- | ||
|
||
As with the treasure example, the idea of PSO is to emulate the social | ||
behaviour of birds and fishes by initializing a set of candidate solutions | ||
to search for an optima. It was a technique that is attributed to Eberhart, | ||
Kennedy, and Shi [IJCNN1995]_ [ICEC2008]_. | ||
|
||
One interesting characteristic of PSO is that it does not use the gradient | ||
of the function, thus, objective functions need not to be differentiable. | ||
Moreover, the basic PSO is astonishingly simple. And adding variants to | ||
the original implementation can help it adapt to more complicated problems. | ||
|
||
.. [IJCNN1995] J. Kennedy and R.C. Eberhart, "Particle Swarm Optimization," Proceedings of the IEEE International Joint Conference on Neural Networks, 1995, pp. 1942-1948. | ||
.. [ICEC2008] Y. Shi and R.C. Eberhart, "A modified particle swarm optimizer," Proceedings of the IEEE International Conference on Evolutionary Computation, 1998, pp. 69-73. | ||
Why make PySwarms? | ||
------------------ | ||
|
||
In one of my graduate courses during Masters, my professor asked us to | ||
implement PSO for training a neural network. It was, in all honesty, my | ||
first experience of implementing an algorithm from concept to code. I | ||
found the concept of PSO very endearing, primarily because it gives | ||
us an insight on the advantage of collaboration given a social situation. | ||
|
||
When I revisited my course project, I realized that PSO, given enough | ||
variations, can be used to solve a lot of problems: from simple optimization, | ||
to robotics, and to job-shop scheduling. I then decided to build a | ||
research toolkit that can be extended by the community (us!) and be used | ||
by anyone. |