Anda di halaman 1dari 98

AGRUPAMENTO DE DADOS ATRAVS DE ALGORTMOS SWARM

Urias da Rosa Novaes

TESE SUBMETIDA AO CORPO DOCENTE DA COORDENAO DOS


PROGRAMAS

DE

PS-GRADUAO

DE

ENGENHARIA

DA

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO COMO PARTE DOS


REQUISITOS

NECESSRIOS

PARA

OBTENO

DO

GRAU

DE

MESTRE EM CINCIAS EM ENGENHARIA CIVIL.

Aprovada por:

______________________________________________________
Prof. Nelson Francisco Favilla Ebecken, DSc.

______________________________________________________
Prof. Helio Jos Correa Barbosa, DSc.

______________________________________________________
Prof. Alvaro Luiz Gayoso de Azeredo Coutinho, DSc.

RIO DE JANEIRO, RJ - BRASIL


DEZEMBRO DE 2002

NOVAES, URIAS DA ROSA


Agrupamento de Dados atravs de algoritmos Swarm [Rio de Janeiro] 2002
VII, 91p. 29,7 cm (COPPE/UFRJ, M.Sc.,
Engenharia Civil, Computao de Alto Desempenho,2002)
Tese - Universidade Federal do Rio de
Janeiro, COPPE
1. Agrupamento 2. Algoritmos Swarm
I. COPPE/UFRJ II.Ttulo(srie)

ii

Agradecimentos
Ao Professor Nelson Ebecken, pela orientao lcida, pelo apoio e
motivao nos momentos mais difceis ao longo do mestrado e sem os
quais esse trabalho no teria sido possvel.
Aos demais professores e funcionrios do Programa de Engenharia
Civil da COPPE por sua contribuio e apoio na minha vida acadmica.
Aos meus pais pela formao que me deram, capacitando-me a
enfrentar e superar desafios.
A

minha

famlia,

meus

queridos

filhos

Filipe

Tiago,

minha

querida esposa Elizabete, pelas alegrias que me proporcionam , e sem os


quais nenhum prazer teria graa e nenhum trabalho faria sentido.

iii

Resumo da Tese apresentada COPPE/UFRJ como parte dos requisitos


necessrios para a obteno do grau de Mestre em Cincias (M Sc.)

AGRUPAMENTO DE DADOS ATRAVS DE ALGORITMOS SWARM

Urias da Rosa Novaes


Dezembro / 2002

Orientador: Nelson Francisco Favilla Ebecken


Programa: Engenharia Civil

processo

similares

uma

de

agrupar

importante

objetos
atividade

naturalmente desde a infncia.


aplicaes

em

vrias

reais

reas

ou

humana

abstratos
que

em

se

classes

desenvolve

Como uma atividade que encontra


importantes,

atualmente

se

desenvolvem

mtodos cientficos que permitam sua realizao de forma automatizada


com pouca ou nenhuma interveno humana.
assim

Algoritmos

Swarm

como

Algoritmos

uma

linha

Genticos,

da

computao

que

evolucionria,

baseados

em

modelos

encontrados na natureza, buscam solues para problemas de otimizao.


Este trabalho faz uma descrio geral das caractersticas e mtodos
empregados

no

tcnica

otimizao

de

problema

de

atravs

agrupamento,
de

descreve

algoritmos

swarm

detalhadamente
e

apresenta

a
o

desenvolvimento de operadores para o agrupamento de dados atravs de


algoritmos swarm.
eficincia

dos

So apresentados estudos de casos que demonstram a


algoritmos

swarm

agrupamento.

iv

para

resolver

problemas

de

Abstract of the Thesis

presented to COPPE/UFRJ as a partial fulfilment

of the requirements for the degree of Master of Sciences (M Sc.).

PARTICLE SWARM OPTIMIZATION FOR DATA CLUSTERING

Urias da Rosa Novaes


December / 2002

Advisor: Nelson Francisco Favilla Ebecken


Department: Civil Engineering

The process of grouping real or abstract objects in similar classes


is

an

important

childhood.
important

As
areas,

human

activity

it

an

is

scientific

that

activity
methods

is
that

are

developed
finds

naturally

applications

developed

to

allow

since
in
it

the

several
to

be

performed in an automated way with little or no human intervention.


Particle Swarm Algorithms is a line of the evolutionary computation , as
well as Genetic Algorithms, that based on models found in the nature,
search for solutions for optimization problems.
This work makes a general description of the characteristics and methods
used
swarm

in

the

grouping

optimization

development

of

problem,
technique

operators

optimization algorithms.

for

or

clustering,

in

full

data

it

detail

clustering

describes
and

through

the

particle

presents
particle

the

swarm

The efficiency of particle swarm optimization

to solve clu stering problems is demonstrated through studies of cases.

ndice

1 . 0 I n t r o d u o ................................ ................................ ................................ ..................1

2 . 0 O p r o b l e m a d e A g r u p a m e n t o ................................ ................................ ...................3


2 . 1 T i p o s d e a t r i b u t o s e m p r o b l e m a s d e a g r u p a m e n t o ................................ ...............5
2 . 1 . 1 A t r i b u t o s n u m r i c o s ................................ ................................ ........................ 5
2 . 1 . 2 A t r i b u t o s b i n r i o s ................................ ................................ ............................ 8
2 . 1 . 3 A t r i b u t o s n o m i n a i s ................................ ................................ ..........................9
2 . 1 . 4 A t r i b u t o s o r d i n a i s ................................ ................................ ..........................10
2 . 1 . 5 A t r i b u t os m i s t o s ................................ ................................ ............................ 11
2 . 2 C o n c e i t u a o g e r a l d e m t o d o s d e a g r u p a m e n t o ................................ ...............13
2 . 2 . 1 M t o d o s b a s e a d o s e m p a r t i c i o n a m e n t o ................................ ........................ 13
2 . 2 . 2 M t o d o s h i e r r q u i c o s ................................ ................................ .................... 14
2 . 2 . 3 M t o d o s b a s e a d o s e m d e n s i d a d e ................................ ................................ ...14
2 . 2 . 4 M t o d o s b a s e a d o s e m e s t r u t u r a s e m g r a d e ................................ ..................14
2 . 2 . 5 M t o d o s b a s e a d o s e m m o d e l o s ................................ ................................ ..... 15
2 . 3 C a r a c t e r s t i c a s d e p r o b l e m a s d e a g r u p a m e n t o................................ ...................15
3 . 0 A l g o r i t m o s E v o l u c i o n r i o s : u m a v i s o g e r a l ................................ .......................17
3 . 1 A l g o r i t m o s G e n t i c o s ................................ ................................ ...........................18
3 . 2 A l g o r i t m o s S w a r m ................................ ................................ ................................ . 19
4 . 0 C o n c e i t o s F u n d a m e n t a i s e m p r e g a d o s e m A l g o r i t m o s S w a r m ...........................21
4 . 1 R e p r e s e n t a o v e t o r i a l d o d e s l o c a m e n t o d o s i n d i v d u o s ................................ ...22
4 . 2 F u n o o b j e t i v o ................................ ................................ ................................ .... 23
4 . 3 T i p o s d e t o p o l o g i a ................................ ................................ ................................ 23
4 . 3 . 1 E m E s t r e l a ( t a m b m d e n o m i n a d o : g b e s t )................................ ..................... 24
4.3.2 Em Roda ................................ ................................ ................................ ......... 24
4 . 3 . 3 E m C r c u l o ( t a m b m d e n o m i n a d o : l b e s t ) ................................ ..................... 25
4 . 3 . 4 R a n d m i c a ................................ ................................ ................................ ......26
5 . 0 E s t u d o d e C a s o s................................ ................................ ................................ .......28
5 . 1 F u n o m a t e m t i c a c o n t n u a c o m v r i o s m x i m o s l o c a i s ................................ ..28
5 . 2 P a d r o d e b i t s ................................ ................................ ................................ .......32

vi

5 . 3 C o n j u n t o d e d a d o s R u s p i n i ................................ ................................ ................ 36


5 . 4 C o n j u n t o d e d a d o s c a r a c t e r s t i c o s d a f l o r e s I r i s ................................ ...............43
5 . 5 C o n j u n t o d e d a d o s d e d o e n a c a r d a c a ................................ ...............................47
6 . 0 C o n c l u s o ................................ ................................ ................................ ................. 49

7 . R e f e r n c i a s B i b l i o g r f i c a s ................................ ................................ .......................52

A n e x o 1 - D a d o s d o c o n j u n t o I r i s ................................ ................................ ................ 53

A n e x o 2 - Pseudo - c d i g o d a i m p l e m e n t a o d o a l g o r i t m o ................................ .......56

A n e x o 3 - P r o g r a m a s f o n t e ................................ ................................ ...........................57

vii

1.0 Introduo
O

aumento

da

capacidade

computadores

criou

as

Evolucionria,

permitindo

bases

velocidade

para

que

uso

diversas

de

processamento

efetivo

reas

da

da

dos

Computao

cincia

possam

se

beneficiar de uma tcnica simples e eficiente na soluo de problemas


que envolvam otimizao e busca.

Esses benefcios so mais expressivos

para resoluo de problemas de otimizao no lineares, onde os mtodos


tradicionais so bem mais complexos e eventualmente menos eficientes.
Tcnicas

de

computao

evolucionria

solu es

que

iterativamente

so

partem

testadas

de

um

evoluem

conjunto

atravs

de

de

um

processo geralmente modelado a partir de um processo da natureza.

processo modelado tende a melhorar as solues aproximando assim a


melhor soluo obtida da soluo tima para o problema.
O problema de agrupamento de dados pode ser analisado como um
problema de otimizao no qual se procura maximizar as diferenas das
caractersticas

mdias

dos

elementos

dos

grupos

ao

mesmo

tempo

minimizar as diferenas das caractersticas dos elementos de um mesmo


grupo.
Este

trabalho

estuda

tcnica

de

computao

evolucionria

denominada Particle Swarm Optimization (PSO), orientada resoluo


de problemas de agrupamento.
No captulo 2, o problema de agrupamento abordado, sendo sua
importncia discutida e alguns de seus mtodos tradicionais de resoluo
comentados.
O captulo 3 dedicado Computao Evolucionria apresentando
as suas linhas principais que so os algoritmos genticos e os algoritmos
swarm.
No

captulo

caractersticas

dos

feita

algoritmos

uma

swarm,

apresentao
sua

detalhada

representao

das

matemtica,

topologias de implementao, vantagens e desvantagens.


O

captulo

apresenta

vrios

estudos

de

casos

implementao de algoritmo em computador e anlise de desempenho.

atravs

de

captulo

apresenta

as

concluses

do

trabalho

possveis linhas de pesquisa na rea de Particle Swarm Optimization.

aponta

2.0 O problema de Agrupamento


Todo

agrupamento

de

pessoas, fatos, objetos, etc. e os aprimora e os utiliza no dia a dia.

qual

ser

seria

humano

possui

importncia

de

seus

se

esquemas

estudar

esquemas ou mtodos de agrupamento ?

de

analisar

cientificamente

Imagine por exemplo o caso de

uma administradora de carto de crdito que precisa oferecer cartes de


crditos em diversas faixas de valores a novos clientes em potencial.
Baseado em dados como perfil de compras, tipo de emprego, local de
residncia, interesses pessoais, a administradora pode agrupar os clientes
em potencial e oferecer cartes de crdito muito mais adequados a cada
cliente, aumentando assim as chances de sucesso na obteno de novos
clientes.

Da

mesma

forma

mtodos

de

agrupamento

so

teis

em

diversas reas como clculo de risco para seguradoras, identificao de


espcies

animais

vegetais

em

biologia ,

estimar

valorizao

de

separ-los

em

terrenos em loteamentos, etc.


Dado
grupos

um

onde

conjunto
cada

de

grupo

objetos,

contm

agrup -los

objetos

significa

semelhantes

entre

si

no

possa

ser

semelhantes aos demais objetos dos outros grupos.


O

conceito

de

semelhana

no

aplicado sem alguma subjetividade.

um

conceito

que

Como exemplo, dado um conjunto

de barcos, avies e automveis, o mesmo poderia ser agrupado em 3


grupos de acordo com suas similaridades: veculos que se movem no mar,
no ar e na terra.

Essa parece ser a forma de agrupamento mais bvia,

mas certamente no a nica.

Se entre os barcos existirem barcos a

vela, uma outra forma de agrupamento igualmente consistente e tambm


de acordo com suas similaridades seria em 2 grupos: um grupo com
barcos

propulso

vela

outro

grupo

ou

veculos

mecnica,

com
que

avies,
se

automveis

movem

atravs

barcos

de

de

propulso

mecnica e veculos que se movem com propulso natural.


Para que se faa um agrupamento preciso que a subjetividade
inerente

ao

conceito

de

similaridade

seja

explicitada

isso

feito

atravs da definio de um critrio de similaridade, o que servir como


diretriz para a gerao de um mtodo de agrupamento.
O primeiro passo para que essa subjetividade inerente ao conceito
de similaridade seja explicitada a codificao dos objetos.

No exemplo

dado, essa codificao pode ser feita atravs de variveis discretas, onde
cada caracterstica seria representada por um valor.
ser

representado

caractersticas

por

um

vetor

observadas.

de

dime nso

codificao

Cada objeto pode

igual

um

ao

passo

nmero

de

extremamente

importante para a obteno de bons resultados em qualquer mtodo de


agrupamento.
Outro

aspecto

importante

no

processo

de

agrupamento

definio do nmero de grupos em que os objetos sero divididos.

a
A

rigor, dado um conjunto de objetos no idnticos, mas com similaridades


diversas, em um extremo o mesmo pode ser agrupado em um nmero de
grupos igual ao nmero de objetos, e em outro extremo o mesmo pode ser
agrupado em um grupo apenas.

O exemplo apresentado com avies,

