Versão Corrigida do ficheiro de testes

Foi detectado um problema com a versão anterior do ficheiro de testes disponibilizado pelo corpo docente. O problema estava relacionado com uma ligeira diferença na função lumino do projecto para a 1.ª fase de FP.

Esta diferença apesar de muito pequena tem impacto em vários procedimentos tais como o conforto térmico e consequentemente o procedimento efeito margarida.

Por esta razão, alguns dos testes disponibilizados não estavam correctos para a vossa versão do projecto. Disponibilizamos portanto uma nova versão com todos os testes corrigidos.

Versão Corrigida do ficheiro de testes

Foi detectado um problema com a versão anterior do ficheiro de testes disponibilizado pelo corpo docente. O problema estava relacionado com uma ligeira diferença na função lumino do projecto para a 1.ª fase de FP.

Esta diferença apesar de muito pequena tem impacto em vários procedimentos tais como o conforto térmico e consequentemente o procedimento efeito margarida.

Por esta razão, alguns dos testes disponibilizados não estavam correctos para a vossa versão do projecto. Disponibilizamos portanto uma nova versão com todos os testes corrigidos.

Avaliação 3ªparte

Junto se publicam os resultados os testes da 3ªparte do projecto.

Qualquer questão deve ser colocada através do email da cadeira. Após terem ser resolvidas todas as questões que venham a ser colocadas serão publicadas as notas correspondentes à avaliação desta parte do projecto.

Avaliação 2ªparte

Junto se publicam os resultados dos testes da 2ªparte do projecto.

Qualquer questão deve ser colocada através do email da cadeira. Após terem ser resolvidas todas as questões que venham a ser colocadas serão publicadas as notas correspondentes à avaliação desta parte do projecto.

Nova versão do ficheiro de testes

Por lapso, o ficheiro de testes estava a chamar a função nasce_local com um parâmetro adicional (o tempo). Por essa razão, fornecemos um novo ficheiro de testes onde a função nasce_local recebe os argumentos correctos.

Nota: os resultados são exactamente os mesmos.

Ficheiro a Entregar com o Terceiro Projecto e Testes

Todos os grupos deverão entregar para além dos ficheiros indicados no enunciado, o ficheiro Grupoxx.scm que se segue. Este ficheiro deverá ser incluido no zip a entregar.

O ficheiro Grupoxx.scm contem instruções de utilização bem como recomendações de cuidados a ter antes da entrega do projecto. Contém também alguns testes que os alunos poderão efectuar para debug do trabalho. OS TESTES INDICADOS NÃO SÃO OS TESTES QUE SERÃO APLICADOS PARA AVALIAÇÃO!

A avaliação do projecto vai passar pela leitura deste ficheiro e invocação posterior dos testes. Erros na leitura do ficheiro levarão à avaliação incorrecta do projecto.

No ficheiro resultados.txt podem verificar os resultados que devem ser obtidos para cada um dos testes efectuados.

Enunciado 3ª parte (fase) do projecto

Junto se publica o terceiro dos três enunciados do projecto.

Ficheiros Auxiliares 3ª parte

Abaixo estão os ficheiros disponibilizados para a realização da terceira parte do projecto para várias versões de DrScheme (v3.52 (versão do ano passado), v3.70 (disponível nos laboratórios) e v3.71 (versão mais recente))

Deverão fazer download do ficheiro correspondente à versão que utilizam e descompactar para o directório do vosso projecto. Para usar, deverão fazer (require " nome-do-modulo.zo") no início do vosso ficheiro.

O módulo gerador.zo disponibiliza, para além das funcionalidades indicadas no enunciado do segundo projecto, a funcionalidade

> (gerador "termina")

Esta funcionalidade permite fazer reset da semente, passando esta de novo ao estado não inicializado. Esta funcionalidade deverá APENAS ser utilizada no final de cada simulação! PARA CADA SIMULAÇÃO A SEMENTE DEVE SER SEMPRE A MESMA!

O módulo interface.zo disponibiliza, para além das funcionalidades indicadas no enunciado do segundo projecto, as funcionalidades play_daisyworld e velocidade. A funcionalidade play_daisyworld permite a visualização gráfica do resultado da simulação. Recebe como argumento uma lista de outputs em que cada output é uma lista de três elementos, conforme especificado na secção 2 do enunciado. A funcionalidade velocidade recebe como argumento um número e permite definir a velocidade da visualização (sendo 0 a mais rápida).

É permitida também a definição da velocidade no momento da invocação do procedimento play_daisyworld. Por exemplo, as seguintes invocações têm o mesmo comportamento:

> (play-daisyworld output 3)

> (velocidade 3)
> (play-daisyworld output)

Avaliação 1ªparte

