Calibração automática

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Calibração automática

Mensagem  Romildo Toscano em Sab Ago 21, 2010 11:19 pm

Olá,

Gostaria de saber se existe alguma previsão de quando a calibração automática estará disponível?

Como temos certa pressa em calibrar nossas bacias, estamos pondo em prática um plano B. Queremos calibrar automaticamente a partir de um Algoritmo Genético (AG), desenvolvido por um colega de laboratório e já aplicado em alguns modelos concentrados.

Para isso vamos rodar o MGB.exe numa pasta, como funcionava antigamente. Porém, no fim simulação ele pede para o usuário teclar enter. Então para o AG rodar sem problemas o executável do MGB tem que ser re-compilado, retirando-se esta interação com o usuário.

Gostaria de saber o que deve ser feito para que ele feche sem precisar teclar enter?

Após analisar o código fonte do programa, vi que o arquivo 1main.f90 é quem possui o comando. Segue abaixo esse trecho do algoritmo:

CLOSE (FILPLU) !ARQUIVO DE ENTRADA CHUVA
CLOSE (FILSOL) !ARQUIVO DE SAIDA DADOS DO SOLO
CLOSE (FILAJU)
CALL ALLOCA_VARS(1) !DEALLOCA VARIÁVEIS PRINCIPAIS
WRITE(*,*)'PROGRAMA TERMINOU'
WRITE(*,*)'TECLE ENTER'
READ(*,*)
STOP
END

Será que só colocando alguns comentários no algoritmo resolvo meu problema? Por exemplo:

CLOSE (FILPLU) !ARQUIVO DE ENTRADA CHUVA
CLOSE (FILSOL) !ARQUIVO DE SAIDA DADOS DO SOLO
CLOSE (FILAJU)
CALL ALLOCA_VARS(1) !DEALLOCA VARIÁVEIS PRINCIPAIS
WRITE(*,*)'PROGRAMA TERMINOU'
! WRITE(*,*)'TECLE ENTER'
! READ(*,*)
! STOP
END

Desde já agradeço

Romildo Toscano

Mensagens : 5
Data de inscrição : 21/08/2010
Idade : 30
Localização : João Pessoa

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Calibração automática

Mensagem  Walter Collischonn em Dom Ago 22, 2010 7:48 am

Acho que esta tua solução vai resolver o problema da parada do programa antes de terminar e fechar.
Quanto a previsão de quando estaremos disponibilizando uma versão do programa com a calibração automática, ainda não posso dizer com certeza. Estamos bem proximos de ter isto pronto, mas não sei quanto tempo poderemos dedicar a isto nas proximas semanas.

Espero que a calibração automática esteja disponivel na versão da interface em algumas semanas. Enquanto isso você pode usar diretamente o programa em fortran, porque a rotina de calibração automática está ali. Para calibrar basta mudar o valor de um flag (ICALIB) passando de zero para 1 no arquivo de entrada PARHIG.
Walter

Walter Collischonn

Mensagens : 12
Data de inscrição : 21/08/2010

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Calibração automática

Mensagem  Romildo Toscano em Ter Ago 24, 2010 4:14 pm

Olá!!

Segui o conselho de tentar a calibração automática alterando o ICALIB para 1, mas ocorreu um erro ao compilar. Ele dizia que o aquivo LIMITES.txt não foi encontrado. Procurei este arquivo no computador e encontrei um que provavelmente era da simulação pelo MGB antigo. Porém deve existir algum problema de sintaxe, pois o erro persiste!

O erro diz basinamente o seguinte: end-of-file during read, unit8, file C:\(camiinho do arquivo)

Este é o texto contido no LIMITES.txt

PARAMETRO MINIMO MAXIMO
Wm 50 1000
B 0.001 3.0
Kbas 0.0 20.0
Kint 4.0 40.0
XL 0.67 0.67
CAP 0.0 0.0
Wc 0.1 100

Segue tambem um exemplo do paruso com valores aleatorios

Bacia 1
uso Wm b Kbas Kint XL CAP Wc
solohorB 900.0 0.25 0.00 31.20 0.67 0.00 490
agrvert 900.0 0.25 0.00 31.20 0.67 0.00 490
savansol 900.0 0.25 0.00 31.20 0.67 0.00 490
Agua 0.0 0.25 0.00 31.20 0.67 0.00 490
CS 18
CI 200
CB 1244
QB_M3/SKM2 0.000

Obrigado por sempre responderem minhas perguntas!

Romildo

Romildo Toscano

Mensagens : 5
Data de inscrição : 21/08/2010
Idade : 30
Localização : João Pessoa

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Calibração automática