automveis e barcos ilustra como o nmero de grupos para um conjunto


de objetos pode ser subjetivo.

Um mtodo de agrupamento deve portanto

receber como dado de entrada o nmero de grupos em que os objetos


devem ser divididos ou ento o mtodo deve realizar uma anlise que
fornea como resultado um nmero de grupos.
Finalmente, com os objetos codificados o mtodo de agrupamento
ir

analisar

suas

similaridades

de

acordo

com

dita

em

relao

critrio

definido

agrupando-os de acordo.
Uma

palavra

deve

ser

distino

entre

agrupamento e classificao, j que a diferena entre os dois processos


sutil

mtodos

desenvolvidos

utilidade para o outro.

para

um

processo

provavelmente

tero

Enquanto a classificao j parte de um nmero

estabelecido de classes e os objetos analisados so colocados em uma das


classes com caractersticas definidas, o agrupamento pode ser visto como
uma classificao onde as classes no foram definidas a priori.

determinao do nmero de classes no entanto um problema de difcil


soluo.

2.1 Tipos de atributos em problemas de agrupamento


2.1.1 Atributos numricos
A forma mais comum de se representar objetos a serem agrupados
atravs de medidas numricas de seus atributos como por exemplo:
distncia,
medidas

altura,
so

largura,

naturalmente

peso,

quantidade,

contnuas.

temperatura,

Dessa

forma

etc.

Essas

cada

objeto

representado por um vetor de dimenso igual ao nmero de atributos a


serem considerados e cada elemento do vetor expressa numericamente a
medida de cada atributo.
2.1.1.1 Normalizao
A escolha das unidades que expressam os atributos tem influncia
no peso que cada atributo ter no processo de agrupamento.
menor

for

consequentemente

unidade

escolhida,

maior

maior

influncia

ser

daquele

faixa

atributo

no

de

Quanto
valores

agrupamento.

Quando se pretende que os atributos tenham influncias equivalentes no


agrupamento preciso que as medidas sejam normalizadas.

Isto pode ser

feito da forma descrita na equao 2.1.

Zi =

Xi
s

(2.1)

Onde
a mdia do valor do atributo de todos os elementos, e
s pode ser o desvio mdio absoluto:

s=

(| X 1 | + | X 2 | +... + | X n |)
n

(2.2)

Ou o desvio mdio quadrtico:

( X 1 ) + ( X 2 ) + ...+ ( X n )
2

s=

E Zi o valor normalizado do atributo do elemento i.

(2.3)

A principal diferena entre a utilizao do desvio mdio padro e o


desvio mdio absoluto que o segundo menos robusto pois mais
sensvel a influncia de pontos fora do domnio de interesse.

Pode -se tambm normalizar os dados mapeando-os em uma faixa.

equao 2.4 descreve essa forma de normalizao.

Zi =

( Xi X min)
( X max X min)

(2.4)

Onde:
Xi :

Valor no normalizado do atributo do elemento i;

Xmin:

Valor mnimo do atributo dentre todos os elementos;

Xmax:

Valor mximo do atributo dentre todos os elementos;

Zi :

Valor normalizado do atributo do elemento i.

2.1.1.2 Medidas de distncia


Para atributos numricos as medidas de distncia mais comuns so feitas
atravs de:

Distncia Euclidiana:

d (i , j ) =

( X i1 X j1) + ( X i 2 X j 2 )
2

+ ... + ( X in X jn )

(2.5)

Distncia de Manhattan ou city-block:

d (i, j ) =| X i1 X j 1 | + | X i 2 X j 2 | +...+ | X in X jn |

(2.6)

A figura 2.1 a representao polar do conjunto de pontos de um plano,


equidistantes

um

ponto

pela

distncia

Euclidiana

(um

crculo)

representao da distncia de Manhattan destes mesmos pontos.


90

1.4142

120

60

0.70711

150

30

180

210

330

240

300
270

Figura 2.1 - Distncia Euclidiana e Manhattan

A distncia de Manhattan se aproxima da distncia Euclidiana quando


apenas um atributo diferencia dois objetos. Quando mais de um atributo
diferencia dois objetos, a distncia de Manhattan tende a separar mais os
objetos do que a distncia Euclidiana separaria.

Pode ser usada tambm a Distncia de Minkowski:

d (i, j ) = n | X i1 X j1 | n + | X i 2 X j 2 |n +...+ | X in X jn |n
(2.7)
A distncia Euclidiana assim como a distncia de Manhattan so casos
particulares da distncia de Minkowski onde n=2 e n=1 respectivamente.
Quando se deseja que os atributos tenham influncias diferenciadas no
agrupamento,

pode-se

utilizar

pesos

para

clculo da distncia.
7

se

ponderar

os

mesmos

no

2.1.2 Atributos binrios


A representao dos atributos de um conjunto de elementos a ser
agrupado

pode

ser

representado

atravs

de

variveis

binrias.

Por

exemplo, a ficha mdica de um grupo de indivduos a serem agrupados


em

nveis

seguintes

de

risco

atributos

de

problemas

binrios:

sexo

crdio-vasculares
(m

ou

f),

poderia

pratica

conter

exerccios

os

fsicos

regularmente (sim ou no), sofre de presso alta (sim ou no), dieta


equilibrada

(sim

ou

no),

t em histrico de problemas crdio-vasculares

na famlia (sim ou no), sofre de obesidade (sim ou no), fumante (sim


ou no), possui nvel de colesterol acima de 240 (sim ou no), etc.
Embora

algumas

caractersticas

pudessem

ter

atributos

mais

flexveis

(sim, um pouco, no), os atributos binrios apresentam a vantagem de


serem mais fceis e rpidos de serem coletados e muitas vezes dessa
forma que os dados esto disponveis.
As

variveis

assimtricas.

As

binrias

podem

variveis

ser

simtricas

de
so

dois

tipos:

aquelas

simtricas

cujos

dois

ou

estados

influenciam igualmente no agrupamento, j as variveis assimtricas so


variveis cujos dois estados tm influncia diferenciada no agrupamento.
Por exemplo: Pratica exerccios fsicos regularmente (sim ou no) por si
s no coloca ou retira um indivduo de um grupo de risco.
forma que

Da mesma

o estado sim afasta o indivduo do grupo de risco, o estado

no o aproxima do grupo de risco. Ambos estados tm o mesmo peso no


agrupamento.
pode

ser

J a varivel: Possui nvel de colesterol acima de 240, no

considerada

da

mesma

forma.

estado

sim

tem

uma

influncia muito mais forte na incluso do indivduo no grupo de risco


do que o estado no tem no afastamento do grupo de risco.

2.1.2.1 Medidas de desigualdade


Dados dois objetos cujos atributos sejam binrios e simtricos, o grau de
desigualdade entre esses objetos, ou distncia pode ser expressa como:

d=

rs
qs + rs + ts

(2.8)

Onde:
rs:

nmero de variveis simtricas cujos estados so diferentes nos


dois objetos;

qs:

nmero de variveis simtricas cujos estados so iguais a sim nos


dois objetos;

ts:

nmero de variveis simtricas cujos estados so iguais a no nos


dois objetos.

Para objetos cujos atributos sejam binrios simtricos e assimtricos, a


distncia

entre

esses

objetos

pode

ser

expressa

pelo

coeficiente

de

Jaccard [4]:

d=

ra
qa + ra

(2.9)

onde:
ra:

nmero de variveis assimtricas cujos estados so diferentes nos


dois objetos;

qa:

nmero de variveis assimtricas cujos estados so iguais a sim


nos dois objetos;

As

variveis

assimtricas

cujos

estados

so

iguais

no

nos

dois

objetos no influenciam na distncia entre os objetos.

2.1.3 Atributos nominais


So aqueles cujos estados no se limitam a dois como nos atributos
binrios, mas podem assumir um determinado nmero de estados.
exemplo,
atributo

para

um

nominal

conjunto

pois

pode

de

automveis,

assumir

um

atributo

marca

entre

vrios

estados

Por

um
(Fiat,

General Motors, Volkswagen, Ford, etc.).


O

grau

de

no

similaridade

nominais pode ser medido atravs de:


9

entre

objetos

cujos

atributos

so

d=

pm
p

(2.10)

onde:

p: nmero total de variveis nominais;


m: nmero de variveis nominais de mesmo estado nos dois objetos.

2.1.4 Atributos ordinais


Muitas

vezes os

objetos

so

representados

atravs

cujos estados guardam uma relao de ordenao entre si.

de

atributos

Por exemplo,

em um grupo de militares, o atributo patente (soldado, sargento, tenente,


capito, general) um atributo ordinal.
O clculo da distncia entre objetos de atributos ordinais pode ser
feito de forma igual aos atributos numricos.

Para isso preciso se

atribuir valores numricos s variveis ordinais e para que as mesmas


tenham a mesma influncia no agrupamento, importante mape-las em
um intervalo igual.
O seu mapeamento no intervalo [0 1] pode ser feito atravs de:

Z if =

Rif 1

(2.11)

M if 1

onde:

Rif a ordem do atributo;


M if a ordem do maior atributo.

Para exemplificar considere o caso seguinte:

10

Patente
soldado=

1;

sargento=

2;

tenente=

3;

capito=

4;

general=

Neste caso o mapeamento na faixa [0:1] consiste em:


Patente mapeada
soldado=

0;

sargento=

0,25;

tenente=

0,5;

capito=

0,75;

general=

E podem portanto serem utilizadas como atributos numricos derivados


de atributos ordinais e se prestam ao clculo de desigualdades.

2.1.5 Atributos mistos


Na realidade muito comum que os objetos de um determinado
conjunto a ser agrupado possuam atributos de vrios tipos.
portanto

que

se

possa

computar

desigualdades

entre

necessrio

esses

tipos

objetos. Isto pode ser feito atravs da seguinte expresso:

d
d (i, j) =

n

(f) (f)
ij
f =1 ij
n
(f)
ij
f =1

(2.12)

11

de

onde:

ij( f )

= 0;

se X if = X jf e a varivel f binria assimtrica ou

ij( f )

= 1;

se X if X jf e a varivel f binria assimtrica ou


se

varive l

binria

simtrica,

nominal,

ordinal

ou

numrica.

d ij( f ) = 0;

se Xif = Xjf e f binria ou nominal;

d ij( f ) = 1;

se Xif Xjf e f binria ou nominal;

d ij( f ) =

| X if X jf |

[ ]

[ ]

max X f min X f

d if( f ) =| Z if Z jf | ;

se f numrica;

se f ordinal.

Como ilustrao, vamos supor que os dados mdicos coletados com


inteno de se agrupar pacientes em grupos de risco de doenas crdio vasculares sejam conforme a tabela 2.1:

Paciente

Sexo

Fumante

A
B
C

M
M
F

N
S
N

Nvel de
colesterol

160
200
180
Tabela 2.1

Onde os atributos so dos seguintes tipos:


Sexo:

binrio simtrico;

Fumante:

binrio assimtrico;

Nvel de colesterol:

numrico;

Idade:

numrico;

Nvel de atividade fsica:

ordinal.
12

Idade

30
50
40

Nvel de
atividade
fsica
intenso
nenhum
mdia

Mapeando as variveis numricas e ordinais na regio [0,1] e atribundo


valores s variveis binrias obtm-se os resultados da tabela 2.2.

Paciente

Sexo

Fumante

Nvel de
colesterol

Idade

A
B
C

1
1
0

0
1
0

0
1
0,5

0
1
0,5

Nvel de
atividade
fsica
1
0
0,5

Tabela 2.4

A desigualdade entre os objetos dada por:


d(A,B) = 0+1+1+1+1 / 1+1+1+1+1 = 4/5 = 0,8
d(A,C) = 1+0+0,5+0,5+0,5 / 1+0+1+1+1 = 2,5/4 = 0,625
d(B,C) = 1+1+0,5+0,5+0,5 / 1+1+1+1+1 = 3,5/5 = 0,7
Essa forma de clculo de desigualdades entre elementos que possuem
atributos mistos mostra que os elementos A e C so os mais prximos
enquanto os elementos A e B so os mais distantes.

2.2 Conceituao geral de mtodos de agrupamento


2.2.1 Mtodo s baseados em particionamento
Os mtodos baseados em particionamento so aqueles que a partir
de n objetos a serem agrupados em k grupos, partem de um agrupamento
inicial, calculam os pontos mdios dos grupos e iteram relocando objetos
entre

os

grupos

baseando-se

nas

distncias

entre

os

objetos

esses

pontos mdios, tentando maximizar as distncias entre os pontos mdios


dos grupos e minimizar a distncia entre elementos de um mesmo grupo.
Este

mtodo

tambm

conhecido

como

k -means,

distncia feito em relao mdia dos k pontos.

pois

clculo

da

Existe uma outra

abordagem similar, denominada k -medoid , na qual a distncia calculada


em relao ao elemento do conjunto mais prximo ao ponto mdio.

So

em geral mtodos eficientes mas de difcil aplicao em grandes bases de


dados

pois

requerem

exponencialmente
13

mais

capacidade

de

processamento

medida

que

aumenta

tamanho

do

conjunto

ser

agrupado.

2.2.2 Mtodos hierrquicos


Os
Mtodos

mtodos
que

hierrquicos

trabalham

trabalham

por

por

aglomerao

aglomerao
partem

de

ou

diviso.

objetos

inicialmente agrupados em n grupos e a cada iterao aglomeram grupos


baseando-se em sua densidade ou na distncia entre os objetos, at que
uma determinada condio seja satisfeita.

Os mtodos que trabalham por

diviso partem de n objetos inicialmente agrupados em um grupo e a


cada iterao dividem os grupos existentes em sub-grupos baseando-se
nas distncias entre os objetos e densidade dos grupos.

So em geral

mtodos rpidos, porm so irreversveis, uma vez que no retornam uma


diviso ou aglomerao efetuada.

