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); } }