Mensagem  DCBuarque em Qua Ago 25, 2010 11:25 am

Romildo,

Infelizmente a solução de rodar o modelo direto pelo código fonte para fazer a calibração automática não vai funcionar! Sugiro você aguardar uma versão do modelo com interface para a calibração automática, o que não deverá demorar para sair. De qualquer forma seus hidrogramas não parecem estar ruins (a escala não me permita uma melhor visualização) e a curva de permanência simulada não está tão ruim em relação a observada. Já tentou utilizar as sugestões do Walter para diminuir a vazão calculada pelo modelo durante as estiagens e ver se isso ajustará melhor teus hidrogramas?

Diogo

DCBuarque

Mensagens : 9
Data de inscrição : 21/08/2010
Idade : 37

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Calibração automática

Mensagem  Romildo Toscano em Qua Ago 25, 2010 4:58 pm

Ok Diogo!

Não vou mais tentar a calibração automática. Simplesmente porque não consigo resolver o problema do arquivo limites.txt. Mas Você sabe me dizer por que não vai funcionar?

De qualquer forma eu gostaria muito de tentar pelo Algoritmo Genético. E acho que o programa deveria funcionar! Porém eu não consigo compilar. Estou utilizando o Compaq Visual Fortran Versao 6.1. E não consigo compilar mesmo sem fazer nenhuma alteração no código fonte.
C:\Documents and Settings\Cliente\Desktop\MGB0\HD_Solvemat.f90(2) : Error: Error in opening the Library module file. [VARS]
USE VARS
------------^
C:\Documents and Settings\Cliente\Desktop\MGB0\HD_Solvemat.f90(13) : Error: This name does not have a type, and must have an explicit type. [NMAX]
NAOZERO=NMAX

Qual compilador vocês utilizam? É necessária alguma configuração adicional?

Ah! Sobre meus parâmetros. Wm está em torno de 200, Kbas 0 e b 0.01. Vou responder com mais detalhes no outro tópico outro dia.

Romildo Toscano

Mensagens : 5
Data de inscrição : 21/08/2010
Idade : 30
Localização : João Pessoa

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Calibração automática

Mensagem  Paulo Pontes em Qua Ago 25, 2010 5:22 pm

Romildo

Eu não estou te respondendo com relação ao arquivo de limites.

Mas com relação aos erros que você mostrou acima, tente uma coisa:
Antes de compilar todos os arquivos f90, compile apenas o módulo de variáveis, ou seja VAR (ou é VARS)
Após isso tente rodar novamente. Acredito que esses erros vão sumir e ele vai reconhecer as suas variáveis.

Eu não uso esse compilador. Percebi que na mudança de alguns compiladores para outros, pode haver esse problemas nos "módulos".

Como eu disse, essa é uma resposta relacionada ao problema de compilação. Acho que você tem dois problemas.
Com relação ao outro problema, siga a instrução do Diogo. Espere a interface com calibração para preparar os dados.

Espero que, com relação a compilação, seu problema seja resolvido.

Paulo Rógenes

Paulo Pontes

Mensagens : 16
Data de inscrição : 21/08/2010
Idade : 32
Localização : Porto Alegre, RS

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Limites

Mensagem  marciallima em Ter Nov 23, 2010 6:16 pm

O arquivo "limites.txt" do MGB minibacias pelo que vi é um pouco diferente. Vá no MapWindows MGB na janela "parâmetros para calibração automática" complete as opções e salve o arquivo. Este arquivo será salvo na pasta do seu projeto e terá as informações dos limites entre outras. Faça um arquivo texto "limites.txt" apenas com os limites, contendo: parâmetros, mínimo e máximo; com a mesma separação(espaçamento) das versões anteriores. No exemplo são 4 blocos + água, existem parâmetros individuais para cada bloco. Rodei no fortran. Estou tendo dificuldade na geração do arquivo "evolution.txt". Espero que ajude.
Parâmetro min máx
wm1 240 1440
b1 0.03 0.18
Kbas1 0.3 1.8
Kint1 0.6 3.6
XL1 0.18 1.08
wc1 0.03 0.18
wm2 240 1440
b2 0.03 0.18
Kbas2 0.3 1.8
Kint2 0.6 3.6
XL2 0.18 1.08
wc2 0.03 0.18
wm3 60 360
b3 0.03 0.18
Kbas3 0.3 1.8
Kint3 0.6 3.6
XL3 0.18 1.08
wc3 0.03 0.18
wm4 120 720
b4 0.03 0.18
Kbas4 0.3 1.8
Kint4 0.6 3.6
XL4 0.18 1.08
wc4 0.03 0.18
CS 1 20
CI 50 200
CB 1000 10000