2.2.3 Mtodos baseados em densidade


Mtodos

baseados

em

densidade

formam

grupos

de

objetos

em

funo da densidade de objetos em uma regio. Esses mtodos iteram


verificando se na regio prxima a cada objeto existe um outro que possa
ser agregado ao mesmo grupo.

So adequados para descobrir grupos de

formatos arbitrrios, ainda que com dados contaminados por rudo.

2.2.4 Mtodos baseados em estruturas em grade


So mtodos que dividem o espao no qual esto os objetos em
clulas formando uma estrutura em grade e realizam as operaes de
agrupamento no nos objetos em si mas sim nas clulas da grade.

As

operaes

das

de

agrupamentos

podem

ser

realizadas

em

funo

caractersticas estatsticas ou da de nsidade das clulas da grade.


geral

so

mtodos

rpidos

para

conjuntos

com

grande

quantidade

Em
de

objetos j que sua carga computacional depende no com o nmero de


objetos mas sim do nmero de clulas da grade.

14

2.2.5 Mtodos baseados em modelos


So

mtodos

que

pressupem

um

modelo

estatstico

para

distribuio dos objetos de um determinado conjunto e a partir dos dados


a

serem

agrupados

conjunto de objetos.

ajustam

os

parmetros

do

modelo

para

aquele

Os grupos so formados a partir da funo de

densidade que aqueles objetos representam.


2.3 Caractersticas de problemas de agrupamento
Mtodos

de

agrupamento

devem,

ser

capazes

de

trabalhar,

em

maior ou menor escala com dados cujas caractersticas apresentem as


seguintes variaes:

Tamanho do conjunto de objetos

Um mtodo de agrupamento pode funcionar bem quando o nmero de


objetos a serem agrupados relativamente pequeno mas pode no ser to
eficiente ou se tornar extremamente lento se o nmero de objetos a serem
agrupados for muito grande.
funcione

eficientemente

desejvel que um mtodo de agrupamento

tanto

com

conjuntos

pequenos

como

com

conjuntos grandes.

Capacidade em lidar com diferentes tipos de atributos

Embora

maior

parte

das

aplicaes

trabalhe

apenas

com

atributos

numricos, muitas aplicaes podem precisar agrupar dados baseados em


atributos binrios ou por categorias.

Um bom mtodo de agrupamento

deve ser capaz de lidar simultaneamente com diversos tipos de atributos.

Capacidade em lidar com agrupamentos de formas variadas

Muitos

mtodos

de

agrupamento

so

baseados

em

distncia

Euclidiana

para separar os grupos e so em geral eficientes para agrupar conjuntos


de formato esfrico e de densidade semelhante.
de

agrupamento

possam

tambm

agrupar

desejvel que mtodos


conjuntos

de

formato

densidade arbitrrios.

Necessidade de parmetros de entrada

Muitos mtodos de agrupamento necessitam parmetros de entrada que


exprimam algum conhecimento a respeito do conjunto de dados a serem
agrupados como por exemplo densidade ou nmero de grupos .

15

O ideal

seria que um mtodo de agrupamento fosse capaz de retirar do conjunto


de dados esse conhecimento, ou seja, que no necessitasse de parmetros
de entrada.

Capacidade de lidar com dados com rudo ou corrompidos

Bases de dados reais podem conter dados incompletos ou corrompidos.


Um bom mtodo de agrupamento deve ser capaz de lidar com esse tipo de
problema.

Capacidade de lidar com dados em qualquer ordem

Um bom mtodo de agrupamento deve ser insensvel ordem em que os


dados

so

apresentados,

no gerando grupos diferentes se os mesmos

dados forem apresentados em uma ordem diferente.

Capacidade de tratar dados multi-dimensionais

Dados
agrupados

bidimensionais
visualmente.

ou

mesmo
importante

tridimensionais
que

mtodos

sejam eficientes tambm para dados multi-dimensionais.

16

so
de

facilmente
agrupamento

3.0 Algoritmos Evolucionrios: uma viso geral


A modelagem matemtica de problemas complexos pode levar a
funes

bastante

descontnuas.

complexas,
maximizao

multi-dimensionais,
(ou

minimizao)

no

dessas

lineares

funes

atravs

de mtodos matemticos convencionais, a fim de se otimizar a soluo


do

problema,

resolver.

As

pode

ser

tcnicas

de

um

problema

algoritmos

matemtico

muito

difcil

evolucionrios

(PSO

ou

de

se

algoritmos

genticos) podem ser empregadas para se resolver esse tipo de problema.


Algoritmos evolucionrios so algoritmos que buscam uma soluo
tima em um determinado domnio a partir de um conjunto de solues
tentativas que so testadas e comparadas entre si.
comparao

as

solues

tentativas

baseado

em

Em funo dessa

so

submetidas

uma

analogia

com

um

processo

algum

de

evoluo,

geralmente

processo

natural.

Este processo orientado a preservar as caractersticas das

solues melhores e a descartar as caractersticas das solues piores,


produzindo

assim

teoricamente
processo

um

estaro

evolui

mais

novo

conjunto

prximas

at

que

melhor

determinado

patamar

de

desempenho

determinado

nmero

de

evolues

de

da

solues

soluo

das

tima

solues

ou

tentativas

que

procurada.

tentativas

simplesmente

tenha

ocorrido.

at

atinja

um

que

um

Evidentemente

algoritmos evolucionrios podem no encontrar a soluo tima, ficando


em

uma

soluo

sub-tima,

principalmente

se

todas

as

solues

tentativas convergirem ao longo do processo para essa soluo sub-tima


impedindo

assim

ou

dificultando

que

busca

continue

explorar

domnio.

Para minimizar a possibilidade de isto ocorrer, o processo

evolucionrio a que so submetidas as solues tentativas devem possuir


um certo grau de aleatoriedade na gerao das novas solues tentativas
de modo a permitir o surgimento em pequena escala de caractersticas
no presentes nas solues tentativas originais.

O processo natural ao

qual o algoritmo evolucionrio anlogo em geral possui tambm esse

17

pequeno grau de aleatoriedade em sua evoluo.

Os processos naturais

mais comuns aos quais os algoritmos evolucionrios se baseiam so os


processos
orientam

genticos
a

da

evoluo

movimentao

de

das

enxame

espcies
de

ins etos

os

processos

(swarm),

que

que
sero

descritos a seguir.

3.1 Algoritmos Genticos

Os

algoritmos

genticos

so

algoritmos

evolucionrios

baseiam no processo natural da evoluo das espcies.

que

se

Biologicamente,

toda espcie tem suas caractersticas definidas em seus cromossomos.

processo natural da evoluo pode ser sucintamente descrito atravs dos


seguintes passos:

Dois

indivduos

indivduo

cujos

de

uma

mesma

espcie

cruzam

sero

uma

cromossomos

cromossomos de seus antecessores.

gerando

combinao

de

aleatoriedade

na

forma

novo
dos

Este novo indivduo ter portanto

uma combinao das caractersticas de seus antecessores.


grau

um

em

que

as

Existe um

caractersticas

sero

combinadas.

Em uma quantidade pequena de cruzamentos, mutaes iro ocorrer,


criando caractersticas no novo indivduo que no existiam em seus
antecessores.

Novamente

existe

um

grau

de

aleatoriedade

na

determinao de quais cruzamentos ocorrer uma mutao e em qual


caracterstica ser afetada.

O novo indivduo, com suas caractersticas prprias, ser submetido


ao processo de viver.

Se for apto o suficiente, sobreviver at

poder tambm cruzar e passar adiante caractersticas suas, se no ir


perecer.

Dessa

forma

caractersticas

o
que

conjunto

de

dete rminam

indivduos
uma

maior

tende

aptido.

preservar
Alm

aquelas
disso

eventualmente novas caractersticas sero introduzidas na espcie atravs


da mutao e a espcie tende a se tornar cada vez mais apta.
18

A tcnica de Algoritmos Genticos produz modificaes na populao


atravs

da

simulao

dos

mecanismos

encontrados

na

natureza

na

evoluo dos seres vivos, ou seja, essencialmente cruzamento, mutao e


sobrevivncia do mais apto.

Computacionalmante os algoritmos genticos so uma abstrao desse


processo natural onde a melhoria da espcie tornando-se cada vez mais
apta, a busca de uma soluo tima para um problema, onde o
conjunto de caractersticas disponveis aos indivduos so o espao de
busca

do

problema

cada

indivduo

representa

uma

possvel

soluo

para o problema.

3.2 Al goritmos Swarm

Particle

Swarm

Optimization

uma

tcnica

de

computao

evolucionria proposta por Ebehart e Kennedy [7] baseada na observao


do comportamento social de um grupo de indivduos na natureza.

PSO trabalha com um grupo de posies de indivduos e produz


modificaes na posio desses indivduos baseado no comportamento de
indivduos

dentro

de

um

grupo

indivduo

baseado

na

sua

social.

experincia

comportamento

anterior

na

de

cada

experincia

daqueles outros indivduos com os quais se relaciona.


Similarmente aos algoritmos genticos o conjunto de indivduos tende
a preservar aquelas posies que determinam uma maior aptido e a
descartar as posies de menor aptido.
Computacionalmante os algoritmos swarm so uma abstrao desse
processo natural onde a procura pela posio mais apta, a busca de uma
soluo

tima

para

um

problema,

onde

conjunto

de

possveis

posies dos indivduos o espao de busca do problema, e cada posio


ocupada

por

um

indivduo

representa

problema.
19

uma

possvel

soluo

para

Como

mtodo

de

agrupamento,

como mtodo baseado em particionamento.

20

algoritmos

'swarm'

se

classificam

4.0 Conceitos Fundamentais empregados em


Algoritmos Swarm
Na natureza, quando um grupo de
pode -se

considerar

aves

que

ou cardume de peixes

procura

alimento,

cada

indivduo

orienta

sua

busca

por duas componentes, a primeira a sua prpria experincia

anterior em j conhecer locais onde costuma encontrar alimento e a outra


componente a informao obtida atravs de outros indivduos de seu
grupo social.

Quando um indivduo do grupo encontra alimento essa

informao difundida

para os demais, ou pelo menos para parte dos

demais, influindo em seus comportamentos de busca por alimento.

Dessa

forma o grupo como um todo tende a ir para o ponto onde maior a


quantidade de alimento.

Computacionalmente

implementao

de

algoritmos

PSO

para

otimizao de um problema pode ser feita atravs dos seguintes passos:

Gera-se

uma

populao

onde

posio

representa

uma

soluo possvel para o problema.

inicial

feito

de

problema.

Gera-se

forma

aleatria

tambm

um

em
vetor

um
de

espao

de

cada

indivduo

O posicionamento
de

busca

deslocamento

para

para

cada

indivduo, tambm de forma aleatria, de forma que todos os indivduos


se deslocam de suas posies iniciais.

A nova posio de cada indivduo avaliada por uma funo de


aptido.

Cada

indivduo

tem

seu

vetor

de

deslocamento

ajustado

em

funo da aptido de sua posio anterior e da aptido dos indivduos


com os quais mantm ligaes. Cada indivduo se desloca de acordo com
o seu novo vetor de deslocamento. E assim sucessivamente.

21

4.1 Representao vetorial do deslocamento dos indivduos

O deslocamento dos indivduos calculado a partir da sua posio


atual atravs de duas compone ntes vetoriais: cognitiva e social.
X (t +1) = X (t ) + 1 ( Xs X (t ) ) + 2 ( Xc X (t ) )
(4.1)
onde:

X posio
Xs melhor posio social
Xc melhor posio cognitiva
1 peso estocstico da melhor posio social
2 peso estocstico da melhor posio cognitiva

Xs
X(t+1)
1
X(t)

Xc
Figura 4.1

A direo de cada componente sempre dada pela melhor posio


cognitiva anterior e melhor posio social anterior.

A melhor posio

cognitiva aquela mxima, entre todas as posies j ocupadas pelo


elemento em

questo desde o incio do processo.

A melhor posio

social aquela mxima entre as posies ocupadas no instante presente


por aqueles elementos com os quais o elemento em questo tem ligao,
que funo da topologia adotada.
determinam

intensidade

das

Os pesos estocsticos (1 e 2)

componentes

social

cognitiva.

introduo dos pesos estocticos no modelo importante para que no


ocorra a tendncia de verificao de pontos discretos do domnio, alm
de facilitar a sada do elemento de um eventual mximo local.
22

Os

valores

de

mais

adequados

aplicaes uma distribuio uniforme u[0,2].


valores

u[0,1]

ou

menores,

regies

fora

da

para
Se

maioria

das

1 e 2 tiverem

regio

delimitada

pela

Se 1 e 2 tiverem valores

populao inicial no sero exploradas.

maiores que u[0,2] regies muito prximas melhor posio alcanada


dificilmente sero exploradas [7].
4.2 Funo objetivo

clculo

do

vetor

de

deslocamento

dos

indivduos

expresso

atravs da equao 4.1 apresenta os parmetros Xs - melhor posio


social e Xc

-melhor posio cognitiva.

Fica implcita a necessidade de

se avaliar se uma determinada posio (ou soluo) melhor ou pior que


uma outra.
de

uma

Isto feito atravs de uma funo objetivo.


funo

objetivo

fundamental

no

A determinao

desempenho

de

qualquer

minimizao

de

funes

algoritmo swarm.
Para

problemas

de

maximizao

ou

matemticas a obteno de uma funo objetivo simples pois a


prpria funo a ser maximizada ou miniminizada.

Na maximizao de

uma determinada funo cada posio (ou possvel soluo) submetida


funo e considerada tanto melhor quanto maior for o valor alcanado
pela funo.
Para problemas de agrupamento a obteno de uma funo objetivo
pode ser feita atravs da maximizao da distncia euclidiana entre os
centrides

dos

grupos.

Cada

posio

distribuio dos elementos em grupos.

representa

uma

