Outro processo que as partículas podem ser usadas é no caso da identificação de sistemas. A identificação de parâmetros de sistemas, do ponto de vista da Estatística, necessita de uma inversa de matriz caso se desejar a utilização do método dos mínimos quadrados. As vezes isso pode levar os algoritmos de identificação a estouro de memória se os valores dessa matriz forem próximos de zero.

No caso das partículas essa preocupação não existe, pois o que se deseja é que elas busquem suas melhores posições para que a diferença entra os dados reais e a função com suas posições seja a menor possível.

Vamos fazer um algoritmo baseado em algo conhecido. Por exemplo, primeiro simulamos dados de uma reta conhecida tal como y = 2t.

Utilizando VBA por exemplo, esses valores são salvos em células. Estaremos simulando essa equação e as partículas terão que descobrir o parâmetro "2". Ou seja, as partículas agora vão estar no lugar do parâmetro "2" e deverão convergir para esse valor. A função a ser otimizada é a diferença entre os valores "reais" da reta e os valores para cada nova partícula que ocupa o lugar do número "2", ou , f(x(i))=x(i).t para cada partícula "i" em todos os pontos de "t".

A subrotina principal se relaciona com a funtion das partículas da seguinte forma:

A geração das partículas iniciais dentro da function será:

A parte do algoritmo para a busca final das partículas segue o mesmo procedimento da otimização, só atentando aqui que o ótimo será a diferença mais próxima possível de zero entre os valores reais da reta e os valores com as partículas substituindo o valor "2" na reta.

O RESULTADO FINAL

Experimente agora "ATRAPALHAR" as partículas colocando ruído no sinal que sai da reta. Adicione um ruído uniforme na reta com valor entre [-2 , +2 ]. Será que ainda assim as partículas irão conseguir encontrar o valor real de "2"?

RESPOSTA:

 

 

Voltar ao índice de Enxame de Partículas

 

Identificação de sistemas