diff options
Diffstat (limited to 'sourcecodes/bnt-master/BNT/inference/@inf_engine')
15 files changed, 111 insertions, 0 deletions
diff --git a/sourcecodes/bnt-master/BNT/inference/@inf_engine/CVS/Entries b/sourcecodes/bnt-master/BNT/inference/@inf_engine/CVS/Entries new file mode 100644 index 00000000..a5ebeece --- /dev/null +++ b/sourcecodes/bnt-master/BNT/inference/@inf_engine/CVS/Entries @@ -0,0 +1,7 @@ +/bnet_from_engine.m/1.1.1.1/Wed May 29 15:59:56 2002// +/get_field.m/1.1.1.1/Wed May 29 15:59:56 2002// +/inf_engine.m/1.1.1.1/Wed May 29 15:59:56 2002// +/marginal_family.m/1.1.1.1/Wed May 29 15:59:56 2002// +/set_fields.m/1.1.1.1/Wed May 29 15:59:56 2002// +/update_engine.m/1.1.1.1/Wed May 29 15:59:56 2002// +D diff --git a/sourcecodes/bnt-master/BNT/inference/@inf_engine/CVS/Entries.Log b/sourcecodes/bnt-master/BNT/inference/@inf_engine/CVS/Entries.Log new file mode 100644 index 00000000..24f16336 --- /dev/null +++ b/sourcecodes/bnt-master/BNT/inference/@inf_engine/CVS/Entries.Log @@ -0,0 +1 @@ +A D/Old//// diff --git a/sourcecodes/bnt-master/BNT/inference/@inf_engine/CVS/Repository b/sourcecodes/bnt-master/BNT/inference/@inf_engine/CVS/Repository new file mode 100644 index 00000000..07b838d4 --- /dev/null +++ b/sourcecodes/bnt-master/BNT/inference/@inf_engine/CVS/Repository @@ -0,0 +1 @@ +FullBNT/BNT/inference/@inf_engine diff --git a/sourcecodes/bnt-master/BNT/inference/@inf_engine/CVS/Root b/sourcecodes/bnt-master/BNT/inference/@inf_engine/CVS/Root new file mode 100644 index 00000000..f3bd14a6 --- /dev/null +++ b/sourcecodes/bnt-master/BNT/inference/@inf_engine/CVS/Root @@ -0,0 +1 @@ +:ext:nsaunier@bnt.cvs.sourceforge.net:/cvsroot/bnt diff --git a/sourcecodes/bnt-master/BNT/inference/@inf_engine/Old/CVS/Entries b/sourcecodes/bnt-master/BNT/inference/@inf_engine/Old/CVS/Entries new file mode 100644 index 00000000..ce1f8c1e --- /dev/null +++ b/sourcecodes/bnt-master/BNT/inference/@inf_engine/Old/CVS/Entries @@ -0,0 +1,3 @@ +/marginal_family_pot.m/1.1.1.1/Wed May 29 15:59:56 2002// +/observed_nodes.m/1.1.1.1/Wed May 29 15:59:56 2002// +D diff --git a/sourcecodes/bnt-master/BNT/inference/@inf_engine/Old/CVS/Repository b/sourcecodes/bnt-master/BNT/inference/@inf_engine/Old/CVS/Repository new file mode 100644 index 00000000..de36d64e --- /dev/null +++ b/sourcecodes/bnt-master/BNT/inference/@inf_engine/Old/CVS/Repository @@ -0,0 +1 @@ +FullBNT/BNT/inference/@inf_engine/Old diff --git a/sourcecodes/bnt-master/BNT/inference/@inf_engine/Old/CVS/Root b/sourcecodes/bnt-master/BNT/inference/@inf_engine/Old/CVS/Root new file mode 100644 index 00000000..f3bd14a6 --- /dev/null +++ b/sourcecodes/bnt-master/BNT/inference/@inf_engine/Old/CVS/Root @@ -0,0 +1 @@ +:ext:nsaunier@bnt.cvs.sourceforge.net:/cvsroot/bnt diff --git a/sourcecodes/bnt-master/BNT/inference/@inf_engine/Old/marginal_family_pot.m b/sourcecodes/bnt-master/BNT/inference/@inf_engine/Old/marginal_family_pot.m new file mode 100644 index 00000000..c1e63710 --- /dev/null +++ b/sourcecodes/bnt-master/BNT/inference/@inf_engine/Old/marginal_family_pot.m @@ -0,0 +1,14 @@ +function pot = marginal_family_pot(engine, i) +% MARGINAL_FAMILY_POT Compute the marginal on i's family and return as a potentila (inf_engine) +% function pot = marginal_family_pot(engine,i) + +% This function is only called by solve_limid. +% It requires that engine's marginal_family function return a potential. +% This is true for jtree_inf_engine, but not for, say, jtree_ndx_inf_engine. +% All limids must be solved using potentials, +% but this is not true for bnets. + +%[m, pot] = marginal_family(engine, i); + +bnet = bnet_from_engine(engine); +[m, pot] = marginal_nodes(engine, family(bnet.dag, i)); diff --git a/sourcecodes/bnt-master/BNT/inference/@inf_engine/Old/observed_nodes.m b/sourcecodes/bnt-master/BNT/inference/@inf_engine/Old/observed_nodes.m new file mode 100644 index 00000000..97fccdb3 --- /dev/null +++ b/sourcecodes/bnt-master/BNT/inference/@inf_engine/Old/observed_nodes.m @@ -0,0 +1,5 @@ +function onodes = observed_nodes(engine) +% OBSERVED_NODES Return nodes that are guaranteed to be observed, indep of evidence (generic inf_engine) +% onodes = observed_nodes(engine) + +onodes = []; diff --git a/sourcecodes/bnt-master/BNT/inference/@inf_engine/bnet_from_engine.m b/sourcecodes/bnt-master/BNT/inference/@inf_engine/bnet_from_engine.m new file mode 100644 index 00000000..cf579fb0 --- /dev/null +++ b/sourcecodes/bnt-master/BNT/inference/@inf_engine/bnet_from_engine.m @@ -0,0 +1,12 @@ +function bnet = bnet_from_engine(engine) +% BNET_FROM_ENGINE Return the bnet structure stored inside the engine (inf_engine) +% bnet = bnet_from_engine(engine) + +bnet = engine.bnet; + +% We cannot write 'engine.bnet' without writing a 'subsref' function, +% since engine is an object with private parts. +% The bnet field should be the only thing external users of the engine should need access to. +% We do not pass bnet as a separate argument, since it could get out of synch with the one +% encoded inside the engine. + diff --git a/sourcecodes/bnt-master/BNT/inference/@inf_engine/get_field.m b/sourcecodes/bnt-master/BNT/inference/@inf_engine/get_field.m new file mode 100644 index 00000000..a1d16335 --- /dev/null +++ b/sourcecodes/bnt-master/BNT/inference/@inf_engine/get_field.m @@ -0,0 +1,15 @@ +function val = get_field(engine, name) +% GET_FIELD Get the value of a named field from a generic engine +% val = get_field(engine, name) +% +% The following fields can be accessed +% +% bnet +% +% e.g., bnet = get_field(engine, 'bnet') + +switch name + case 'bnet', val = engine.bnet; + otherwise, + error(['invalid argument name ' name]); +end diff --git a/sourcecodes/bnt-master/BNT/inference/@inf_engine/inf_engine.m b/sourcecodes/bnt-master/BNT/inference/@inf_engine/inf_engine.m new file mode 100644 index 00000000..f08e2438 --- /dev/null +++ b/sourcecodes/bnt-master/BNT/inference/@inf_engine/inf_engine.m @@ -0,0 +1,6 @@ +function engine = inf_engine(bnet) + +engine.bnet = bnet; +engine = class(engine, 'inf_engine'); + + diff --git a/sourcecodes/bnt-master/BNT/inference/@inf_engine/marginal_family.m b/sourcecodes/bnt-master/BNT/inference/@inf_engine/marginal_family.m new file mode 100644 index 00000000..0107f1d3 --- /dev/null +++ b/sourcecodes/bnt-master/BNT/inference/@inf_engine/marginal_family.m @@ -0,0 +1,24 @@ +function m = marginal_family(engine, i, t) +% MARGINAL_FAMILY Compute the marginal on i's family (inf_engine) +% m = marginal_family(engine, i, t) +% +% t defaults to 1. + +if nargin < 3, t = 1; end + +bnet = bnet_from_engine(engine); +if t==1 + m = marginal_nodes(engine, family(bnet.dag, i)); +else + ss = length(bnet.intra); + fam = family(bnet.dag, i+ss); + if any(fam<=ss) + % i has a parent in the preceeding slice + % Hence the lowest numbered slice containing the family is t-1 + m = marginal_nodes(engine, fam, t-1); + else + % The family all fits inside slice t + % Hence shift the indexes back to slice 1 + m = marginal_nodes(engine, fam-ss, t); + end +end diff --git a/sourcecodes/bnt-master/BNT/inference/@inf_engine/set_fields.m b/sourcecodes/bnt-master/BNT/inference/@inf_engine/set_fields.m new file mode 100644 index 00000000..e75cfa45 --- /dev/null +++ b/sourcecodes/bnt-master/BNT/inference/@inf_engine/set_fields.m @@ -0,0 +1,13 @@ +function engine = set_fields(engine, varargin) +% SET_FIELDS Set the fields for a generic engine +% engine = set_fields(engine, name/value pairs) +% +% e.g., engine = set_fields(engine, 'maximize', 1) + +args = varargin; +nargs = length(args); +for i=1:2:nargs + switch args{i}, + case 'maximize', engine.maximize = args{i+1}; + end +end diff --git a/sourcecodes/bnt-master/BNT/inference/@inf_engine/update_engine.m b/sourcecodes/bnt-master/BNT/inference/@inf_engine/update_engine.m new file mode 100644 index 00000000..afafdeb9 --- /dev/null +++ b/sourcecodes/bnt-master/BNT/inference/@inf_engine/update_engine.m @@ -0,0 +1,7 @@ +function engine = update_engine(engine, newCPDs) +% UPDATE_ENGINE Update the engine to take into account the new parameters (inf_engine). +% engine = update_engine(engine, newCPDs) +% +% This generic method is suitable for engines that do not process the parameters until 'enter_evidence'. + +engine.bnet.CPD = newCPDs; |