determinada

Os centrides so calculados e

quanto maior for a distncia entre eles melhor a posio.

4.3 Tipos de topologia

Dependendo

de como feita a ligao entre os indivduos da

populao, ou seja, de que forma os indivduos se influenciam, existem


vrias topologias de implementao:

23

4.3.1 Em Estrela (tambm denominado: gbest)

Quando todos os indivduos so conectados entre si. Dessa forma o


indivduo

com

melhor

desempenho

influencia

todos

os

demais.

Esta

implementao conduz a uma convergncia mais rpida porm os riscos


de uma convergncia para um mximo local bem maior que em outras
implementaes.

Figura 4.2- Topologia em estrela

4.3.2 Em Roda

Um indivduo conectado a todos os demais, que por sua vez so


completamente
demais

isolados

denominado

entre

si.

indivduo

indivduo

focal.

conectado
desempenho

todos
do

os

melhor

indivduo sempre passado ao indivduo focal que por sua vez passa a
influenciar

todos

os

demais.

Todos
24

os

indivduos

se

influenciam

mutuamente como na topologia em estrela porm de forma mais lenta,


atravs de um filtro formado pelo indivduo focal.

Esta topologia reduz

um pouco a possibilidade de convergncia em um mximo local.

Figura 4.3 - Topologia em roda

4.3.3 Em Crculo (tambm denominado: lbest)

entre

Cada indivduo conectado apenas a dois vizinhos.

A influncia

indivduos

forosamente

distantes

muito

pequena

pois

passar por toda a cadeia de indivduos entre eles.


eficaz
daquele

em

no

que

convergir
encontrar

em
um

mximos
mximo

locais
local

precisa

Essa topologia mais

pois
no

indivduos
sero

distantes

imediatamente

influenciados por este mximo local e continuaro sua busca em outras


regies do espao de busca.

25

Figura 4.4 - Topologia em crculo

4.3.4 Randmica

Grupos de indivduos so conectados a outros grupos de forma


randmica.

26

Figura 4.5 - Topologia randmica


Outras topologias podem ser implementadas atravs da combinao
das topologias em crculo e em roda com a topologia randmica.

27

5.0 Estudo de Casos


Foram

implementados

vrios

casos

utilizando-se as topologias em

estrela e em crculo. A topologia em crculo apresentou sempre melhor


desempenho nos casos implementados.

A topologia em estrela converge

mais rapidamente porm no caso de funes que possuem vrios mximos


locais, a topologia em estrela converge com facilidade para um mximo
local e dificilmente consegue sair desse mximo.

A topologia em anel

consegue sair com mais facilidade dos mximos locais pois a influncia
de um elemento demora a se propagar at atingir todos os elementos do
anel.

5.1 Funo matemtica contnua com vrios mximos locais

Foi

escolhida

mximos locais.

uma

funo

matemtica

contnua

com

vrios

A existncia de mximos locais dificulta a obteno do

mximo da funo pois vrios elementos convergem erroneamente para


esses

mximos

locais.

Apesar

disso

desempenho

obtido

pela

implementao da topologia em crculo foi bastante satisfatria.


A representao utilizada foi

a representao binaria, ou seja, a

posio de um indivduo traduzida como um conjunto de bits.

Cada

posio um ponto em uma reta de valores numricos e cada ponto


possvel nesta reta tem sua representao binria.
Funo a ser otimizada:
y = sin (3 x)(0 .015 x 3 0 .2 x 2 + 0.7 x 1)
(5.1)

Domnio de busca: [0,10]

Mximo no domnio:

x = 5.78

y = 0.7378

28

Mximos locais no domnio:


x = 7.81

y = 0.5820

x = 3.72

y = 0.3863

x = 1.52

y = 0.3416

x = 9.22

y = 0.1205

A figura 5.1 apresenta o grfico da funo, onde so observados vrios


mximos locais.

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0

10

Figura 5.1 - Grfico de funo com vrios mximos locais

Foi efetuada uma impleme ntao em MatLab do algoritmo Swarm para a


otimizao da funo descrita, vrias topologias foram experimentadas e
verificou-se

que

topologia

mais

simples

que

satisfatriamente apresenta as seguintes caractersticas:


Topologia: em crculo
Nmero de elementos: 5
Nmero total de movimentos: 15
29

resolve

problema

Nmero de posies verificadas: 75


Dimenso do espao de busca: 10 bits, ou 1024 possveis posies
Foram realizadas vrias simulaes e os resultados foram sempre muito
similares,

no

havendo

muita

varincia

no

nmero

de

movimentaes

necessrias para que o mximo da funo seja encontrado.

A figura 5.2 apresenta o grfico da movimentao dos elementos em


busca do ponto no qual a funo atinge seu mximo, em uma simulao
que pode ser considerada tpica.
12

10

0
0

10

15

Nmero de movimentos

Figura 5.2 - Movimentao dos elementos

Na tabela 5.1 esto listados os valores percorridos pelos elementos at o


final da simulao:

30

Mov

Elemento

Elemento

Elemento

Elemento

Elemento

Vermelho

Azul

Verde

Anil

Preto

1.1000

8.4500

5.8900

8.1200

3.9000

1.3400

5.8900

6.2000

10.2300

4.7000

5.7500

5.8900

6.0500

2.1200

1.1300

5.7500

5.7700

6.0100

8.5600

7.3300

5.7700

5.7700

5.6000

1.7700

5.7700

5.7700

5.8400

5.7400

9.5400

5.7700

5.7700

5.7900

5.7400

5.7700

5.7700

5.7800

5.8000

5.5700

5.7700

5.7700

5.7800

5.7600

10

5.6500

5.7700

5.7700

5.7800

5.7900

11

5.8100

5.7700

5.7700

5.7800

5.7800

12

5.8000

5.7700

5.7800

5.7800

5.7800

13

5.7600

5.7700

5.7800

5.7800

5.7800

14

5.7900

5.7800

5.7800

5.7800

5.7800

15

5.7700

5.7800

5.7800

5.7800

5.7800

Tabela 5.1 - Valores percorridos pelos elementos


Pode-se constatar que bastaram 8 movimentaes para o elemento
anil

alcanar

mximo

principalmente

se

for

considerado

vrias

simulaes

utilizados.

Em

da

funo.

que
o

desempenho

apenas

mximo

5
foi

excelente

elementos
alcanado

foram
com

verificao de 75 posies dentre as 1024 possveis, ou seja, um pouco


mais de 7,5% do total das posies.
apresentada

verificando-se
simulao

mximo
40

foi

posies,

realizada

foi
ou
vrias

No caso particular da simulao

alcanado
seja,
vezes

considerado tpico.

31

na

menos
e

oitava
de

este

4%

movimentao,
do

resultado

total.
pode

Esta
ser

5.2 Padro de bits

Muitos

problemas

de

agrupamento

elementos de um grupo em dois.

recaem

em

subdividir

os

Nesses casos a representao binria

bastante conveniente e a otimizao feita buscando-se o padro de bits


para o qual uma funo objetivo alcana um mximo.

A implementao apresentada neste caso, que tambm foi realizada


em MatLab, tem como resultado da funo objetivo o nmero de bits
iguais a um determinado padro de bits escolhido aleatoriamente.

Padro de bits [1 1 1 1 1 0 0 0 0 0]
Vrias
mais

topologias
simples

que

foram

experimentadas

resolve

problema

verificou-se que a topologia


satisfatriamente

apresenta

as

seguintes caractersticas:

Topologia utilizada: em crculo

Nmero de elementos: 16
Nmero de movimentos: 15
Dimenso do espao de busca: 10 bits, ou 1024 possveis posies

Foram realizadas vrias simulaes e os resultados foram razoavelmente


similares

em

relao

varincia

do

nmero

de

movimentaes

necessrias para que o padro de bits seja encontrado.

A tabela 5.2 apresenta o exemplo de um resultado tpico da simulao:

32

Movi-

Nmero

Melhor padro obtido

mento

de acertos

10

11

12

10

13

10

14

10

15

10

Tabela 5.2 - Melhor padro obtido por movimentao


Em 100 simula es o padro de bits correto foi obtido com o nmeros de
movimentos indicados na tabela 5.3:

33

12

10

10

13

12

13

12

13

10

12

15

12

12

10

12

15

10

12

13

11

11

10

10

12

11

12

12

11

10

Tabela 5.3 - Relao do nmero de movimentos at o padro ser obtido

Observa-se que foi necessria uma mdia de 7,69 movimentos para se


obter o padro correto.

figura

5.3

apresenta

histograma

do

nmero

de

movimentos

necessrios para se obter o padro de bits com nmero mximo de


acertos.

34

18

16

14

12

10

0
0

10

15

Figura 5.3 - Histograma do nmero de movimentos necessrios


Observa-se

que

em

mdia,

aproximadamente

12%

do

espao de

busca foi verificado, o que significa uma piora em relao ao estudo de


caso anterior.

Isso pode ser explicado pelo fato de a representao

utilizada no ser a mais adequada para o problema.

Representar as

posies como pontos de uma reta torna as operaes matemticas da


cinemtica da simulao bastante simples porm introduz uma distoro
no

modelo

de

movimentao

de

indivduos

estabelecido

pelo

algoritmo

swarm.

Por

exemplo:

diferena

matemtica

entre

as

seguintes

posies

mnima porm representam posies bem distantes em relao ao nmero


de bits iguais ao padro escolhido:

35

[0 0 0 0 0 1 1 1 1 1] - posies corretas: 0
[0 0 0 0 1 0 0 0 0 0] - posies corretas: 6
Embora

resultado

alcanado

possa

ser

considerado

satisfatrio

para problemas com domnio na ordem de grandeza de alguns bits,


importante se buscar operadores mais adequados representao binria
de posies para problemas que podem ter domnio na ordem de grandeza
de centenas de bits, que o caso de muitos problemas prticos de
agrupamento.

Novos operadores foram desenvolvidos para os prximos

estudos de casos melhorando o desempenho do algoritmo swarm.

5.3 Conjunto de dados Ruspini

O conjunto de dados 'Ruspini' formado por pontos em um plano e


so linearmente separveis em quatro grupos.
bastante

utilizado

para

se

verificar

um conjunto de dados

desempenho

de

algoritmos

agrupamento. A tabela 5.4 representa o conjunto dos dados Ruspini.

36

de

Conjunto Ruspini
X

53

36

72

52

152

111

126

63

28

147

55

155

115

117

10

59

32

149

54

124

117

115

77

35

153

60

136

70

13

49

33

154

63

139

77

12

13

69

38

151

86

132

83

21

12

88

41

150

85

115

61

15

15

75

38

145

85

96

69

15

18

61

38

143

78

94

78

16

19

65

32

143

74

96

66

18

22

74

34

141

97

122

58

13

27

72

44

156

98

116

64

20

28

76

44

149

98

124

69

21

24

58

44

143

99

119

66

23

27

55

46

142

99

128

61

25

28

60

47

149

101

115

76

27

30

52

49

152

108

111

72

31

31

60

50

142

110

111

64

30

32

61

53

144

108

116

Tabela 5.4 - Conjunto Ruspini

A figura 5.4 apresenta o conjunto de dados 'Ruspini' plotados em um


plano:

37

160

140

120

100

80

60

40

20

0
0

20

40

60

80

100

120

Figura 5.4 - Conjunto de dados Ruspini

O algoritmo swarm aplicado no agrupamento dos dados 'Ruspini'


foi

aplicado

posteriormente

separando
separando

os

dados

cada

inicialmente

subgrupo

em

em

mais

dois
dois,

subgrupos
resultando

e
um

total de quatro grupos.

A representao de posies adotadas foi a representao binria


onde cada elemento do conjunto a ser separado representado por um bit
em um vetor de dimenso igual ao nmero total de elementos.

Cada

soluo possvel representada por um vetor de 'zeros' e 'uns' formando


38

assim dois grupos, um com os elementos representados por 'zeros' no


vetor e outro com os elementos representados por 'uns' no vetor.

funo objetivo recebe o vetor soluo e realiza o teste de aptido nos


atributos dos elementos.

Foram

desenvolvidos

dois

operadores

para

implementarem

cinemtica

das posies:

movebin - Dadas duas posies com representao binria, sendo uma


considerada referncia e a outra a mvel, este operador calcula a
diferena entre as posies em um nmero n de bits diferentes e
calcula

uma

original.

nova
O

posio

nmero

mvel

de

com

posies

aleatoriamente entre zero e 2n.

posies

diferentes

k,

diferentes

da

escolhido

Se k for menor ou igual a n, apenas

bits diferentes so modificados, se k for maior que n, todos os n bits


diferentes so modificados mais os (k-n) bits iguais so modificados.
Dessa forma o operador movebin movimenta um elemento da posio
mvel em direo posio de referncia podendo parar antes de
atingir a posio de referncia, exatamente na posio de referncia,
ou passar da posio de referncia um distncia no mximo igual ao
afastamento inicial.

Esse operador utilizado para se calcular as

parcelas (Xc-X), (posio cognitiva) e (Xs-X), (posio social) da


equao da cinemtica do algoritmo swarm (equao 4.1).

mergebin - Dadas as duas parcelas (Xc-X), e (Xs-X), este operador


fornece uma nova posio que a combinao das parcelas cognitiva
e

social.

Os

bits

iguais

so

mantidos

os

bits

escolhidos aleatoriamente de uma ou de outra parcela.

diferentes

so

O resultado

uma posio intermediria entre as duas outras.

importante que seja ressaltado que a criao desses operadores no


apenas

tornou

algoritmo

mais

eficiente,

mas

tambm

permitiu

que

conjuntos maiores de dados pudessem ser trabalhados de forma direta

39

pelas

linguagem

de

programao

disponveis.

Nos

estudos

de

casos

anteriores, onde esses operadores no for am utilizados, um espao de


busca de 10 bits significava operaes matemticas envolvendo nmeros
at 2 10 = 1024.

