Advertisement
heider

function testAS1

Oct 2nd, 2012
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 4.50 KB | None | 0 0
  1. function testAS1
  2.         A = struct('var', [1], 'card', [2], 'val', [0.11, 0.89]);
  3.         B = struct('var', [2, 1], 'card', [2, 2], 'val', [0.59, 0.41, 0.22, 0.78]);
  4.         C = struct('var', [3, 2], 'card', [2, 2], 'val', [0.39, 0.61, 0.06, 0.94]);
  5.  
  6.         X = struct('var', [2, 1], 'card', [2, 3], 'val', [0.5, 0.8, 0.1, 0, 0.3, 0.9]);
  7.         Y = struct('var', [3, 2], 'card', [2, 2], 'val', [0.5, 0.7, 0.1, 0.2]);
  8.        
  9. % Test Factor Product
  10.         fprintf("Test Factor Product\n");
  11.         % Case 1
  12.         PRODUCT1 = struct('var', [1, 2], 'card', [2, 2], 'val', [0.0649, 0.1958, 0.0451, 0.6942]);
  13.         assert(IsFactorEqual(PRODUCT1, FactorProduct(A, B)) == 1, "Result not match!!");
  14.         fprintf("Test case 1: Pass\n");
  15.  
  16.         % Case 2 (as in lecture note)
  17.         PRODUCT2 = struct('var', [1, 2, 3], 'card', [3, 2, 2], 'val', [0.25, 0.05, 0.15, 0.08, 0, 0.09, 0.35, 0.07, 0.21, 0.16, 0, 0.18]);
  18.         assert(IsFactorEqual(PRODUCT2, FactorProduct(X, Y)) == 1, "Result not match!!");
  19.         fprintf("Test case 2: Pass\n");
  20.        
  21. % Test Factor Marginalization
  22.         fprintf("Test Factor Marginalization\n");
  23.         % Case 1
  24.         MARGINALIZATION = struct('var', [1], 'card', [2], 'val', [1 1]);      
  25.         assert(IsFactorEqual(MARGINALIZATION, FactorMarginalization(B, [2])) == 1, "Result not match!!");
  26.         fprintf("Test case 1: Pass\n");
  27.        
  28.         % Case 2 (similar to lecture note, except that the order of variable is different
  29.         %                       hence the order of value in marginalization result factor is also different)
  30.         Z = struct('var', [3, 2, 1], 'card', [2, 2, 3], 'val', [0.25, 0.35, 0.08, 0.16, 0.05, 0.07, 0, 0, 0.15, 0.21, 0.09, 0.18]);
  31.         MARGINALIZATION = struct('var', [1, 3], 'card', [3, 2], 'val', [0.33, 0.05, 0.24, 0.51, 0.07, 0.39]);  
  32.         assert(IsFactorEqual(MARGINALIZATION, FactorMarginalization(Z, [2])) == 1, "Result not match!!");
  33.         fprintf("Test case 2: Pass\n");
  34.  
  35. % Test Observe Evidence
  36.         fprintf("Test Observe Evidence\n");
  37.         % Case 1
  38.         EVIDENCE(1) = struct('var', [1], 'card', [2], 'val', [0.11, 0.89]);
  39.         EVIDENCE(2) = struct('var', [2, 1], 'card', [2, 2], 'val', [0.59, 0, 0.22, 0]);
  40.         EVIDENCE(3) = struct('var', [3, 2], 'card', [2, 2], 'val', [0, 0.61, 0, 0]);  
  41.         RESULTS = ObserveEvidence([A, B, C], [2 1; 3 2]);
  42.         for i=1:3
  43.                 assert(IsFactorEqual(EVIDENCE(i), RESULTS(i)) == 1, "Result not match!!");
  44.         end
  45.         fprintf("Test case 1: Pass\n");
  46.        
  47.         % Case 2 (as in lecture note)
  48.         EVIDENCE = struct('var', [3, 2, 1], 'card', [2, 2, 3], 'val', [0.25, 0, 0.08, 0, 0.05, 0, 0, 0, 0.15, 0, 0.09, 0]);    
  49.         RESULTS = ObserveEvidence([Z], [3 1]);
  50.         assert(IsFactorEqual(EVIDENCE, RESULTS) == 1, "Result not match!!");
  51.         fprintf("Test case 2: Pass\n");
  52.        
  53. % Test Joint Distribution
  54.         fprintf("Test Joint Distribution\n");
  55.         % Case 1
  56.         JOINT = struct('var', [1, 2, 3], 'card', [2, 2, 2], 'val', [0.025311, 0.076362, 0.002706, 0.041652, 0.039589, 0.119438, 0.042394, 0.652548]);  
  57.         assert(IsFactorEqual(JOINT, ComputeJointDistribution([A B C])) == 1, "Result not match!!");
  58.         fprintf("Test case 1: Pass\n");
  59.        
  60.         % Case 2 (as in Question 9 of problem set 1)
  61.         [F, names, valNames] = ConvertNetwork("Q9.net");                        % change your file name accordingly
  62.         JOINT = struct('var', [1, 2, 3], 'card', [2, 2, 2], 'val', [0.8019, 0.0891, 0.0036, 0.0054, 0.0495, 0.0495, 0.0001, 0.0009]);  
  63.         assert(IsFactorEqual(JOINT, ComputeJointDistribution(F)) == 1, "Result not match!!");
  64.         fprintf("Test case 2: Pass\n");
  65.  
  66. % Test Marginal
  67.         fprintf("Test Marginal\n");
  68.         % Case 1
  69.         MARGINAL = struct('var', [2, 3], 'card', [2, 2], 'val', [0.0858, 0.0468, 0.1342, 0.7332]);
  70.         assert(IsFactorEqual(MARGINAL, ComputeMarginal([2, 3], [A B C], [1, 2])) == 1, "Result not match!!");
  71.         fprintf("Test case 1: Pass\n");
  72.  
  73.         % Case 2 (as in Question 9 of problem set 1)
  74.         indxTraffic = 1;
  75.         for i=1:length(names)
  76.                 if (strcmp(names{i}, "Traffic"))
  77.                         indxTraffic = i;
  78.                         break;
  79.                 end
  80.         end
  81.         TRAFFIC = struct('var', [indxTraffic], 'card', [2], 'val', [0.8551, 0.1449]);
  82.         assert(IsFactorEqual(TRAFFIC, ComputeMarginal([indxTraffic], [F], [])) == 1, "Result not match!!");
  83.         fprintf("Test case 2: Pass\n");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement