source("bayesserver.R")
# TODO update the following path
networkPath <- "C:/ProgramData/Bayes Server 7.7/Sample Networks/Waste.bayes"
# If you are using a licensed version of Bayes Server, uncomment the following line and enter your license key
# licenseBayesServer("license-key-goes-here")
# create a Bayes Server network class and load from an existing file
network <- new(Network)
network$load(networkPath)
variables <- network$getVariables()
print(variables$size())
# reference some variables and states
filterState <- variables$get("Filter state", TRUE)
filterStateIntact <- filterState$getStates()$get("Intact", TRUE)
dustEmission <- variables$get("Dust emission", TRUE)
wasteType <- variables$get("Waste type", TRUE)
wasteTypeIndustrial <- wasteType$getStates()$get("Industrial", TRUE)
wasteTypeHousehold <- wasteType$getStates()$get("Household", TRUE)
metalsInWaste <- variables$get("Metals in waste", TRUE)
# Create an inference engine (this can be re-used for multiple queries)
factory <- new(RelevanceTreeInferenceFactory)
inference <- factory$createInferenceEngine(network)
queryOptions <- factory$createQueryOptions()
queryOutput <- factory$createQueryOutput()
# Add some queries
queryWasteType <- new(Table, wasteType)
queryMetalsInWaste <- new(CLGaussian, metalsInWaste)
queryDistributions <- inference$getQueryDistributions()
queryDistributions$add(queryWasteType)
queryDistributions$add(queryMetalsInWaste)
# Set some evidence
evidence <- inference$getEvidence()
evidence$setState(filterStateIntact)
evidence$set(dustEmission, new( Double, "3.0"))
# Execute the query
inference$query(queryOptions, queryOutput) # note that this can raise an exception (see help for details)
# Read the results of the query
print(queryWasteType$get(toStateArray(wasteTypeIndustrial)))
print(queryWasteType$get(toStateArray(wasteTypeHousehold)))
print(queryMetalsInWaste$getMean(metalsInWaste))
print(queryMetalsInWaste$getVariance(metalsInWaste))