Para problemas com espao de busca maiores, por

exemplo 150 bits, que ser visto no estudo de caso 5.4, significaria
operaes matemticas envolvendo nmeros at 2150 = 1,42 X 1045 , que
no

so

realizveis

diretamente,

ou

sem

particionar

operao,

pela

linguagem de programao empregada.


A

funo

objetivo

utilizada

foi

maximizao

da

distncia

euclidiana

entre os centrides dos grupos.

separao

inicial

em

dois

subgrupos

foi

experimentada

com

vrias

topologias e a mais simples que conseguiu separar os dados sem erros,


tem as seguintes caractersticas:

Topologia utilizada: em crculo


Nmero de elementos: 20
Nmero de movimentos: 150
Nmero total de posies verificadas: 3000
Dimenso do espao de busca: 75 bits, ou 3.77 X 10 22 possveis posies

40

160

140

120

100

80

60

40

20

0
0

20

40

60

80

100

120

Figura 5.5 - Separao inicial em 2 sub-grupos


Com a verificao de uma posio a cada 6,28 X 10 18, o algoritmo swarm
conseguiu 100% de acerto.
As

separaes

subsequentes

foram

efetuadas

com

topologia

caractersticas descritas a seguir:

Topologia utilizada: em crculo


Nmero de elementos: 20
Nmero de movimentos: 150
Nmero total de posies verificadas: 3000
Dimenso do espao de busca:

35 bits, ou 3,44X10 10 possveis posies;


40 bits, ou 1,10X10 12 possveis posies.

41

de

160

140

120

100

80

60

40

20

0
0

20

40

60

80

100

120

Figura 5.6
Com um total de 3 divises e verificando apenas uma quantidade da
ordem de grandeza de 10 -10 do total de posies, o algoritmo swarm
conseguiu

100%

Ruspini.

Esse

de

acerto
um

no

resultado

agrupamento
tpico

para

dos
a

dados
topologia,

do

conjunto

nmero

de

elementos e nmero de movimentaes utilizados.


Os mesmos dados submetidos ao algoritmo K-means [4] foram agrupados
com ndice de acerto de 55%.

42

5.4 Conjunto de dados caractersticos da flores Iris

O conjunto de dados caractersticos de flores Iris composto por um


total de 150 amostras com as seguintes dimenses das flores:
- largura da ptala;
- comprimento da ptala;
- largura da spala;
- comprimento da spala.
As flores podem ser classificadas em 3 grupos:
- Setosa;
- Versicolour;
- Virginica.
A classe Setosa linearmente separvel das demais.
Versicolour

Virginica

apresentam

alguma

sobreposio

As classes
em

seus

atributos, o que faz com que no sejam linearmente separveis uma da


outra. O anexo 1 apresenta os dados do conjunto de flores Iris.

O
conjunto

algoritmo
Iris

foi

swarm
aplicado

aplicado

no

separando

os

agrupamento
dados

dos

inic ialmente

dados
em

do
dois

subgrupos e posteriormente separando o maior subgrupo em mais dois,


resultando um total de trs grupos.
A representao de posies adotadas foi a representao binria,
assim como no estudo de caso 5.3. Os mesmos operadores 'movebin' e
'mergebin' tambm foram utilizados na implementao da cinemtica das
posies para o agrupamento das flores Iris.
Assim como no estudo de caso 5.3 a funo objetivo utilizada foi a
maximizao da distncia euclidiana entre os centrides dos grupos.
A ordem em que os dados foram submetidos ao algoritmo swarm
foi a mesma ordem em que aparecem no anexo 1, ou seja, os 50 primeiros

43

elementos so os da Setosa, os 50 seguintes so os da Versicolour e os


50 finais so os da Virginica.
Para a separao inicial, foram experimentadas vrias topologias e
a

mais

simples

que

conseguiu

separar

sem

erros

tem

ou

1.43

as

seguintes

1045

possveis

caractersticas:

Topologia utilizada: em crculo


Nmero de elementos: 8
Nmero de movimentos: 500
Nmero total de posies verificadas: 4000
Dimenso

do

espao

de

busca:

150

bits,

posies
A separao obteve 100% de acerto na maioria das vezes em que a
simulao foi feita isolando o grupo Setosa (1) dos outros dois.

Separao
erro,

do

grupo

topologia

Versicoulour/Virginica

mais

simples

que

apresentou

conseguiu

sempre

algum

melhor

resultado

10 30

possveis

alcanado tem as caractersticas apresentadas a seguir:


Topologia utilizada: em crculo
Nmero de elementos: 8
Nmero de movimentos: 2000
Nmero total de posies verificadas: 16000
Dimenso

do

espao

de

busca:

100

bits,

ou

1.26

posies
A separao obteve 94% de acerto na maioria das vezes em que a
simulao foi feita. Os mesmos dados submetidos ao algoritmo K-means
[4] foram agrupados com ndice de acerto de 83,3%.
tpico

para

movimentaes

topologia,
utilizados.

melhoraram o desempenho.

nmero

Mais

de

elementos

Esse um resultado

elementos
ou

mais

nmero

movimentos

de
no

Os elementos 71 e 78 foram agrupados como


44

Virginica e os elementos 107, 120, 134 e 135 foram agrupados como


Versicoulour.
Uma

anlise

cuidadosa

dos

atributos

desses

elementos,

apresentados na tabela 5.4, mostra que os elementos 71 e 78, da classe


Virginica,

possuem

atributos

significativamente

dos atributos da classe Versicolour.

mais

prximos

mdia

Tambm os elementos 107, 120, 134

e 135, da classe Versicolour, possuem atributos significativamente mais


prximos

mdia

dos

atributos

da

classe

Virginica.

Os

atributos

sombreados so aqueles que se aproximam mais da mdia da outra classe


do que da mdia de sua prpria classe.

Isto faz com que o agrupamento

desse conjunto de dados baseado nesses quatro atributos sem erros no


seja

possvel

pois

superposio

em

uma

parcela

pequena

dos

elementos.

Elemento

1 . atributo

2 . atributo

3 . atributo

4 . atributo

71 (Vers)

0.7468

0.7273

0.6957

0.72

78 (Vers)

0.8481

0.6818

0.7246

0.68

107 (Virg)

0.6203

0.5682

0.6522

0.68

120 (Virg)

0.7595

0.5000

0.7246

0.60

134 (Virg)

0.7975

0.6364

0.7391

0.60

135 (Virg)

0.7722

0.5909

0.8116

0.56

mdia Ver s

0.7514

0.6295

0.6174

0.5304

mdia Virg

0.8339

0.6759

0.8046

0.8104

tabela 5.4 - Elementos agrupados incorretamente

O desempenho do algoritmo swarm foi portanto o melhor que se


poderia esperar com os atributos disponveis.

Pode-se observar que a diferena entre as mdias muito pequena


para o primeiro e segundo atributos, se comparada diferena entre as
mdias para o terceiro e quarto atributo.

Este fato uma indicao de

que existe mais sobreposio nos dois primeiros atributos do que nos
dois ltimos.
do

agrupamento

Isto verdadeiro e foi comprovado atravs da realizao


com

mesmo

algoritmo

porm

utilizando

apenas

terceiro e quarto atributos no clculo da distncia euclidiana na funo


45

objetivo.

Os resultados foram praticamente os mesmos , sendo a nica

diferena o elemento 78 que passou a ser agrupado corretamente.

incluso

da

de

atributos

no

relevantes

ao

agrupamento

no

clculo

funo objetivo no deteriorou o desempenho do algoritmo.

Como o timo desempenho obtido pelo algoritmo de swarm foi


conseguido

com

os

dados

submetidos

ao

algoritmo

ordenadamente,

os

mesmos foram desordenados e submetidos ao algoritmo de swarm a fim


de

se

verificar

aleatria.

desempenho

do

mesmo

com

os

dados

em

ordem

Foi utilizada a mesma topologia, mesmo nmero de elementos

e mesmo nmero de movimentos.

A tabela 5.5 apresenta a ordem em que

os elementos foram submetidos ao algoritmo swarm.

54

55

104

105

10

63

64

65

66

14

15

16

17

116

117

118

21

22

23

67

68

69

24

25

26

27

28

129

130

131

132

32

33

78

79

80

81

34

35

36

40

41

42

47

48

49

50

51

52

53

109

110

111

56

11

12

13

60

61

62

123

124

125

126

70

71

29

30

31

75

76

77

82

83

84

85

43

44

45

46

86

87

88

138

139

140

141

93

94

95

144

145

146

96

97

100

101

102

103

57

58

59

106

107

108

18

19

20

112

113

114

115

72

73

74

119

120

121

122

37

38

39

127

128

133

134

89

90

91

92

135

136

137

142

143

98

99

147

148

149

150

Tabela 5.5 - Ordem de apresentao dos elementos


O resultado das simulaes foi exatamente o mesmo obtido com os
dados ordenados demonstrando que o algoritmo robusto em relao
ordem de apresentao dos dados.

A no dependncia do resultado em

46

relao ordenao dos dados uma caracterstica de projeto deste


algoritmo.

5.5 Conjunto de dados de doena cardaca

conjunto de dados de doenas cardacas composto por 270

elementos com 13 atributos, extrados de um conjunto maior com 75, no


qual existem 150 elementos com presena de doena cardaca e 120
elementos sem doena cardaca.

Os atributos so do tipo idade, sexo,

presso, nvel de colesterol, nvel de glicose, tipo de eletrocardiograma,


etc e mais outros, mais especficos rea

de cardiologia, sendo que 6

atributos so numricos, 1 ordinal, 2 so binrios e 3 so nominais.


Assim como nos estudos de caso 5.3 e 5.4, a representao binria
foi utilizada sendo cada indivduo representado por um bit em um vetor
de dimenso igual ao nmero de elementos e cada soluo representada
por um padro de 'zeros' e 'uns' identificando dois possveis grupos.
Similarmente aos dois casos j mencionados, dada uma soluo, a funo
objetivo

realiza

teste

nos

atributos

dos

conjuntos

formados

pelo

agrupamento representado pelo vetor.

O algoritmo swarm aplicado no agrupamento dos dados do


conjunto foi aplicado separando os da dos em dois grupos sendo um com
elementos
portadores

portadores
de

de

doena

doena

cardaca

cardacas.

As

outro

seguintes

com

elementos

caractersticas

no

foram

utilizadas no algoritmo:
Topologia utilizada: em crculo
Nmero de elementos: 8
Nmero de movimentos: 2000
Nmero total de posies verificadas: 16000
Dimenso

do

espao

de

busca:

270

posies.
47

bits,

ou

1.89

1081

possveis

Varias simulaes foram realizadas e os resultados so mostrados na


tabela 5.6.

DOENA
AGRUP.

NO PORTADOR
CORRETO
INCORRETO
142
8
142
8
141
9
144
6
145
5
144
6

PORTADOR
CORRETO
INCORRETO
57
63
55
65
60
60
60
60
57
63
66
64

Tabela 5.6 - Presena ou ausncia de doena cardaca


Verificou-se um ndice de erro entre 24,4% e 27,0%.
mais

Simulaes com

elementos ou mais movimentaes no apresentaram melhoria no

desempenho.

Os mesmos dados submetidos ao algoritmo K-means [4] foram agrupados


com erro de 23,7%.

Novamente o algoritmo swarm mostrou-se bastante

eficiente para um conjunto de dados considerado bastante difcil de ser


agrupado.

48

6.0 Concluso
Este trabalho rene duas reas distintas de conhecimento que so o
problema

do

agrupamento

linha

de

denominada 'Particle Swarm Optimization'.

computao

evolucionria

O problema de agrupamento

em geral um problema bastante difcil de ser resolvido.

Pequenos

percentuais de erros so tolerveis ou aceitveis pois o agrupamento em


geral no requer a preciso da classificao.

A utilizao do algoritmo

de 'Particle Swarm Optimization', como um mtodo de pa rticionamento,


para lidar com o problema de agrupamento mostrou ser bastante eficaz.

A simplicidade da modelagem e a facilidade de implementao de


algoritmos swarm, certamente um aspecto bastante positivo deste tipo
de abordagem para resoluo de problemas.

Com a realizao de verificaes em um nmero de solues vrias


ordens de grandeza abaixo do nmero total de solues possveis, o
algoritmo

Swarm

demonstrou

que

extremamente

eficiente

como

processo de orientao da busca da soluo.

Evidentemente

os

parmetros

de

implementao

muito importantes para o sucesso do mtodo.

do

problema

so

Pode-se destacar dois

parmetros de fundamental importncia: a funo objetivo e a topologia


utilizada.

A funo objetivo talvez o elemento mais importante


sucesso do algoritmo.
modelado

precisamente

para o

Qualquer problema de otimizao que possa ser


atravs

de

uma

funo

objetivo

ser

eficientemente resolvido pelo algoritmo de Particle Swarm Optimization.

topologia

empregada

tambm

teve

obteno de bons resultados nas simulaes.

49

influncia

preponderante

na

A topologia em anel, mais

lenta na propagao dos melhores resultados entre os elementos, mostrou


que

essa

elemento

lentido
busque

na

propagao

solues

dos

alternativas

resultados

permita

permite

que

que

cada

problema

dos

mximos locais seja superado com certa facilidade.

Em

todos

os

estudos

de

casos

resultado que se poderia esperar.


no

houve

elementos

100%
que

de

acerto

foram

agrupamento,

erroneamente

ter

sido

agrupados

detalhada

de

seus

atributos

algoritmo

obteve

melhor

Mesmo no caso das flores Iris, onde

no

poderiam

de

foi

agrupados
forma

mostraram

considerados tpicos do outro grupo.

demonstrado que os
pelo

diferente
que

os

algoritmo,

pois

uma

mesmos

no

anlise

podem

ser

O mesmo vlido em relao ao

