Synced two examples
							parent
							
								
									064f17b369
								
							
						
					
					
						commit
						312ba5fd52
					
				|  | @ -81,7 +81,7 @@ HybridGaussianFactorGraph createHybridGaussianFactorGraph( | |||
|     // Create a deterministic set of measurements:
 | ||||
|     HybridValues values{{}, {{M(0), 0}}}; | ||||
|     for (int i = 0; i < num_measurements; i++) { | ||||
|       values.insert(Z(i), Vector1(5.0 + 1.0 * i)); | ||||
|       values.insert(Z(i), Vector1(5.0 + 0.1 * i)); | ||||
|     } | ||||
|     return convertBayesNet(bayesNet, values); | ||||
|   } else { | ||||
|  |  | |||
|  | @ -110,7 +110,7 @@ class TestHybridGaussianFactorGraph(GtsamTestCase): | |||
|                                     [conditional0, conditional1]) | ||||
| 
 | ||||
|         # Create prior on X(0). | ||||
|         prior_on_x0 = GaussianConditional.FromMeanAndStddev(X(0), [5.0], 5.0) | ||||
|         prior_on_x0 = GaussianConditional.FromMeanAndStddev(X(0), [5.0], 0.5) | ||||
|         bayesNet.addGaussian(prior_on_x0) | ||||
| 
 | ||||
|         # Add prior on mode. | ||||
|  | @ -203,8 +203,14 @@ class TestHybridGaussianFactorGraph(GtsamTestCase): | |||
|         sample: HybridValues = bayesNet.sample() | ||||
|         # print(sample) | ||||
| 
 | ||||
|         # Deterministic measurements: | ||||
|         deterministic = gtsam.VectorValues() | ||||
|         deterministic.insert(Z(0), [5.0]) | ||||
|         deterministic.insert(Z(1), [5.1]) | ||||
|         sample.update(deterministic) | ||||
| 
 | ||||
|         # Estimate marginals using importance sampling. | ||||
|         marginals = self.estimate_marginals(bayesNet, sample) | ||||
|         marginals = self.estimate_marginals(bayesNet, sample, N=10000) | ||||
|         print(f"True mode: {sample.atDiscrete(M(0))}") | ||||
|         print(f"P(mode=0; z0, z1) = {marginals[0]}") | ||||
|         print(f"P(mode=1; z0, z1) = {marginals[1]}") | ||||
|  | @ -220,11 +226,20 @@ class TestHybridGaussianFactorGraph(GtsamTestCase): | |||
| 
 | ||||
|         # Create measurements from the sample. | ||||
|         measurements = self.measurements(sample, [0, 1]) | ||||
|         print(measurements) | ||||
| 
 | ||||
|         # Calculate ratio between Bayes net probability and the factor graph: | ||||
|         expected_ratio = self.calculate_ratio(bayesNet, fg, sample) | ||||
|         # print(f"expected_ratio: {expected_ratio}\n") | ||||
| 
 | ||||
|         # Print conditional and factor values side by side: | ||||
|         print("\nConditional and factor values:") | ||||
|         for i in range(4): | ||||
|             print(f"Conditional {i}:") | ||||
|             print(bayesNet.at(i).error(sample)) | ||||
|             print(f"Factor {i}:") | ||||
|             print(fg.at(i).error(sample)) | ||||
| 
 | ||||
|         # Check with a number of other samples. | ||||
|         for i in range(10): | ||||
|             other = bayesNet.sample() | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue