idw-crystal
Version, currently main branch1 version
- main branchlatestJun 27, 2025
github.com/fabianapduarte/idw-crystal
Atividade da disciplina de Programação Concorrente do BTI
Installation
# Add this to your shard.yml
dependencies:
idw-crystal:
github: fabianapduarte/idw-crystal
branch: mainmain is a branch, not a release, so this tracks it rather than pinning a version.
Then run:
shards installshard.yml
- Crystal
>= 1.16.0- License
- MIT
- Author
- Fabiana Duarte
- Target
idw-crystalfrom src/idw-crystal.cr
Dependencies
This version declares no dependencies.
README
💻 Sobre o projeto
Projeto desenvolvido na disciplina Programação Concorrente do curso de Tecnologia da Informação (IMD/UFRN) implementando o algortimo de interpolação espacial em Crystal para previsão de temperatura.
A interpolação espacial é o processo de estimativa de valores desconhecidos em determinados pontos do espaço com base em informações conhecidas do ambiente. Os dados utilizados por essa técnica consistem em um conjunto de coordenadas espaciais, cada uma com um ou mais valores associados, como temperatura e precipitação, por exemplo.
Dentre os diversos métodos de interpolação espacial existentes, a aplicação desenvolvida utilizou o método Inverso da Distância à Potência (Inverse Distance Weighted – IDW). Esse algoritmo analisa todos os pontos do ambiente e atribui um peso (ou ponderação) a cada coordenada, de acordo com sua proximidade em relação ao ponto de interesse. Quanto mais próximo for o ponto conhecido, maior será seu peso e maior a influência sobre o cálculo da estimativa do valor do atributo.
🚀 Como executar o projeto
Para executar o projeto, siga os seguintes passos:
- É preciso ter Crystal instalado na sua máquina. Para instalar, consulte o link.
- Adicione um arquivo
measurements.txtcom os dados de entrada na pastadata/. Cada linha do algoritmo precisa seguir o formatox,y,z, sendoxum número inteiro com a posição do ponto no eixo horizontal,yum número inteiro com a posição do ponto no eixo vertical ezum número de ponto flutuante de uma casa decimal representando a temperatura medida para a coordenada. - Para executar pelo terminal:
# Clone este repositório
$ git clone git@github.com:fabianapduarte/idw-crystal.git
# Acesse a pasta do repositório
$ cd idw-crystal
# Execute o algoritmo, passando as coordenadas para cálculo da interpolação espacial
# crystal run src/idw/<versão do algoritmo>.cr -O3 -Dpreview_mt -Dexecution_context -- <x> <y>
# Exemplo:
$ crystal run src/idw/v0.cr -O3 -Dpreview_mt -Dexecution_context -- 1 1
⚠ Para a instalação no Windows
Recomenda-se instalar dentro do shell MSYS2. Consulte o link.
⚠ Sobre o dataset
Para gerar o arquivo de dataset, execute a classe
utils.GenerateData.javapresente no projeto Java.
🗂 Versões do algoritmo
baseline: Versão serial e não otimizada do algoritmo;v0: Versão serial com otimizações para melhorar uso de memória;v1: Versão com concorrência;v2: Versão com paralelismo (sem tratamento de condição de corrida);v3: Versão com paralelismo e mutex.
⚠ Observação
O paralelismo é experimental em Crystal. Ao executar as versões v2 e v3 é preciso passar as flags
-Dpreview_mt -Dexecution_contextno comando de execução. No entanto, não há garantia de que funcione, fazendo com que o algoritmo execute de forma sequencial.
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This branch
- Branch
main- Seen
- Jun 27, 2025
- Crystal
>= 1.16.0- Indexed
- yes
Dependents
No indexed shard depends on this one yet.
Repository
github.com/fabianapduarte/idw-crystal
Metadata
- Created
- Aug 12, 2026
- Updated
- Aug 17, 2026
- Synced
- Aug 17, 2026
- Versions
- 1