caso dos dados de presena ou ausncia de doena cardaca.


Os resultados apresentados nos estudos de casos so tpicos, no
so os melhores obtidos em uma determinada simulao.

importante se destacar a criao dos dois operadores: movebin e


megrebin

para

representados

como

implementao
padro

de

da

bits.

cinemtica
Estes

dos

operadores

elementos
melhoraram

substancialmente o desempenho do algoritmo.

Pode-se concluir tambm, atravs dos estudos de casos realizados


que a inclus o de atributos no relevantes no processo de agrupamento
no

degrada

eficincia

do

algoritmo.

Evidentemente

carga

computacional aumentada.

O nmero de possveis solues testadas o produto do nmero de


elementos

da

topologia

pelo

nmero

de

movimentaes

realizadas.

Observou-se que em geral, para melhorar o desempenho do algoritmo


mais importante que se aumente o nmero de movimentaes e no
necessariamente o nmero de elementos na topologia.

50

O algoritmo mostrou tambm ser insensvel ordem em que os


elementos so apresentados, o que uma caracterstica desejvel em
qualquer mtodo de agrupamento.

Uma caracterstica desejvel a um bom mtodo de agrupamento


no foi apresentada pelo algoritmo em nenhum dos estudos de casos,
seria desejvel que um bom mtodo identificasse o nmero de grupos
existentes,

porm

em

mostrou essa capacidade.

nenhum

dos

casos

algoritmo

implementado

Esse um desafio aberto pesquisa: resolver

o problema do agrupamento com a eficincia demonstrada pelo algoritmo


Swarm identificando tambm o nmero de grupos do conjunto.

51

7. Referncias Bibliogrficas
[1]

Di

CARLANTONIO,

L.

M.,

Novas

Metodologias

para

Clusterizao de Dados, 2001, Tese de Mestrado, COPPE/UFRJ.

[2]

FALKENAUER, E., Genetic Algorithms and Grouping Pr oblems ,


England, John Wiley & Sons, 1998.

[3]

FIREBAUGH, M. W., Artificial Intelligence A Knowledge -Based


Approach, Boston, PWS-Kent Publishing Company, 1988.

[4]

HAN, J., KAMBER, M., Data Mining Concepts and Techniques,


United Kingdom, Academic Press, 2001.

[5]

HRUSCHKA, E. R., EBECKEN, N. F. F., A Genetic algorithm for


cluster

analysis,

Submitted

to

IEEE

Transactions

on

Evolutionary

Computation, January.
[6]

MONMARCH, N., Research Directions on Data Clustering with


Artificial Ants, 1999, Submitted to the American Association for
Artificial Inteligence Workshop, June.

[7]

KENNEDY,

J.,

EBERHART,

R.,

Particle

Swarm

Optimization,

Proceedings IEEE, International Conference on Neural Networks.


[8]

LACERDA, E. G. M., CARVALHO, A. C. P. L. F. de, 1999,


Introduo

aos

Algoritmos

Genticos,

Anais

do

XIX

Congresso

Nacional da Sociedade Brasileira de Computao, Vol. II, pp. 51126, Rio de Janeiro, Brasil, Julho.

[9]

ROWENA,

M.

C.,

Clustering

with

Genetic

Thesis, University of Western Australia, 1998.

52

Algorithms,

MSc.

Anexo 1 - Dados do conjunto Iris


1o atributo 2 o
0,6456
0,6203
0,5949
0,5823
0,6329
0,6835
0,5823
0,6329
0,5570
0,6203
0,6835
0,6076
0,6076
0,5443
0,7342
0,7215
0,6835
0,6456
0,7215
0,6456
0,6835
0,6456
0,5823
0,6456
0,6076
0,6329
0,6329
0,6582
0,6582
0,5949
0,6076
0,6835
0,6582
0,6962
0,6203
0,6329
0,6962
0,6203
0,5570
0,6456
0,6329
0,5696
0,5570
0,6329
0,6456
0,6076
0,6456
0,5823
0,6709
0,6329
0,8861

atributo 3 atributo 4 atributo Tipo Elemento


0,7955
0,2029
0,08
1
1
0,6818
0,2029
0,08
1
2
0,7273
0,1884
0,08
1
3
0,7045
0,2174
0,08
1
4
0,8182
0,2029
0,08
1
5
0,8864
0,2464
0,16
1
6
0,7727
0,2029
0,12
1
7
0,7727
0,2174
0,08
1
8
0,6591
0,2029
0,08
1
9
0,7045
0,2174
0,04
1
10
0,8409
0,2174
0,08
1
11
0,7727
0,2319
0,08
1
12
0,6818
0,2029
0,04
1
13
0,6818
0,1594
0,04
1
14
0,9091
0,1739
0,08
1
15
1,0000
0,2174
0,16
1
16
0,8864
0,1884
0,16
1
17
0,7955
0,2029
0,12
1
18
0,8636
0,2464
0,12
1
19
0,8636
0,2174
0,12
1
20
0,7727
0,2464
0,08
1
21
0,8409
0,2174
0,16
1
22
0,8182
0,1449
0,08
1
23
0,7500
0,2464
0,20
1
24
0,7727
0,2754
0,08
1
25
0,6818
0,2319
0,08
1
26
0,7727
0,2319
0,16
1
27
0,7955
0,2174
0,08
1
28
0,7727
0,2029
0,08
1
29
0,7273
0,2319
0,08
1
30
0,7045
0,2319
0,08
1
31
0,7727
0,2174
0,16
1
32
0,9318
0,2174
0,04
1
33
0,9545
0,2029
0,08
1
34
0,7045
0,2174
0,04
1
35
0,7273
0,1739
0,08
1
36
0,7955
0,1884
0,08
1
37
0,7045
0,2174
0,04
1
38
0,6818
0,1884
0,08
1
39
0,7727
0,2174
0,08
1
40
0,7955
0,1884
0,12
1
41
0,5227
0,1884
0,12
1
42
0,7273
0,1884
0,08
1
43
0,7955
0,2319
0,24
1
44
0,8636
0,2754
0,16
1
45
0,6818
0,2029
0,12
1
46
0,8636
0,2319
0,08
1
47
0,7273
0,2029
0,08
1
48
0,8409
0,2174
0,08
1
49
0,7500
0,2029
0,08
1
50
0,7273
0,6812
0,56
2
51

53

0,8101
0,8734
0,6962
0,8228
0,7215
0,7975
0,6203
0,8354
0,6582
0,6329
0,7468
0,7595
0,7722
0,7089
0,8481
0,7089
0,7342
0,7848
0,7089
0,7468
0,7722
0,7975
0,7722
0,8101
0,8354
0,8608
0,8481
0,7595
0,7215
0,6962
0,6962
0,7342
0,7595
0,6835
0,7595
0,8481
0,7975
0,7089
0,6962
0,6962
0,7722
0,7342
0,6329
0,7089
0,7215
0,7215
0,7848
0,6456
0,7215
0,7975
0,7342
0,8987
0,7975
0,8228
0,9620
0,6203
0,9241
0,8481

0,7273
0,7045
0,5227
0,6364
0,6364
0,7500
0,5455
0,6591
0,6136
0,4545
0,6818
0,5000
0,6591
0,6591
0,7045
0,6818
0,6136
0,5000
0,5682
0,7273
0,6364
0,5682
0,6364
0,6591
0,6818
0,6364
0,6818
0,6591
0,5909
0,5455
0,5455
0,6136
0,6136
0,6818
0,7727
0,7045
0,5227
0,6818
0,5682
0,5909
0,6818
0,5909
0,5227
0,6136
0,6818
0,6591
0,6591
0,5682
0,6364
0,7500
0,6136
0,6818
0,6591
0,6818
0,6818
0,5682
0,6591
0,5682

0,6522
0,7101
0,5797
0,6667
0,6522
0,6812
0,4783
0,6667
0,5652
0,5072
0,6087
0,5797
0,6812
0,5217
0,6377
0,6522
0,5942
0,6522
0,5652
0,6957
0,5797
0,7101
0,6812
0,6232
0,6377
0,6957
0,7246
0,6522
0,5072
0,5507
0,5362
0,5652
0,7391
0,6522
0,6522
0,6812
0,6377
0,5942
0,5797
0,6377
0,6667
0,5797
0,4783
0,6087
0,6087
0,6087
0,6232
0,4348
0,5942
0,8696
0,7391
0,8551
0,8116
0,8406
0,9565
0,6522
0,9130
0,8406

0,60
0,60
0,52
0,60
0,52
0,64
0,40
0,52
0,56
0,40
0,60
0,40
0,56
0,52
0,56
0,60
0,40
0,60
0,44
0,72
0,52
0,60
0,48
0,52
0,56
0,56
0,68
0,60
0,40
0,44
0,40
0,48
0,64
0,60
0,64
0,60
0,52
0,52
0,52
0,48
0,56
0,48
0,40
0,52
0,48
0,52
0,52
0,44
0,52
1,00
0,76
0,84
0,72
0,88
0,84
0,68
0,72
0,72

54

2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
3

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

0,9114
0,8228
0,8101
0,8608
0,7215
0,7342
0,8101
0,8228
0,9747
0,9747
0,7595
0,8734
0,7089
0,9747
0,7975
0,8481
0,9114
0,7848
0,7722
0,8101
0,9114
0,9367
1,0000
0,8101
0,7975
0,7722
0,9747
0,7975
0,8101
0,7595
0,8734
0,8481
0,8734
0,7342
0,8608
0,8481
0,8481
0,7975
0,8228
0,7848
0,7468

0,8182
0,7273
0,6136
0,6818
0,5682
0,6364
0,7273
0,6818
0,8636
0,5909
0,5000
0,7273
0,6364
0,6364
0,6136
0,7500
0,7273
0,6364
0,6818
0,6364
0,6818
0,6364
0,8636
0,6364
0,6364
0,5909
0,6818
0,7727
0,7045
0,6818
0,7045
0,7045
0,7045
0,6136
0,7273
0,7500
0,6818
0,5682
0,6818
0,7727
0,6818

0,8841
0,7391
0,7681
0,7971
0,7246
0,7391
0,7681
0,7971
0,9710
1,0000
0,7246
0,8261
0,7101
0,9710
0,7101
0,8261
0,8696
0,6957
0,7101
0,8116
0,8406
0,8841
0,9275
0,8116
0,7391
0,8116
0,8841
0,8116
0,7971
0,6957
0,7826
0,8116
0,7391
0,7391
0,8551
0,8261
0,7536
0,7246
0,7536
0,7826
0,7391

1,00
0,80
0,76
0,84
0,80
0,96
0,92
0,72
0,88
0,92
0,60
0,92
0,80
0,80
0,72
0,84
0,72
0,72
0,72
0,84
0,64
0,76
0,80
0,88
0,60
0,56
0,92
0,96
0,72
0,72
0,84
0,96
0,92
0,76
0,92
1,00
0,92
0,76
0,80
0,92
0,72

55

3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3

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

Anexo 2 - Pseudo-cdigo da implementao do


algoritmo
Funo: pso1
- Recebe:

tamanho da populao
nmero de movimentos
quantidade de elementos a serem agrupados
funo objetivo a ser utilizada
arquivo de atributos dos elementos a serem agrupados

- Gera solues aleatrias


- Faz at o nmero de movimentos ser atingido
- Calcula aptido de cada elemento na posio atual atravs da
funo objetivo.
- Guarda melhor posio.
- Obtm componente cognitiva de cada elemento.
- Obtm componente social de cada elemento.
- Movimenta cada elemento em funo das componentes cognitiva
e social, aplica fatores de aleatoriedade obtendo novas posies.
- Fornece melhor soluo obtida.
Funo objetivo
- Recebe o vetor de agrupamento.
- Separa os elementos nos dois grupos dados pelo vetor.
- Calcula o centride de cada grupo em um espao de dimenso igual
ao nmero de atributos.
- Calcula a distncia Euclidiana entre os centrides.
- Fornece a distncia calculada.

Os demais programas apenas preparam os dados a serem passados


funo pso1, de acordo com os dados a serem agrupados e formatam os
resultados.

56

Anexo 3 - Programas fonte


Caso: Iris
Programas:

psoiris.m
pso1.m
fobjiris.m
movebin.m
mergebin.m

Programa: psoiris.m

% Agrupa arquivo iris.txt

clear all
clc
disp(' ')
disp('Este programa utiliza Particle swarm optimization para resolver')
disp('o problema de agrupamento de dados.')
disp(' ')
disp('O arquivo de dados utilizado ser o das flores Iris,')
disp('o qual possui 3 classes de dados a serem agrupados.')
disp(' ')
disp('->Pressione qualquer tecla para continuar')
pause
clc

disp(' ')
disp('Inicialmente o progrma l o arquivo de dados iris.txt.')
disp('Este arquivo possui 150 elementos, sendo 50 em cada classe.')
disp(' ')
disp('->Pressione qualquer tecla para continuar')
%pause
clc

57

load iris.txt;
grupo=iris;
[omega,quant]=size(grupo);

