68 lines
1.5 KiB
Prolog
68 lines
1.5 KiB
Prolog
%%% -*- Mode: Prolog; -*-
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% ProbLog program describing modelling a simplified version of the ALARM network
|
|
% (running example used in the paper [Gutmann et. al, ECML 2011])
|
|
% $Id: alarm.pl 6416 2011-06-10 14:38:44Z bernd $
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% example for parameter learning with LFI-ProbLog
|
|
%
|
|
% training examples are included at the end of the file
|
|
% query ?- do_learning(20).
|
|
% will run 20 iterations of learning with default settings
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
|
|
|
|
:- use_module('../problog').
|
|
:- use_module('../problog_lfi').
|
|
|
|
% uncomment to see what is happening
|
|
:- set_problog_flag(verbosity_learning,5).
|
|
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%%% Probabilistic Facts %
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% the t(_) identifies them as tunable, that is,
|
|
% the probabilities are to be learned
|
|
|
|
t(_) :: burglary.
|
|
t(_) :: earthquake.
|
|
t(_) :: hears_alarm(_Person).
|
|
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%%% Background Knowledge %
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% the background knowledge, read as myclause(Head,Body)
|
|
% clauses are assumed to be range-restricted
|
|
|
|
myclause(person(mary), true).
|
|
myclause(person(john), true).
|
|
myclause(alarm, burglary).
|
|
myclause(alarm, earthquake).
|
|
myclause(calls(Person), (person(Person),alarm,hears_alarm(Person))).
|
|
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%%% Training examples %
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
example(1).
|
|
example(2).
|
|
|
|
%%%% Example 1
|
|
known(1,alarm,true).
|
|
|
|
%%%% Example 2
|
|
known(2,earthquake,false).
|
|
known(2,calls(mary),true).
|
|
|