=====================
Fuzzy Self-Tuning PSO
=====================

*Fuzzy Self-Tuning PSO* (FST-PSO) is a swarm intelligence global optimization method [1]
based on Particle Swarm Optimization [2].

FST-PSO is settings-free version of PSO which exploits fuzzy logic to dynamically assign the functioning parameters to each particle in the swarm. Specifically, during each generation, FST-PSO is determines the optimal choice for the cognitive factor, the social factor, the inertia value, the minimum velocity, and the maximum velocity. FST-PSO also uses an heuristics to choose the swarm size. 

FST-PSO is designed for real-valued multi-dimensional minimization problems.

In order to use FST-PSO, the programmer must implement:

* a custom fitness function;

* the number of dimensions of the problem;

* the boundaries of the search space for each dimension.

The programmer can also specify the maximum number of fitness evaluations. FST-PSO returns the best fitting solution along with its fitness value.



Example
=======
FST-PSO can be used as follows:

from fstpso import FuzzyPSO	

def example_fitness( particle ):
	return sum(map(lambda x: x**2, particle))

if __name__ == '__main__':
	
	dims = 10

	FP = FuzzyPSO( D=dims )

	FP.set_fitness(example_fitness)

	FP.set_search_space( [[-10, 10]]*dims )	

	result =  FP.solve_with_fstpso(max_iter=100)

	print "Best solution:", result[0]
	
	print "Whose fitness is:", result[1]




Further information
-------------------

FST-PSO has been created by M.S. Nobile, D. Besozzi, G. Pasi, G. Mauri, 
R. Colombo (University of Milan-Bicocca, Italy), and P. Cazzaniga (University
of Bergamo, Italy). The source code was written by M.S. Nobile.

[1] Nobile, Cazzaniga, Besozzi, Colombo, Mauri, Pasi, "Fuzzy Self-Tuning PSO:
A Settings-Free Algorithm for Global Optimization", Swarm & Evolutionary 
Computation, 2017 (doi:10.1016/j.swevo.2017.09.001)

[2] Kennedy, Eberhart, Particle swarm optimization, in: Proceedings IEEE
International Conference on Neural Networks, Vol. 4, 1995, pp. 1942–1948

<http://www.sciencedirect.com/science/article/pii/S2210650216303534>