# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.

import utils.XMLBIF as XMLBIF

from inference.Query import Query
from inference.EvidenceVariable import EvidenceVariable
from inference.algorithms.variable_elimination.VariableElimination import VariableElimination

network = XMLBIF.load_preset_network('win95pts')

ve = VariableElimination(network)
ve.heuristic = 'min-fill'
ve.mode = 'brief'

# Consultas predefinidas

# Queremos ver la probabilidad de que sea la velocidad de la red la que este haciendo
# que las impresiones sean demasiado lentas sabiendo que la red esta correctamente configurada.

evidence_variable_1 = EvidenceVariable(network.get_node_by_name('Too Slow'), 'Too Long')
evidence_variable_2 = EvidenceVariable(network.get_node_by_name('Network Configuration'), 'Correct')

query = Query(network.get_node_by_name('Net Speed'), [evidence_variable_1, evidence_variable_2])

ve.query = query
ve.run()
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.

import utils.XMLBIF as XMLBIF

from inference.Query import Query
from inference.EvidenceVariable import EvidenceVariable
from inference.algorithms.variable_elimination.VariableElimination import VariableElimination

network = XMLBIF.load_preset_network('simple_diagnosis')

"""
# Consulta predefinida

evidence_variable_1 = EvidenceVariable(network.get_node_by_name('Influenza'), 'T')
evidence_variable_2 = EvidenceVariable(network.get_node_by_name('Fever'), 'F')
evidence_variable_3 = EvidenceVariable(network.get_node_by_name('Wheezing'), 'T')

query = Query(network.get_node_by_name('Smokes'), [evidence_variable_1, evidence_variable_2, evidence_variable_3])
"""

# Consulta aleatoria
query = Query.random(network, 3)

ve = VariableElimination(network)
ve.heuristic = 'min-factor'
ve.mode = 'verbose'
ve.query = query
ve.run()

# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.

import utils.XMLBIF as XMLBIF

from inference.Query import Query
from inference.EvidenceVariable import EvidenceVariable
from inference.algorithms.variable_elimination.VariableElimination import VariableElimination

network = XMLBIF.load_preset_network("fire_alarm")

"""
# Consulta predefinida

evidence_variable_1 = EvidenceVariable(network.get_node_by_name('report'), 'T')
evidence_variable_2 = EvidenceVariable(network.get_node_by_name('tampering'), 'T')

query = Query(network.get_node_by_name('fire'), [evidence_variable_1, evidence_variable_2])
"""

# Consulta aleatoria
query = Query.random(network, 2)

ve = VariableElimination(network)
ve.heuristic = "random"
ve.mode = "verbose"
ve.query = query
ve.run()
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.

import utils.XMLBIF as XMLBIF

from inference.Query import Query
from inference.EvidenceVariable import EvidenceVariable
from inference.algorithms.variable_elimination.VariableElimination import VariableElimination

network = XMLBIF.load_preset_network('electrical_diagnosis')

"""
# Consulta predefinida

evidence_variable_1 = EvidenceVariable(network.get_node_by_name('w2'), 'live')
evidence_variable_2 = EvidenceVariable(network.get_node_by_name('p1'), 'T')

query = Query(network.get_node_by_name('w0'), [evidence_variable_1, evidence_variable_2])
"""

# Consulta aleatoria
query = Query.random(network, 2)

ve = VariableElimination(network)
ve.heuristic = 'min-degree'
ve.mode = 'verbose'
ve.query = query
ve.run()