import junbbayes.jprs.jbn.*;
/**
* Title: Exemplo de Uso da API através de um Modo de Texto
* Description: Essa classe feita em JAVA abre um arquivo ".net", "asia.net". Depois esse arquivo é
* carregado, modificado em algumas partes e então compilado. Essa classe tem a função
* de apenas exemplificar como se pode usar a API desenvolvida para trabalhar com
* Redes Bayesianas. O nome da classe responsável por essa exemplificação é ModoTexo.
* No método principal, main, nós começamos criando uma nova Rede. Logo a seguir, nós
* carregamos uma rede existente em arquivo, asia.net, que se encontra no diretório
* /exemplos usando o método carregarRedeNET(). O próximo passo é criar uma variável
* probabilística, auxVP, com a sigla "K", e texto (descrição) "Variável de Teste".
* Então inserimos dois estados nessa variável, "Estado 0" e "Estado 1", com probabilidades
* de 0.99 (99%) e .01 (01%). Depois de definir todos essas características dessa variável
* probabilística, inserimos a mesma na rede que carregamos do arquivo. Pegamos então uma
* variável probabilística existente na rede carregada , auxVP2, que possui a sigla "A" e
* ligamos ela à variável anterior dizendo que auxVP é pai de auxVP2 através de um arco.
* Finalmente verificamos a consistência da rede, moralizamos, triangulamos, e finalmente
* compilamos a árvore de junção criada a partir da rede. Logo em seguida, pegamos as
* evidências da rede, modificamos a evidência de todas para -1 exceto a que for igual a
* variável auxVP onde modificamos para -2. Pegamos as marginais e atualizamos o valor da
* primeira, 0, para 1.0 e da segunda, 1, para 0.8 e por fim atualizamos essas modificações.
* Copyright: Copyright (c) 2001
* Company: UnB - Universidade de Brasília
* @author Rommel Novaes Carvalho
* @author Michael S. Onishi
* @version 1.0
*/
public class ModoTexto {
public static void main(String[] args) {
TRP rede = new TRP();
rede.carregarRedeNET("./exemplos/asia.net");
TVP auxVP = new TVP();
auxVP.setSigla("K");
auxVP.setTexto("Variável de Teste");
auxVP.insereEstado("Estado 0");
auxVP.insereEstado("Estado 1");
TTabPot auxTabPot = new TTabPot();
auxTabPot.porVariavel(auxVP);
auxTabPot.porValor(0, 0.99);
auxTabPot.porValor(1, 0.01);
auxVP.setTabelaPProb(auxTabPot);
rede.adicionaNo(auxVP);
TVP auxVP2 = (TVP)rede.pegarNo("A");
TArco auxArco = new TArco(auxVP, auxVP2);
rede.liga(auxArco);
rede.verificaConsistencia();
rede.moraliza();
rede.triangula();
rede.compilaAJ();
int[] evidencias = new int[rede.noVariaveis()];
for (int i = 0; i < evidencias.length; i++) {
auxVP2 = (TVP)rede.pegarNo(i);
if (auxVP == auxVP2) {
evidencias[i] = -2;
} else {
evidencias[i] = -1;
}
}
auxVP.marginal();
auxVP.getMarginais()[0] = 1.0;
auxVP.getMarginais()[1] = 0.8;
rede.atualizarEvidencias(evidencias);
}
}