1. Projecto de Programa¸˜o Orientada por Objectos
ca
2009/10
MEEC – IST
1 Problema
Considere uma grelha n × m. Pretende-se encontrar o melhor caminho, i.e., o caminho com
menor custo, entre um ponto inicial, com coordenadas (xi , yi ), e um ponto final, com coorde-
nadas (xf , yf ). O custo do caminho ´ determinado pelo n´mero de arestas percorridas. Em
e u
geral, o custo de cada aresta ´ 1, mas podem existir zonas especiais em que o custo seja superior.
e
Existem ainda nobst obst´culos em alguns pontos da grelha pelos quais n˜o se pode passar.
a a
Como exemplo, considere-se a figura seguinte, representando uma grelha 5 × 4:
· • · · ⊕
· • _ _ _ ·
· ·
· · _ _ _· • ·
• · · ·
Nesta figura, o ponto inicial, assinalado por , tem coordenadas (1, 1), o ponto final, assi-
nalado por ⊕, tem coordenadas (5, 4), os obst´culos est˜o assinalados por •, e as arestas da
a a
zona de custo especial, assinaladas a tracejado, tˆm custo 4. Neste caso, o melhor caminho ´
e e
(1, 1), (1, 2), (2, 2), (3, 2), (3, 1), (4, 1), (5, 1), (5, 2), (5, 3), (5, 4) com custo 12. Existem caminhos
mais curtos mas cujo custo ´ superior. Por exemplo, o caminho (1, 1), (1, 2), (2, 2), (3, 2), (3, 3),
e
(4, 3), (5, 3), (5, 4) ´ mais curto mas o seu custo ´ 13.
e e
2 Abordagem
O objectivo deste projecto ´ programar em Java uma solu¸˜o para o problema acima descrito
e ca
utilizando programa¸˜o evolutiva especificada e implementada por objectos.
ca
1
2. A ideia ´ gerar no instante zero uma popula¸˜o de ν indiv´
e ca ıduos, todos colocados no ponto
inicial, e fazˆ-la evoluir at´ ao instante final τ . A cada indiv´
e e ıduo z est´ associado um conforto
a
k k
custo(z) − comp(z) + 2 dist(z, (xf , yf ))
ϕ(z) = 1 − 1−
(cmax − 1) × comp(z) + 3 n+m+1
onde:
• cmax ´ o custo m´ximo de uma aresta da grelha;
e a
• custo(z) ´ o custo do caminho do indiv´
e ıduo z;
• comp(z) ´ o comprimento desse caminho – o n´mero de arestas percorridas;
e u
• dist(z, (xf , yf )) ´ a distˆncia do ultimo ponto do caminho ao destino – menor n´mero de
e a ´ u
arestas que ´ necess´rio percorrer;
e a
• k ´ um parˆmetro introduzido pelo utilizador de sensibilidade do conforto a pequenas
e a
varia¸˜es.
co
Cada indiv´ ıduo z evolui de acordo com o seu conforto, atrav´s dos seguintes mecanismos
e
aleat´rios.
o
• Morte, vari´vel exponencial com tempo m´dio (1 − log(1 − ϕ(z)))µ entre eventos.
a e
• Reprodu¸˜o, vari´vel exponencial com tempo m´dio (1 − log(ϕ(z)))ρ. Da reprodu¸˜o
ca a e ca
surge um novo indiv´
ıduo cujo caminho ´ um prefixo do caminho do progenitor. O compri-
e
mento deste prefixo ´ determinado pelo conforto do progenitor aproveitando sempre 90%
e
do caminho e uma frac¸˜o ϕ(z) dos restantes 10%.
ca
• Deslocamento (usualmente chamado muta¸˜o em programa¸˜o evolutiva), vari´vel ex-
ca ca a
ponencial com tempo m´dio (1 − log(ϕ(z)))δ entre eventos. O deslocamento pode ocorrer
e
equiprovavelmente para uma posi¸˜o adjacente na grelha n˜o ocupada por um obst´culo.
ca a a
Se o indiv´
ıduo se deslocar para uma posi¸˜o que j´ existe no seu caminho deve eliminar o
ca a
tro¸o compreendido entre as duas ocorrˆncias dessa posi¸˜o.
c e ca
A popula¸˜o evolui em fun¸˜o da evolu¸˜o individual dos seus elementos e ainda por
ca ca ca
ocorrˆncia de epidemias. Quando o n´mero de indiv´
e u ıduos excede um m´ximo νmax , ocorre
a
uma epidemia. A ` epidemia sobrevivem sempre os cinco indiv´ ıduos com maior conforto. Para
cada um dos restantes, a probabilidade de sobrevivˆncia ´ ϕ(z).
e e
A evolu¸˜o da popula¸˜o dever´ ser regida por simula¸˜o estoc´stica discreta, isto ´, baseada
ca ca a ca a e
numa cadeia de acontecimentos pendentes.
3 Parˆmetros
a
O programa deve receber o conjunto seguinte de dados:
• dimens˜es n e m da grelha;
o
• as coordenadas (xi , yi ) do ponto inicial e (xf , yf ) do ponto final;
2
3. • uma lista de tuplos (coordenada, coordenada, custo)
{((x1 , y1 ), (x1 , y1 ), c1 ), . . . , ((xk , yk ), (xk , yk ), ck )}
para especificar as zonas rectangulares de custo especial;
• o n´mero de obst´culos nobst e as coordenadas (xi , yi ), para i = 1, . . . , nobst , desses
u a
obst´culos;
a
• instante final τ ( 0) da evolu¸˜o;
ca
• lista de parˆmetros k, ν, νmax , µ, δ, ρ.
a
3.1 Formato do ficheiro de dados
O ficheiro que descreve os parˆmetros de entrada da simula¸˜o ´ um ficheiro XML. A simula¸˜o ´
a ca e ca e
um elemento simulacao cujos atributos indicam o instante final (instfinal), popula¸˜o inicial
ca
(popinicial) e popula¸˜o m´xima (popmaxima) da simula¸˜o, assim como a sensibilidade do
ca a ca
conforto a varia¸˜es (sensconforto). O elemento simulacao cont´m seis elementos:
co e
• O elemento vazio grelha cujos atributos indicam a sua dimens˜o (numcolunas e numlinhas).
a
• O elemento vazio pontoinicial, cujos atributos indicam as coordenadas iniciais (xinicial
e yinicial).
• O elemento vazio pontofinal, cujos atributos indicam as coordenadas finais xfinal e
yfinal).
• O elemento vazio zonascustoespecial cont´m por sua vez uma lista de elementos zona
e
com atributos que indicam a sua posi¸˜o na grelha (xinicial, yinicial, xfinal, yfinal)
ca
e cujo conte´do indica o respectivo custo.
u
• O elemento obstaculos, cujo unico atributo descreve o n´mero de obstaculos (num),
´ u
cont´m por sua vez uma lista de elementos vazios obstaculo com atributos que indicam
e
a sua posi¸˜o na grelha (xpos, ypos).
ca
• O elemento eventos, que por sua vez cont´m trˆs novos elementos vazios (morte, reproducao
e e
e deslocamento) cujos atributos (param) descrevem os parˆmetros relativos aos eventos
a
morte, reprodu¸˜o e muta¸˜o.
ca ca
3.2 Exemplo
Como ilustra¸˜o considere o exemplo descrito na Sec¸˜o 1:
ca ca
• dimens˜es da grelha: n = 5 e m = 4;
o
• ponto inicial: (xi , yi ) = (1, 1);
• ponto final: (xf , yf ) = (5, 4);
• zona de custo especial: (x1 , y1 ) = (2, 2), (x1 , y1 ) = (3, 3) e c1 = 4;
• obst´culos: nobst = 4 e coordenadas (2, 1), (2, 3), (2, 4), (4, 2);
a
• instante final da evolu¸˜o: τ = 100;
ca
3
4. • popula¸˜o inicial: ν = 10;
ca
• popula¸˜o m´xima: νmax = 100;
ca a
• sensibilidade do conforto: k = 3;
• parˆmetros relacionados com os eventos: µ = 10, δ = 1, ρ = 1.
a
Seguem os mesmo parˆmetros em XML:
a
simulacao instfinal=100 popinicial=10 popmaxima=500 sensconforto=3
grelha numcolunas=5 numlinhas=4/
pontoinicial xinicial=1 yinicial=1
pontofinal xfinal=5 yfinal=4
zonascustoespecial
zona xinicial=2 yinicial=2 xfinal=3 yfinal=3 4/zona
/zonascustoespecial
obstaculos num=4
obstaculo xpos=2 ypos=1/
obstaculo xpos=2 ypos=3/
obstaculo xpos=2 ypos=4/
obstaculo xpos=4 ypos=2/
/obstaculos
eventos
morte param=10/
reproducao param=1/
mutacao param=1/
/eventos
/simulacao
4 Resultados
O programa deve imprimir para o terminal no final da simula¸˜o o caminho do indiv´
ca ıduo mais
adaptado ao longo de toda a simula¸˜o. Por caminho do indiv´
ca ıduo mais adaptado entende-se:
• caso algum indiv´
ıduo atinja o ponto final, o caminho do indiv´ ıduo z com menor custo,
independentemente de o indiv´ıduo z ter ou n˜o sobrevivido at´ ao fim da simula¸˜o;
a e ca
• caso nenhum indiv´
ıduo atinja o ponto final, o caminho do indiv´
ıduo z com maior conforto,
independentemente de o indiv´ıduo z ter ou n˜o sobrevivido at´ ao fim da simula¸˜o;
a e ca
Durante a simula¸˜o o programa deve ainda imprimir para o terminal o resultado de ob-
ca
serva¸˜es da popula¸˜o, realizadas de τ /20 em τ /20 unidades de tempo. Cada observa¸˜o deve
co ca ca
incluir o instante actual, o n´mero de eventos j´ realizados, a dimens˜o da popula¸˜o, o caminho
u a a ca
do melhor indiv´ ıduo e o respectivo custo/conforto (custo no caso de ter sido atingido o ponto
final e conforto caso contr´rio), segundo o seguinte formato:
a
4
5. Observacao x:
Instante actual: instante
Numero de eventos realizados: eventos
Dimensao da populacao: dimensao
Foi atingido o ponto final: sim/nao
Caminho do individuo mais adaptado: {(x1 , y1 ), . . . , (xj , yj )}
Custo/Conforto: custo/conforto
Qualquer outra impress˜o para o terminal, ou uma impress˜o deste conte´do fora deste
a a u
formato, incorre em penaliza¸˜o na nota do projecto.
ca
5 Simula¸˜o
ca
O simulador deve executar os seguintes passos:
1. Ler o ficheiro que descreve os parˆmetros de entrada da simula¸˜o, e guardar/criar os
a ca
valores/objectos necess´rios. O ficheiro com os dados de entrada ´ um ficheiro XML, cujo
a e
formato ´ descrito na Sec¸˜o 3.1, e deve ser validado atrav´s de um DTD apropriado.
e ca e
2. Executar o ciclo de simula¸˜o at´ que: (i) o tempo limite de simula¸˜o seja atingido; ou
ca e ca
(ii) n˜o haja mais eventos a simular. Durante a simula¸˜o devem ser impressos para o
a ca
terminal as observa¸˜es da popula¸˜o descritas na Sec¸˜o 4.
co ca ca
3. No final da simula¸˜o deve ser imprimido para o terminal a informa¸˜o pedida na Sec¸˜o 4.
ca ca ca
6 Avalia¸˜o
ca
O projecto vale 8 valores da nota final que se distribuem da seguinte forma:
1. (2 val) Relat´rio intercalar: 27 Abril 2010
o
• Nesta fase dever´ ser entregue a especifica¸˜o em UML do diagrama de classes e
a ca
pacotes (t˜o detalhado quanto poss´
a ıvel).
• O diagrama UML deve ser entregue via fenix.
2. (6 val) Relat´rio final: 27 Maio 2010
o
• Nesta fase dever´ ser entregue as fontes do programa, o respectivo execut´vel .jar
a a
(com os ficheiros .java, .class, e MANIFEST.MF organizados correctamente em di-
rectorias), e a documenta¸˜o (gerada pela ferramenta javadoc) da aplica¸˜o.
ca ca
• As fontes, execut´vel e documenta¸˜o da aplica¸˜o devem ser entregues via fenix.
a ca ca
3. Discuss˜o final: 1 e 8 Junho 2010
a
A distribui¸˜o dos grupos para a discuss˜o final ser´ disponibilizada oportunamente. To-
ca a a
dos os membros do grupo devem estar presentes na discuss˜o. A nota final do projecto
a
depender´ desta discuss˜o, e n˜o ser´ necessariamente a mesma para todos os membros
a a a a
do grupo.
Tanto para o relat´rio intercalar como para o final, projectos entregues ap´s a data estabelecida
o o
ter˜o a seguinte penaliza¸˜o: por cada dia de atraso haver´ uma penaliza¸˜o de 2n valores da
a ca a ca
5
6. nota, onde n ´ o n´mero de dias em atraso. Ou seja, relat´rios entregues com 1 dia de atraso
e u o
ser˜o penalizados em 2
a 1 = 2 valores (o relat´rio intercalar incorre numa penaliza¸˜o de 0.2
o ca
valores da nota final, o relat´rio final incorre numa penaliza¸˜o de 0.6 valores da nota final),
o ca
relat´rios entregues com 2 dias de atraso ser˜o pensalizados em 22 = 4 valores (o relat´rio
o a o
intercalar incorre numa penaliza¸˜o de 0.4 valores da nota final, o relat´rio final incorre numa
ca o
penaliza¸˜o de 1.2 valores da nota final), etc. Por dia de atraso entende-se ciclos de 24h a partir
ca
do dia estabelecido para a entrega.
6