Junto se publicam os resultados dos testes d 1ªparte do projecto.

Qualquer questão deve ser colocada através do email da cadeira. Após terem ser resolvidas todas as questões que venham a ser colocadas serão publicadas as notas correspondentes à avaliação desta parte do projecto.

Ficheiros Auxiliares 2ªparte

Abaixo estão os ficheiros disponibilizados para a realização da segunda parte do projecto para várias versões de DrScheme (v3.52 (usada no ano passado) v3.70 (usada nos laboratórios) e v3.71 (versão mais recente))

Deverão fazer download do ficheiro correspondente à versão que utilizam e descompactar para o directório do vosso projecto. Para usar, deverão fazer (require " nome-do-modulo.zo") no início do vosso ficheiro. As instruções de utilização de cada módulo estão disponíveis no enunciado do projecto.

Enunciado 2a parte(fase) do Projecto

Junto se publica o segunto dos três enunciados do projecto.

Esclarecimentos e Correcções ao Enunciado 1ªparte

(1) Em relação à lista a devolver pelo procedimento " mostra_constantes", esta deve deve ter os seguintes valores:

("Factor de absorção: " <valor Factor de absorção> "Emissividade do planeta: " <valor Emissividade do planeta> "Fluxo solar: " <valor Fluxo solar> "Constante de Stefan Boltzman: " <valor Constante de Stefan Boltzman>)

note-se que <valor Factor de absorção> deve ser substituído pelo valor correcto e o mesmo se aplica aos valores das outras constantes.

(2) Em relação ao procedimento " albedo_regiao" os valores das áreas são recebidos em percentagem [0,100] mas têm que ser convertidos para um racional [0,1], tal está mal explicado na descrição da fórmula nas páginas 3 e 4.

(3) No procedimento " vizinhos_display" há um erro óbvio: todos os argumentos têm que ser "inteiro >= 0" e não "inteiro = 0" como está indicado.

(4) No procedimento " vizinhos_display" para produzir as cadeias de caracteres da lista a devolver (ver exemplo: ("(2,3)" ... "(4,5)")), deve-se usar a primitiva format como se apresenta em baixo:

> (format "(~a,~a)" 2 3)

"(2,3)"

Recommender System

Através do Recommender System os alunos podem obter os seus traços de personalidade e se quizerem podem pedir ao sistema que os ajude a encontrar colegas de trabalho.

Esclarecimentos e Correcções ao Enunciado 3ªparte

  • Geração de números pseudo-aleatórios

O procedimento |gerador| que foi fornecido é utilizado explicitamente apenas na terceira fase do projecto. Nos procedimentos da segunda fase, os número pseudo-aleatorios são sempre recebidos como argumento nos procedimentos (o |gerador| foi disponibilizado para que os alunos pudessem familiarizar-se com a sua utilização).

Já nos procedimentos |nasce_global| e |efeito_margarida|, é preciso gerar um número pseudo-aleatório usando as coordenadas da margarida mãe e o instante. Antes de qualquer utilização do |gerador|, é necessário inicializá-lo utilizando uma semente. Essa inicialização *não* deve ser feita dentro destes procedimentos. Ela deve ser feita *uma única vez* no ínicio do programa |simula|. Para efeitos de testar os procedimentos separadamente, fora do contexto do programa |simula|, pode-se inicializar o |gerador| no próprio interpretador antes de se chamar o procedimento.

  • Quando e onde nasce uma margarida
Quando: Se a densidade populacional de margaridas na vizinhança da margarida mãe (isto é, o limite VM) permitir que uma margarida nasça localmente, essa margarida nasce *sempre* dentro dessa vizinhança. Caso contrário, ela nascerá noutro ponto do planeta com probabilidade g (conforto da margarida "mãe").
Onde: Quando uma margarida deve nascer numa posição qualquer do planeta, essa posição é calculada da seguinte forma:
  1. escolher uma posição aleatoriamente;
  2. verificar se essa posição se encontrava ocupada por uma margarida no instante anterior:
  • se não, ela nasce essa mesma posição;
  • se sim, ela nasce na próxima posição que se encontrava vazia no instante anterior, procurando essa posição linha a linha da esquerda para a direita e de cima para baixo (quando for atingida a última posição da grelha, tal como descrito no segundo enunciado a pesquisa continua a partir da posição (0,0) da grelha).
No caso em que a margarida deve nascer localmente (isto é, numa vizinhança da margarida mãe), a posição deve ser obtida simplesmente percorrendo a região sequencialmente a partir do canto superior esquerdo (da região), da esquerda para a direita, e de cima para baixo, até ser encontrada uma posição vazia.

Enunciado 1a parte(fase) do Projecto

Junto se publica o primeiro dos três enunciados do projecto.