Record coupled correction benefit cost and nonlinear curvature limits
This commit is contained in:
@@ -182,6 +182,39 @@ class CoupledTrialCheckerTests(unittest.TestCase):
|
||||
def test_exact_mixed_correction_and_provenance(self):
|
||||
self.valid(c.inspect_campaign(self.campaign))
|
||||
|
||||
def test_saved_exact_correction_reports_geometry_without_dividing_by_zero_defect(self):
|
||||
result=c.inspect_case(self.folder);self.valid(result)
|
||||
mechanism=result['trial_outcomes'][0]['correction_mechanism']
|
||||
self.assertAlmostEqual(mechanism['correction_direction_cosine'],1/math.sqrt(3.))
|
||||
self.assertAlmostEqual(mechanism['correction_over_rhs_norm'],1.)
|
||||
self.assertAlmostEqual(mechanism['correction_over_alpha_squared'],10.)
|
||||
self.assertAlmostEqual(mechanism['corrected_displacement_over_outer_step_norm'],math.sqrt(41.))
|
||||
self.assertAlmostEqual(mechanism['effective_direction_projection_t'],13/3)
|
||||
self.assertEqual(mechanism['remainder_before_norm'],10.)
|
||||
self.assertEqual(mechanism['remainder_after_norm'],0.)
|
||||
self.assertEqual(mechanism['remainder_decomposition_error_norm'],0.)
|
||||
self.assertIsNone(mechanism['own_taylor_over_verified_defect'])
|
||||
|
||||
def test_quadratic_correction_separates_linear_defect_from_own_curvature(self):
|
||||
# F(x)=1+x+x^2 at x0=0 has p=-1. At x=-1 the Jacobian
|
||||
# is -1; the inexact c=.98 passes eta=.03 but nearly undoes p.
|
||||
# Its own E=c^2=.9604 dominates the .02 verified linear defect.
|
||||
corrected_x=-.02;corrected_f=1+corrected_x+corrected_x**2
|
||||
mechanism=c.correction_mechanism([0.],[-1.],1.,[0.],[1.],[corrected_x],
|
||||
[corrected_f],[.98],[-1.],[-.98])
|
||||
self.assertAlmostEqual(mechanism['correction_direction_cosine'],-1.)
|
||||
self.assertAlmostEqual(mechanism['correction_over_rhs_norm'],.98)
|
||||
self.assertAlmostEqual(mechanism['corrected_displacement_over_outer_step_norm'],.02)
|
||||
self.assertAlmostEqual(mechanism['effective_direction_projection_t'],.02)
|
||||
self.assertAlmostEqual(mechanism['remainder_after_norm'],.9804)
|
||||
self.assertAlmostEqual(mechanism['verified_linear_defect_norm'],.02)
|
||||
self.assertAlmostEqual(mechanism['own_taylor_remainder_norm'],.9604)
|
||||
self.assertAlmostEqual(mechanism['own_taylor_over_correction_squared'],1.)
|
||||
self.assertAlmostEqual(mechanism['own_taylor_over_verified_defect'],48.02)
|
||||
self.assertAlmostEqual(mechanism['linear_defect_dot_own_taylor'],.019208)
|
||||
self.assertLess(mechanism['remainder_decomposition_error_norm'],1.e-15)
|
||||
json.dumps(mechanism,allow_nan=False)
|
||||
|
||||
def test_failed_verified_gate_is_valid_evidence_but_not_a_correction_success(self):
|
||||
self.make_case('failed_gate');r=c.inspect_case(self.folder);self.valid(r)
|
||||
self.assertFalse(r['trial_outcomes'][0]['aux_verified_gate']);self.assertFalse(r['trial_outcomes'][0]['full_merit_improved'])
|
||||
|
||||
Reference in New Issue
Block a user