Projecto Poo0910

170 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
170
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Projecto Poo0910

  1. 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. 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. 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. 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. 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. 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

×