marciallima

Mensagens : 3
Data de inscrição : 28/10/2010

Ver perfil do usuário

Voltar ao Topo Ir em baixo

limites.txt

Mensagem  Mino em Dom Nov 28, 2010 8:51 am

Prezados,

Os comentários abaixo são aplicáveis à versão do código em fortran disponível no site.
Em primeiro lugar, apresentarei alguns detalhes em relação ao arquivo limites.txt (para essa versão!).
Ao final, falarei brevemente de alguns parâmetros na rotina VARS_CALIB que podem ajudar a resolver dificuldades.

*************************************
No arquivo limites.txt, as colunas mínimo e máximo devem conter valores relativos para os parâmetros, em relação ao paruso.hig (ou mgb) original.
Se no arquivo paruso.hig(ou mgb) temos, por exemplo
wm1=200
e tivermos no arquivo de calibração, os limites 240 e 1440 , o modelo vai tentar simular com valores aleatórios gerados entre:
limite inferior: 240*200 = 48000
limite superior: 1440*200 = 288800
Esses valores são muito elevados e, portanto, a calibração automática provavelmente não vai trazer bons resultados.

Um exemplo:
Para tentar valores de wm1 entre 250 e 1500, podemos atribuir wm1=500 no arquivo paruso.hig, e estabelecer limites 0.5 e 3.0, em limites.txt.

A mesma lógica serve para todos os parâmetros.

Além disso, ao montar o arquivo limites, escreva sequencialmente os limites para wm, b, kbas, kint de cada uso. E ao final os parâmetros cs, ci e cb.
Os parâmetros XL, CAP e WC não entram na calibração automática. XL costuma ser fixado em 0.4, podendo variar um pouco.
Exemplo: considerando uma bacia que possui 3 usos a serem calibrados.
PARAMETRO MINIMO MAXIMO
wm1 0.8 3.
wm2 0.5 2.
wm3 0.8 3.
b1 0.05 10.
b2 0.05 10.
b3 0.05 10.
kbas1 0.1 4.
kbas2 0.1 4.
kbas3 0.1 4.
kint1 0.1 3.
kint2 0.1 3.
kint3 0.1 3.
cs 0.2 3.
ci 0.8 4.
cb 0.5 2.

Aos mais curiosos, as linhas abaixo (do código) apresenta como é feita a amostragem aleatória de parâmetros.
PPAR(L,I)=RAN1(ISEED) !Gera um número aleatório entre 0 e 1
PAR(L,I)=PMIN(L)+PPAR(L,I)*(PMAX(L)-PMIN(L)) !Gera um número aleatório entre PMIN e PMAX.

*********************************
Na rotina VARS_CALIB, temos o módulo com as variáveis e parâmetros para calibração automática.
Temos os parâmetros declarados.
INTEGER,PARAMETER:: NPAR=27 !NUMERO DE PARAMETROS DA FUNÇÃO A OTIMIZAR
INTEGER,PARAMETER:: NS=150 !NUMERO DE PONTOS DA AMOSTRA INICIAL
INTEGER,PARAMETER:: NF=3 !NUMERO DE FUNÇÕES OBJETIVO A OTIMIZAR
INTEGER,PARAMETER:: NUCALIB=6 !RP

Alterar os valores de NUCALIB e NPAR devem ajudar a resolver uma série de problemas de leitura do arquivo limites!
NUCALIB é [numero de usos da bacia] - [uso da água]. Lembrando que o uso "água" não se calibra e sempre deve ser o último.
NPAR é [4*NUCALIB + 3]. Porque? São 4 parâmetros calibráveis por uso (wm,b,kbas,kint), vezes o número de usos + 3 parâmetros (cb, ci e cs.)

Exercício: verifique se entendeu a lógica, considerando o arquivo de limites apresentado anteriormente. Qual o valor de NUCALIB e NPAR a utilizar?
Resposta: São 3 usos calibráveis sendo que cada um tem 4 parâmetros (wm, b,kbas,kint). Logo, temos 12 parâmetros de uso a calibrar.
Somando aos 3 parâmetros (cb, ci e cs), temos NPAR=15 e NUCALIB=3


Verifique se o número de linhas de parâmetros no arquivo limites.txt é igual a NPAR!

Abç
Mino
avatar
Mino

Mensagens : 6
Data de inscrição : 30/08/2010

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Calibração automática

Mensagem  Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum