eliminateAll unit test now works
parent
58ed9ec367
commit
2bd9e890d3
|
@ -2,7 +2,7 @@
|
||||||
% equals
|
% equals
|
||||||
fg = createGaussianFactorGraph();
|
fg = createGaussianFactorGraph();
|
||||||
fg2 = createGaussianFactorGraph();
|
fg2 = createGaussianFactorGraph();
|
||||||
CHECK('equals',fg.equals(fg,fg2));
|
CHECK('equals',fg.equals(fg2,1e-9));
|
||||||
|
|
||||||
%-----------------------------------------------------------------------
|
%-----------------------------------------------------------------------
|
||||||
% error
|
% error
|
||||||
|
@ -10,7 +10,6 @@ cfg = createZeroDelta();
|
||||||
actual = fg.error(cfg);
|
actual = fg.error(cfg);
|
||||||
DOUBLES_EQUAL( 5.625, actual, 1e-9 );
|
DOUBLES_EQUAL( 5.625, actual, 1e-9 );
|
||||||
|
|
||||||
%-----------------------------------------------------------------------
|
|
||||||
%-----------------------------------------------------------------------
|
%-----------------------------------------------------------------------
|
||||||
% eliminate_x1
|
% eliminate_x1
|
||||||
fg = createGaussianFactorGraph();
|
fg = createGaussianFactorGraph();
|
||||||
|
@ -23,31 +22,30 @@ actual = fg.eliminateOne('x2');
|
||||||
|
|
||||||
%-----------------------------------------------------------------------
|
%-----------------------------------------------------------------------
|
||||||
% eliminateAll
|
% eliminateAll
|
||||||
sigma1=.1;
|
sigma1=[.1;.1];
|
||||||
R1 = eye(2);
|
I = eye(2);
|
||||||
|
R1 = I;
|
||||||
d1=[-.1;-.1];
|
d1=[-.1;-.1];
|
||||||
cg1 = GaussianConditional('x1',d1, R1,sigma1);
|
cg1 = GaussianConditional('x1',d1, R1,sigma1);
|
||||||
|
|
||||||
sigma2=0.149071;
|
sigma2=[0.149071; 0.149071];
|
||||||
R2 = eye(2);
|
R2 = I;
|
||||||
A1= -eye(2);
|
A1= -I;
|
||||||
d2=[0; .2];
|
d2=[0; .2];
|
||||||
cg2 = GaussianConditional('l1',d2, R2, 'x1', A1,sigma2);
|
cg2 = GaussianConditional('l1',d2, R2, 'x1', A1,sigma2);
|
||||||
|
|
||||||
sigma3=0.0894427;
|
sigma3=[0.0894427; 0.0894427];
|
||||||
R3 = eye(2);
|
R3 = I;
|
||||||
A21 = [ -.2, 0.0
|
A21 = -0.2*I;
|
||||||
0.0, -.2];
|
A22 = -0.8*I;
|
||||||
A22 = [-.8, 0.0
|
|
||||||
0.0, -.8];
|
|
||||||
d3 =[.2; -.14];
|
d3 =[.2; -.14];
|
||||||
cg3 = GaussianConditional('x2',d3, R3, 'l1', A21, 'x1', A22, sigma3);
|
cg3 = GaussianConditional('x2',d3, R3, 'l1', A21, 'x1', A22, sigma3);
|
||||||
|
|
||||||
expected = GaussianBayesNet;
|
expected = GaussianBayesNet;
|
||||||
expected.push_back(cg1);
|
|
||||||
expected.push_back(cg2);
|
|
||||||
expected.push_back(cg3);
|
expected.push_back(cg3);
|
||||||
expected.print('expected');
|
expected.push_back(cg2);
|
||||||
|
expected.push_back(cg1);
|
||||||
|
|
||||||
% Check one ordering
|
% Check one ordering
|
||||||
fg1 = createGaussianFactorGraph();
|
fg1 = createGaussianFactorGraph();
|
||||||
ord1 = Ordering;
|
ord1 = Ordering;
|
||||||
|
@ -55,8 +53,7 @@ ord1.push_back('x2');
|
||||||
ord1.push_back('l1');
|
ord1.push_back('l1');
|
||||||
ord1.push_back('x1');
|
ord1.push_back('x1');
|
||||||
actual1 = fg1.eliminate_(ord1);
|
actual1 = fg1.eliminate_(ord1);
|
||||||
actual1.print('actual');
|
CHECK('eliminateAll', actual1.equals(expected,1e-5));
|
||||||
%CHECK('eliminateAll', actual1.equals(expected));
|
|
||||||
|
|
||||||
%-----------------------------------------------------------------------
|
%-----------------------------------------------------------------------
|
||||||
% matrix
|
% matrix
|
||||||
|
@ -69,3 +66,19 @@ ord.push_back('x1');
|
||||||
|
|
||||||
A = fg.matrix(ord);
|
A = fg.matrix(ord);
|
||||||
|
|
||||||
|
%-----------------------------------------------------------------------
|
||||||
|
% gradientDescent
|
||||||
|
|
||||||
|
% Expected solution
|
||||||
|
fg = createGaussianFactorGraph();
|
||||||
|
expected = fg.optimize_(ord); % destructive
|
||||||
|
|
||||||
|
% Do gradient descent
|
||||||
|
% fg2 = createGaussianFactorGraph();
|
||||||
|
% zero = createZeroDelta();
|
||||||
|
% actual = fg2.gradientDescent(zero);
|
||||||
|
% CHECK(assert_equal(expected,actual,1e-2));
|
||||||
|
|
||||||
|
% Do conjugate gradient descent
|
||||||
|
% actual2 = fg2.conjugateGradientDescent(zero);
|
||||||
|
% CHECK(assert_equal(expected,actual2,1e-2));
|
||||||
|
|
Loading…
Reference in New Issue