disp(' ')
disp('Em seguida a funo ps o chamada com a seguinte ')
disp('Funo

objetivo:

fobjiris.m

Maximiza

distncia

centrides.')
disp(' ')
disp('->Pressione qualquer tecla para continuar e aguarde')
pause
clc
pop=8;
mov=500;

melhor1=pso1(pop,mov,omega,'fobjiris',grupo,50);
disp(' ')
disp('->Pressione qualquer tecla para continuar')
pause
clc
disp(' ')
disp('Em seguida o arquivo de dados ser dividido em outros dois,')
disp('de acordo com o melhor indivduo do processo evolutivo')
disp(' ')
disp('->Pressione qualquer tecla para continuar')
pause
clc

i1=0;
i2=0;
for i=1:omega
if melhor1(i)==0
i1=i1+1;

58

entre

os

gr1(i1,:)=grupo(i,:);
else
i2=i2+1;
gr2(i2,:)=grupo(i,:);
end
end

disp(' ')
disp('O arquivo menor uma das classes j agrupada.')
disp('O ar quivo maior ser submetido ao mesmo processo para que
seja')
disp('feito o agrupamento das outras duas.')
disp(' ')
disp('->Pressione qualquer tecla para continuar')
pause
clc

[l1,c1]=size(gr1);
[l2,c2]=size(gr2);
clear grupo;

if l1 > l2
grupo=gr1;
quant=l1;
grupo_a=gr2;
quant_a=l2;
else
grupo=gr2;
quant=l2;
grupo_a=gr1;
quant_a=l1;
end

disp(' ')
disp('A mesma funo pso novamente chamada')
disp(' ')

59

disp('->Pressione qualquer tecla para continuar e aguarde')


pause
clc

pop=8;
mov=2000;

melhor2=pso1(pop,mov,quant,'fobjiris',grupo,100);
disp(' ')
disp('->Pressione qualquer tecla para continuar')
pause
clc
i1=0;
i2=0;
for i=1:quant
if melhor2(i)==0
i1=i1+1;
gr3(i1,:)=grupo(i,:);
else
i2=i2+1;
gr4(i 2,:)=grupo(i,:);
end
end
grupo_b=gr3;
quant_b=i1;
grupo_c=gr4;
quant_c=i2;
disp(' ')
disp('Salva o arquivo resultado.txt:')

fid = fopen('resultado.txt','w');
for (i=1:quant_a)
fprintf(fid,'%6.4f %6.4f %6.4f %4.2f %1d %3d\r\n',grupo_a(i,:));

60

end;
for (i=1:quant_b)
fprintf(fid,'%6.4f %6.4f %6.4f %4.2f %1d %3d\r\n',grupo_b(i,:));
end;
for (i=1:quant_c)
fprintf(fid,'%6.4f %6.4f %6.4f %4.2f %1d %3d\r\n',grupo_c(i,:));
end;
st = fclose(fid);
load resultado.txt

xa=[1:quant_a];
xb=[(quant_a+1):(quant_a+quant_b)];
xc=[(quant_a+quant_b+1):(quant_a+quant_b+quant_c)];

axis([0 omega 0 3]);


clf
hold on;
plot(xa,grupo_a(:,5), 'ro');
plot(xb,grupo_b(:,5), 'b^');
plot(xc,grupo_c(:,5), 'g+');
grid;
disp(' ')
disp('Salva os seguintes arquivos:')
disp('grupo_a.txt')
disp('grupo_b.txt')
disp('grupo_c.txt')
fid = fopen('grupo_a.txt','w');
for (i=1:quant_a)
fprintf(fid,'%6.4f %6.4f %6.4f %4.2f %3d %3d\r\n',grupo_a(i,:));
end
st = fclose(fid);

fid = fopen('grupo_b.txt','w');
for (i=1:quant_b)

61

fprintf(fid,'%6.4f %6.4f %6.4f %4.2f %3d %3d\r\n',grupo_b(i,:));


end
st = fclose(fid);

fid = fopen('grupo_c.txt','w');
for (i=1:quant_c)
fprintf(fid,'%6.4f %6.4f %6.4f %4.2f %3d %3d\r\n',grupo_c(i,:));
end
st = fclose(fid);

Programa:pso1.m
%function beta=pso1(pop,mov,omega,fobj)
function beta=pso1(pop,mov,omega,fobj,gr,amost)

% beta=pso1(pop,mov,omega,fobj)
% Particle Swarm Optimization para maximizacao de funes
%
% Versao 2.0
% Implementao: Influncia em anel
%
% Urias Novaes
%
% OUTPUTS:
% beta

= Melhor posio do processo de evolucao, ou aquela para o

qual a funo objetivo atinge o mximo

%
% INPUTS:
% pop

= Tamanho da populao

% mov

= Nmero de movimentos do processo evolutivo

% omega
% fobj

= Dimenso do espao de busca


= Funo objetivo

% amost = Nmero de iteraes para apresentao do melhor indivduo


%

durante evoluo (Se amost = 0, no apresenta)

62

% Gera populacao aleatoria


populacao = round(rand(pop,omega));
% Inicializa com zeros aptido individual anterior
% e aleatriamente uma posio anterior
for i=1:pop,
aptindh(i)=0;
posindh(i,:)=round(rand(1,omega));
end;

% Inicializa com zero aptido geral da vizinhana anterior


for i=1:pop,
aptvizh(i)=0;
posvizh(i,:)=r ound(rand(1,omega));
end

% Inicializao com zero a melhor aptido


aptgerh=0;

% Evolui ate o numero de movimentos ser alcancado


for i=1:mov,

% Calcula posies e aptides individuais

for k=1:pop,
str = [fobj,'(populacao(k,:))'];
aptind(k)=eval(str);
posind(k,:)=populacao(k,:);
end;
% Compara a atual posio individual com a anterior e salva a melhor

for k=1:pop
if (aptind(k)>aptindh(k)),

63

aptindh(k)=aptind(k);
posindh(k,:)=populacao(k,:);
end;
end;

% Compara a melhor posio geral com a anterior e salva a melhor

[lm,cm]=max(aptind);
aptger=aptind(1,cm);
posger(1,:)=posind(cm,:);
if (aptger > aptgerh),
aptgerh=aptger;
posgerh=posger;
end

% Calcula a melhor aptido da vizinhana

% Primeiro elemento
if(aptind(1)>aptind(2)),
aptviz(1)=aptind(1);
posviz(1,:)=posind(1,:);
else
aptviz(1)=aptind(2);
posviz(1,:)=posind(2,:);
end;
if(aptind(pop)>aptviz(1)),
aptviz(1 )=aptind(pop);
posviz(1,:)=posind(pop,:);
end;
% Todos os elementos com exceo do primeiro e ltimo
for k=2:pop -1,
if(aptind(k-1)>aptind(k)),
aptviz(k)=aptind(k-1);
posviz(k,:)=posind((k -1),:);
else
aptviz(k)=aptind(k);

64

posviz(k,:)=posind(k,:);
end;
if(aptind(k+1)>aptviz(k)),
aptviz(k)=aptind(k+1);
posviz(k,:)=posind((k+1),:);
end;
end;

% ltimo elemento
if(aptind(pop)>aptind(pop -1)),
aptviz(pop)=aptind(pop);
posviz(pop,:)=posind(pop,:);
else
aptviz(pop)=aptind(pop -1);
posviz(pop,:)=posind((pop-1),:);
end;
if(aptind(1)>aptviz(pop)),
aptviz(pop)=aptind(1);
posviz(pop,:)=posind(1,:);
end;
% Compara a posio da vizinhana com a anterior e salva a melhor
for k=1:pop
if (aptviz(k)>aptvizh(k)),
aptvizh(k)=aptviz(k);
posvizh(k,:)=posviz(k,:);
end;
end;
% Movimenta populao

clc;
% disp(aptind);
disp(posgerh);
disp(aptgerh);
%

pause;

65

for k=1:pop,
nposind(k,:)=mergebin(movebin(posind(k,:),posvizh(k,:)),movebin(posind
(k,:),posindh(k,:)));
end;

% Verifica se apresenta melhor indivduo na tela


%if amost ~= 0
%

if rem(i,amost)==0
% plot(posgerh,'^');
%pause

end

%end

% Atualiza populacao

for k=1:pop
populacao(k,:) = nposind(k,:);
end
%

clc;

disp(i);

disp(aptgerh);

end;

% Melhor individuo

beta = posgerh;

Programa: fobjiris.m
function f=f1(v,grupo)

% Funo de agrupamento para as flores iris

66

% Urias Novaes
[lin,col]=size(v);

indice11=0;
indice12=0;
indice21=0;
indice22=0;
cont1=0;
cont2=0;
% Se todos os bits forem 1 ou 0, faz aptdo = 0
if (sum(v)~=0 & prod(v)~= 1)

% Separao do grupo inicial em 2 grupos

for i=1:col
if v(i)==1
cont1=cont1+1;
grupo1(cont1,:)=grupo(i,:);
end
if v(i)==0
cont2=cont2+1;
grupo2(cont2,:)=grupo(i,:);
end
end
%disp(grupo1)
%disp(grupo2)
% Calculo do ponto mdio dos grupos

pm1=mean(grupo1(:,3:4));

pm2=mean(grupo2(:,3:4));

pm1=mean(grupo1(:,1:4));
pm2=mean(grupo2(:,1:4));

67

% Calculo da aptido
f = sum((pm1-pm2).^2,2);

else

f=0;
end

Programa: movebin.m

function vout=movebin(vin,vref)

vout = movebin(vin,vref)

Movimentao binria do vetor vin em direo a vref

Seja n o nmero de bits em que vin difere de vref.

Aleatoriamente at um mximo de 2n bits so escolhidos (k bits);

Inicialmente os bits diferentes so alterados a partir do MSB,

se k > n, n bits diferentes so alterados e

(k - n) bits iguais so aleatriamente escolhidos para serem

alterados.
[min,nin] = size(vin);
[mref,nref] = size(vref);
if ( (min~=mref) | (nin~=nref)),
error('vin and vref must be of same dimension.')
end;
% Dimenso dos vetores
omega = nref;
%

Xor entre o vetor de entrada e vetor referencia

68

vxor = xor(vin,vref);
%

Vetor com os ndices dos bits diferentes

dif = find(vxor);

% Vetor com os ndices dos bits iguais


ig = find(~vxor);

Quantidade de bits diferentes

[ldif,bitsdif]=size(dif);

vout = vin;
if (bitsdif > omega/2)
bitsdif = omega - bitsdif;
vout = ~vin;
temp = dif;
dif = ig;
ig = temp;
end;
%

Quantidade total de bits iguais

[lig,bitsigtot]=size(ig);

Gera um nmero aleatrio entre 0 e 2*n

if (bitsdif == 0)
k = 1;
else
k = round(2.*bitsdif.*rand);
end;

Se o nmero de bits a serem alterados menor que os diferentes,

troca essa quantidade de bits diferentes, seno troca todos os

% bits diferentes e mais o que falta em bits iguais.


if (k < bitsdif)

69

bitsig = 0;
for (i=1:k),

% Altera parte dos bits diferentes

vout(dif(i))= ~vout(dif(i));
end;
else
bitsig = k - bitsdif;
if (bitsdif ~= 0)
for (i=1:bitsdif),

% Altera todos os bits diferentes

vout(dif(i))= ~vout(dif(i));
end;
end;
if (bitsig > 0)
sort = bitsigtot - bitsig;
n = round(sort.*rand) + 1;
for (i=n:(n+bitsig-1))

% Altera os MSB bits iguais

vout(ig(i)) = ~vout(ig(i));
end;
end;
end;
Programa: mergebin.m
function vout=mergebin(v1,v2)
%

vout = mergebin(v1,v2)

Fuso binria dos vetores v1 e v2.

Os

bits

iguais

so

mantidos,

os

diferentes

alternadamente dos vetores


%

a partir do MSB

[m1,n1] = size(v1);
[m2,n2] = size(v2);

if ( (m1~=m2) | (n1~=n2)),
error('v1 and v2 must be of same dimension.')
end;
% Dimenso dos vetores

70

so

copiados

omega = n2;
%

Xor entre os vetores

vxor = xor(v1,v2);

% Vetor com os ndices dos bits diferentes


dif = find(vxor);

Quantidade de bits diferentes

[ldif,bitsdif]=size(dif);

% Copia os bits iguais


vout = v2;
for (i=1:2:bitsdif)
vout(dif(i))= v1(dif(i));
end;

71

Caso: Presena ou ausncia de doena cardaca


Programas:

psoheart.m
pso1.m

(j listado)

fobheart.m
movebin.m

(j listado)

mergebin.m

(j listado)

Programa: psoheart.m

clear all
clc
disp(' ')
disp('Este programa utiliza Particle swarm optimization para resolver')
disp('o problema de agrupamento de dados de doenas cardacas.')
disp(' ')
disp('->Pressione qualquer tecla para continuar')
pause
clc
load hstd.txt;
grupo=hstd;
[omega,quant]=size(grupo);

pop=8;
mov=2000;
melhor1=pso1(pop,mov,omega,'fobheart',grupo,50);
i1=0;
i2=0;
for i=1:omega
if melhor1(i)==0
i1=i1+1;
gr1(i1,:)=grupo(i,:);
else

72

i2=i2+1;
gr2(i2,:)=grupo(i,:);
end
end

[l1,c1]=size(gr1);
[l2,c2]=size(gr2);

clear grupo;

if l1 > l2
grupo=gr1;
quant=l1;
grupo_a=gr2;
quant_a=l2;
grupo_b=gr1;
quant_b=l1;
else
grupo=gr2;
quant=l2;
grupo_a=gr1;
quant_a=l1;
grupo_b=gr2;
quant_b=l2;
end
disp('Salva o arquivo resultado.txt:')
fid = fopen('resultado.txt','w');
for (i=1:quant_a)
fprintf(fid,'%6.4f %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f
%6.4f %6.4f %6.4f %6.4f %1d\r\n',grupo_a(i,:));
end;
for (i=1:quant_b)
fprintf(fid,'%6.4f %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f
%%6.4f %6.4f %6.4f %6.4f %1d \r\n',grupo_b(i,:));
end;

73

st = fclose(fid);
%load resultado.txt

xa=[1:quant_a];
xb=[(quant_a+1):(quant_a+quant_b)];

axis([0 omega 0 2]);


clf
hold on;
plot(xa,grupo_a(:,14), 'ro');
plot(xb,grupo_b(:,14), 'b^');
grid;

disp(' ')
disp('Salva os seguintes arquivos:')
disp('grupo_a.txt')
disp('grupo_b.txt')

fid = fopen('grupo_a.txt','w');
for (i=1:quant_a)
fprintf(fid,'%6.4f %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f
%6.4f %6.4f %6.4f %6.4f %1d\r\n',grupo_a(i,:));
end
st = fclose(fid);
fid = fopen('grupo_b.txt','w');
for (i=1:quant_b)
fprintf(fid,'%6.4f %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f %6.4f
%6.4f %6.4f %6.4f %6.4f %1d\r\n',grupo_b(i,:));
end
st = fclose(fid );

74

Programa: fobheart.m
function f=f1(v,grupo)

% Funo de agrupamento para doenas cardacas


% Urias Novaes

[lin,col]=size(v);
indice11=0;
indice12=0;
indice21=0;
indice22=0;
cont1=0;
cont2=0;

% Se todos os bits forem 1 ou 0, faz aptdo = 0


if (sum(v)~=0 & prod(v)~= 1)
% Separao do grupo inicial em 2 grupos

for i=1:col
if v(i)==1
cont1=cont1+1;
grupo1(cont1,:)=grupo(i,:);
end
if v(i)==0
cont2=cont2+1;
grupo2(cont2,:)=grupo(i,:);
end
end
% Calculo do ponto mdio dos grupos

pm1=mean(grupo1(:,1:7));
pm2=mean(grupo2(:,1:7));

75

h=1;
i=1;
j=1;
k=1;
l=1;
m=1;

[y,h1] = max(hist(grupo1(:,8),2));
[y,h2] = max(hist(grupo2(:,8),2));
if(h1==h2),
h=0;
end;
[y,i1] = max(hist(grupo1(:,9),2));
[y,i2] = max(hist(grupo2(:,9),2));
if(i1==i2),
i=0;
end;
[y,j1] = max(hist(grupo1(:,10),2));
[y,j2] = max(hist(grupo2(:,10),2));
if(j1==j2),
j=0;
end;
[y,k1] = max(hist(grupo1(:,11),4));
[y,k2] = max(hist(grupo2(:,11),4));
if(k1==k2),
k=0;
end;

[y,l1] = max(hist(grupo1(:,12),3));
[y,l2] = max(hist(grupo2(:,12),3));
if(l1==l2),
l=0;
end;

76

[y, m1] = max(hist(grupo1(:,13),3));


[y,m2] = max(hist(grupo2(:,13),3));
if(m1==m2),
m=0;
end;

% Calculo da aptido
% f = sum((pm1-pm2).^2,2)+h+i+j+k+l+m;

f = sum(abs(pm1 -pm2))+h+i+j+k+l+m;
else

f=0;

end

77

Caso: Ruspini
Programas:

psoruspini.m
pso1.m

(j listado)

fruspini.m
movebin.m

(j listado)

mergebin.m

(j listado)

Programa: psoruspini.m

% Agrupa arquivo
clear all
clc
disp(' ')
disp('Este programa utiliza Particle swarm optimizat ion para resolver')
disp('o problema de agrupamento de dados.')
disp(' ')
disp('O arquivo de dados utilizado ser o conjunto Ruspini,')
disp('o qual possui 4 classes de dados a serem agrupados.')
disp(' ')
disp('->Pressione qualquer tecla para continuar')
%pause
clc

disp(' ')
disp('Inicialmente o progrma l o arquivo de dados ruspini.txt.')
disp('Este arquivo possui 75 elementos.')
disp(' ')
disp('->Pressione qualquer tecla para continuar')
%pause
clc
%global grupo

load ruspini.txt;
grupo=ruspini;

78

[omega,quant]=size(grupo);
disp(' ')
disp('Em seguida a funo pso.m chamada com a seguinte ')
disp('Funo

objetivo:

fruspini.m

Maximiza

distncia

centrides.')
disp(' ')
disp('->Pressione qualquer tecla para continuar e aguarde')
pause
clc

pop=20;
mov=150;
melhor1=pso1(pop,mov,omega,'fruspini',grupo,10);
disp(' ')
disp('->Pressione qualquer tecla para continuar')
pause
clc
disp(' ')
disp('Em seguida o arquivo de dados ser dividido em outros dois,')
disp('de acordo com o melhor indivduo do processo evolutivo')
disp(' ')
disp('->Pressione qualquer tecla para continuar')
pause
clc
ip=0;
iq=0;
for (i=1:omega)
if melhor1(i)==0
ip=ip+1;
grp(ip,:)=grupo(i,:);
else
iq=iq+1;

79

entre

os

grq(iq,:)=grupo(i,:);
end
end

clf;
hold on;
axis('equal');
axis([0 120 0 160]);
plot(grp(:,1),grp(:,2),'m+');
plot(grq(:,1),grq(:,2),'c*');
hold off;
fid = fopen('grupo_p.txt','w');
for (i=1:ip)
fprintf(fid,'%3d %3d\r\n',grp(i,:));
end
st = fclose(fid);

fid = fopen('grupo_q.txt','w');
for ( i=1:iq)
fprintf(fid,'%3d %3d\r\n',grq(i,:));
end
st = fclose(fid);

disp(' ')
disp('Os

arquivos

so

novamente

submetidos

agrupamento.')
disp('formando um total de 4 arquivos.')
disp(' ')
disp('->Pressione qualquer tecla para continuar')
pause
clc

melhor2=pso1(pop,mov,ip,'fruspini',grp,10);
i1=0;

80

ao

processo

de

i2=0;
for i=1:ip
if melhor2(i)==0
i1=i1+1;
gr1(i1,:)=grp(i,:);
else
i2=i2+1;
gr2(i2,:)=grp(i,:);
end
end

grupo_a=gr1;
grupo_b=gr2;
melhor3=pso1(pop,mov,iq,'fruspini',grq,10);
i3=0;
i4=0;
for (i=1:iq)
if melhor3(i)==0
i3=i3+1;
gr3(i3,:)=grq(i,:);
else
i4=i4+1;
gr4(i4,:)=grq(i,:);
end
end
grupo_c=gr3;
grupo_d=gr4;

disp(' ')
disp('Salva o arquivo resultado.txt:')

fid = fopen( 'resultado.txt','w');


for (i=1:i1)
fprintf(fid,'%3d %3d\r\n',grupo_a(i,:));

81

end;
for (i=1:i2)
fprintf(fid,'%3d %3d\r\n',grupo_b(i,:));
end;
for (i=1:i3)
fprintf(fid,'%3d %3d\r\n',grupo_c(i,:));
end;
for (i=1:i4)
fprintf(fid,'%3d %3d\r\n',grupo_ d(i,:));
end;
st = fclose(fid);
load resultado.txt
clf;
hold on;
axis('equal');
axis([0 120 0 160]);
plot(grupo_a(:,1),grupo_a(:,2),'rs');
plot(grupo_b(:,1),grupo_b(:,2),'bd');
plot(grupo_c(:,1),grupo_c(:,2),'gv');
plot(grupo_d(:,1),grupo_d(:,2),'y^');
hold off;
disp(' ')
disp('Salva os seguintes arquivos:')
disp('grupo_a.txt')
disp('grupo_b.txt')
disp('grupo_c.txt')
disp('grupo_d.txt');
fid = fopen('grupo_a.txt','w');
for (i=1:i1)
fprintf(fid,'%3d %3d\r\n',grupo_a(i,:));
end
st = fclose(fid);
fid = fopen('grupo_b.txt','w');

82

for (i=1:i2)
fprintf(fid,'%3d %3d\r\n',grupo_b(i,:));
end
st = fclose(fid);

fid = fopen('grupo_c.txt','w');
for (i=1:i3)
fprintf(fid,'%3d %3d\r\n',grupo_c(i,:));
end
st = fclose(fid);

fid = fopen('grupo_d.txt','w');
for (i=1:i4)
fprintf(fid,'%3d %3d\r\n',grupo_d(i,:));
end
st = fclose(fid);
Programa: fruspini.m

function f=f1(v,grupo)
% Funo de agrupamento

% Urias Novaes

[lin,col]=size(v);
indice11=0;
indice12=0;
indice21=0;
indice22=0;

cont1=0;
cont2=0;

% Se todos os bits forem 1 ou 0, faz aptdo = 0


if (sum(v)~=0 & prod(v)~= 1)

83

% Separao do grupo inicial em 2 grupos


for i=1:col
if v(i)==1
cont1=cont1+1;
grupo1(cont1,:)=grupo(i,:);
end
if v(i)==0
cont2=cont2 +1;
grupo2(cont2,:)=grupo(i,:);
end
end
%disp(grupo1)
%disp(grupo2)

% Calculo do ponto mdio dos grupos

pm1=mean(grupo1);
pm2=mean(grupo2);
% Calculo da aptido

f = sum((pm1 -pm2).^2,2);

else
f=0;
end

84

Caso: Padro de bits


Programas:

pso2.m
f3.m

%function beta=pso2(pop,mov,omega,fobj)
function beta=pso2(pop,mov,omega,fobj,gr,amost)

% beta=pso(pop,mov,omega,fobj)
% Particle Swarm Optimization para maximizacao de funes
%
% Implementao: Influncia em anel
%
% Urias Novaes
%
% OUTPUTS:
%

beta

= Melhor posio do processo de evolucao, ou aquela para

o
%

qual a funo objetivo atinge o mximo

%
% INPUTS:
% pop

= Tamanho da populao

% mov

= Nmero de movimentos do processo evolutivo

% omega
% fobj
%

amost

= Dimenso do espao de busca


= Funo objetivo
= Nmero de iteraes para apresentao do melhor

indivduo
%

durante evoluo (Se amost = 0, no apresenta)

% Gera populacao aleatoria


populacao = round(rand(pop,omega));

% Inicializa com zeros aptido individual anterior


% e aleatriamente uma posio anterior

85

for i=1:pop,
aptindh(i)=0;
posindh(i,:)=round(rand(1,omega));
end;

% Inicializa com zero aptido geral da vizinhana anterior

for i=1:pop,
aptvizh(i)=0;
posvizh(i,:)=round(rand(1,omega));
end
% Inicializao com zero a melhor aptido
aptgerh=0;
% Evolui ate o numero de movimentos ser alcancado
for i=1:mov,
% Calcula posies e aptides individuais
for k=1:pop,
str = [fobj,'(populacao(k,:))'];
aptind(k)=eval(str);
posind(k,:)=populacao(k,:);
end;

% Compara a atual posio individual com a anterior e salva a melhor


for k=1:pop
if (aptind(k)>aptindh(k)),
aptindh(k)=aptind(k);
posindh(k,:)=populacao(k,:);
end;
end;

86

% Compara a melhor posio geral com a anterior e salva a melhor


[lm,cm]=max(aptind);
aptger=aptind(1,cm);
posger(1,:)=posind(cm,:);
if (aptger > aptgerh),
aptgerh=aptger;
posgerh=posger;
end

% Calcula a melhor aptido da vizinhana


% Primeiro elemento
if(aptind(1)>aptind(2)),
aptviz(1)=aptind(1);
posviz(1,:)=posind(1,:);
else
aptviz(1)=aptind(2);
posviz(1,:)=posind(2,:);
end;
if(aptind(pop)>aptviz(1)),
aptviz(1)=aptind(pop);
posviz(1,:)=posind(pop,:);
end;

% Todos os elementos com exceo do primeiro e ltimo


for k=2:pop-1,
if(aptind(k-1)>aptind(k)),
aptviz(k)=aptind(k-1);
posviz(k,:)=posind((k -1),:);
else
aptviz(k)=aptind(k);
posviz(k,:)=posind(k,:);
end;
if(aptind(k+1)>aptviz(k)),
aptviz(k)=aptind(k+1);
posviz(k,:)=posind((k+1),:);

87

end;
end;
% ltimo elemento
if(aptind(pop)>aptind(pop -1)),
aptviz(pop)=aptind(pop);
posviz(pop,:)=posind(pop,:);
else
aptviz(pop)=aptind(pop -1);
posviz(pop,:)=posind((pop-1),:);
end;
if(aptind(1)>aptviz(pop)),
aptviz( pop)=aptind(1);
posviz(pop,:)=posind(1,:);
end;
% Compara a posio da vizinhana com a anterior e salva a melhor

for k=1:pop
if (aptviz(k)>aptvizh(k)),
aptvizh(k)=aptviz(k);
posvizh(k,:)=posviz(k,:);
end;
end;

% Movimenta populao

clc;
% disp(aptind);
disp(posgerh);
disp(aptgerh);
%

pause;
for k=1:pop,

nposind(k,:)=mergebin(movebin(posind(k,:),posvizh(k,:)),movebin(posind
(k,:),posindh(k,:)));

88

end;
% Verifica se apresenta melhor indivduo na tela
%if amost ~= 0
%

if rem(i,amost)==0
% plot(posgerh,'^');
%pause

end

%end

% Atualiza populacao
for k=1:pop
populacao(k,:) = nposind(k,:);
end
%

clc;

disp(i);

disp(aptgerh);

end;
% Melhor individuo
beta = posgerh;

Programa: f3.m
function f=f1(v)

% Maximizao de 'uns' na primeira metade do cromossomo


% e de 'zeros'na segunda metade

f=0;
[lin,col]=size(v);
for i=1:col/2

89

if v(i)==1
f=f+1;
end
end
for i=col/2+1:col
if v(i)==0
f=f+1;
end
end

90

Caso: Funo matemtica


Programas:

pso2.m

(j listado)

f5.m
bintodec.m
programa: f5.m

function f=f1(v)

% Funo Polinomial
n=0.01*bintodec(v);
f= sin(3.*n).*(0.015.*n.^3-0.2.*n.^2+0.7.*n -1);

Programa: bintodec.m
function dec=bintodec(bin)

% dec=bintodec(bin)
% Transforma nmero binario em decimal

[l,c]=size(bin);

dec=0;
for i=1:c
dec=double(dec+bin(1,c-i+1).* 2.^(i -1));
end;

91

Anda mungkin juga menyukai