def test_GetSetWeightingFactor(self): options = libUnfitPython.Options() self.assertAlmostEqual(0.8, options.GetWeightingFactor(), test_tol) options.SetWeightingFactor(0.5) self.assertAlmostEqual(0.5, options.GetWeightingFactor(), test_tol) options.ResetOptions() self.assertAlmostEqual(0.8, options.GetWeightingFactor(), test_tol)
def test_NelderMeadAlphaBetaDeltaGamma(self): options = libUnfitPython.Options() alpha, beta, delta, gamma = options.GetNelderMeadStepSizes() # Check the defaults self.assertAlmostEqual(1.0, alpha, test_tol) self.assertAlmostEqual(2.0, beta, test_tol) self.assertAlmostEqual(0.5, delta, test_tol) self.assertAlmostEqual(0.5, gamma, test_tol) # Set some different values and check they are set options.SetNelderMeadStepSizes(1.1, 2.1, 0.6, 0.4) alpha, beta, delta, gamma = options.GetNelderMeadStepSizes() self.assertAlmostEqual(1.1, alpha, test_tol) self.assertAlmostEqual(2.1, beta, test_tol) self.assertAlmostEqual(0.6, delta, test_tol) self.assertAlmostEqual(0.4, gamma, test_tol) # Rest and check they are reset options.ResetOptions() alpha, beta, delta, gamma = options.GetNelderMeadStepSizes() self.assertAlmostEqual(1.0, alpha, test_tol) self.assertAlmostEqual(2.0, beta, test_tol) self.assertAlmostEqual(0.5, delta, test_tol) self.assertAlmostEqual(0.5, gamma, test_tol)
def test_GetSetUseHardBounds(self): options = libUnfitPython.Options() self.assertFalse(options.GetUseHardBounds()) options.SetUseHardBounds(True) self.assertTrue(options.GetUseHardBounds()) options.ResetOptions() self.assertFalse(options.GetUseHardBounds())
def test_GetSetUseMultiThreaded(self): options = libUnfitPython.Options() self.assertFalse(options.GetUseMultiThreaded()) options.SetUseMultiThreaded(True) self.assertTrue(options.GetUseMultiThreaded()) options.ResetOptions() self.assertFalse(options.GetUseMultiThreaded())
def test_GetSetStrategy(self): options = libUnfitPython.Options() self.assertEqual(1, options.GetStrategy()) options.SetStrategy(5) self.assertEqual(5, options.GetStrategy()) options.ResetOptions() self.assertEqual(1, options.GetStrategy())
def test_GetSetAddInitialToPopulation(self): options = libUnfitPython.Options() self.assertFalse(options.GetAddInitialToPopulation()) options.SetAddInitialToPopulation(True) self.assertTrue(options.GetAddInitialToPopulation()) options.ResetOptions() self.assertFalse(options.GetAddInitialToPopulation())
def test_GetSetRandomSeed(self): options = libUnfitPython.Options() self.assertEqual(0, options.GetRandomSeed()) options.SetRandomSeed(10) self.assertEqual(10, options.GetRandomSeed()) options.ResetOptions() self.assertEqual(0, options.GetRandomSeed())
def test_GetSetPopulationSize(self): options = libUnfitPython.Options() self.assertEqual(20, options.GetPopulationSize()) options.SetPopulationSize(10) self.assertEqual(10, options.GetPopulationSize()) options.ResetOptions() self.assertEqual(20, options.GetPopulationSize())
def test_SimulatedAnnealingParameters(self): options = libUnfitPython.Options() # Check the defaults self.assertAlmostEqual(1000.0, options.GetTemperature(), test_tol) self.assertAlmostEqual(0.9, options.GetStepReductionFactor(), test_tol) self.assertAlmostEqual(0.5, options.GetTemperatureReductionFactor(), test_tol) self.assertEqual(20, options.GetNumberOfCycles()) self.assertEqual(5, options.GetNumberOfTemperatureLoops()) # Set non-default values to parameters options.SetTemperature(373.0) options.SetStepReductionFactor(0.8) options.SetTemperatureReductionFactor(0.8) options.SetNumberOfCycles(10) options.SetNumberOfTemperatureLoops(10) self.assertAlmostEqual(373.0, options.GetTemperature(), test_tol) self.assertAlmostEqual(0.8, options.GetStepReductionFactor(), test_tol) self.assertAlmostEqual(0.8, options.GetTemperatureReductionFactor(), test_tol) self.assertEqual(10, options.GetNumberOfCycles()) self.assertEqual(10, options.GetNumberOfTemperatureLoops()) # Reset and check for parameters' default values options.ResetOptions() self.assertAlmostEqual(1000.0, options.GetTemperature(), test_tol) self.assertAlmostEqual(0.9, options.GetStepReductionFactor(), test_tol) self.assertAlmostEqual(0.5, options.GetTemperatureReductionFactor(), test_tol) self.assertEqual(20, options.GetNumberOfCycles()) self.assertEqual(5, options.GetNumberOfTemperatureLoops())
def test_GetSetOutputLevel(self): options = libUnfitPython.Options() self.assertEqual(options.GetOutputLevel(), 0) options.SetOutputLevel(1) self.assertEqual(options.GetOutputLevel(), 1) options.SetOutputLevel(5) self.assertEqual(options.GetOutputLevel(), 5) options.ResetOptions() self.assertEqual(options.GetOutputLevel(), 0)
def test_GetSetCostNormType(self): options = libUnfitPython.Options() self.assertEqual(options.GetCostNormType(), 2) options.SetCostNormType(1) self.assertEqual(options.GetCostNormType(), 1) options.SetCostNormType(0) self.assertEqual(options.GetCostNormType(), 2) options.SetCostNormType(3) self.assertEqual(options.GetCostNormType(), 2) options.ResetOptions() self.assertEqual(options.GetCostNormType(), 2)
def test_GetSetUseAdaptive(self): options = libUnfitPython.Options() self.assertFalse(options.GetUseAdaptiveParameters()) options.SetUseAdaptiveParameters(True) self.assertTrue(options.GetUseAdaptiveParameters()) options.SetUseAdaptiveParameters(False) self.assertFalse(options.GetUseAdaptiveParameters()) options.SetUseAdaptiveParameters(True) self.assertTrue(options.GetUseAdaptiveParameters()) options.ResetOptions() self.assertFalse(options.GetUseAdaptiveParameters())
def test_GetSetMaximumIterations(self): options = libUnfitPython.Options() self.assertEqual(options.GetMaxIterations(), 10000) options.SetMaxIterations(10) self.assertEqual(options.GetMaxIterations(), 10) options.SetMaxIterations(5000000) self.assertEqual(options.GetMaxIterations(), 5000000) options.SetMaxIterations(0) self.assertEqual(options.GetMaxIterations(), 0) options.ResetOptions() self.assertEqual(options.GetMaxIterations(), 10000)
def test_GetSetElitism(self): options = libUnfitPython.Options() self.assertEqual(1, options.GetElitism()) # Valid (default population size is 20) options.SetElitism(5) self.assertEqual(5, options.GetElitism()) # Invalid (above 20 = ignored) options.SetElitism(25) self.assertEqual(5, options.GetElitism()) options.ResetOptions() self.assertEqual(1, options.GetElitism())
def test_GetSetTau(self): options = libUnfitPython.Options() # Check the default self.assertAlmostEqual(1e-3, options.GetTau(), test_tol) # Try to set an invalid value, should be ignored options.SetTau(-1.0) self.assertAlmostEqual(1e-3, options.GetTau(), test_tol) # Try to set a valid value options.SetTau(1.0) self.assertAlmostEqual(1.0, options.GetTau(), test_tol) # Try a reset, should go back to default options.ResetOptions() self.assertAlmostEqual(1e-3, options.GetTau(), test_tol)
def test_GetSetSurvivalRate(self): options = libUnfitPython.Options() self.assertAlmostEqual(0.5, options.GetSurvivalRate(), test_tol) # Within valid range options.SetSurvivalRate(0.9) self.assertAlmostEqual(0.9, options.GetSurvivalRate(), test_tol) # Below valid range options.SetSurvivalRate(-1.0) self.assertAlmostEqual(0.0, options.GetSurvivalRate(), test_tol) # Above valid range options.SetSurvivalRate(1.5) self.assertAlmostEqual(1.0, options.GetSurvivalRate(), test_tol) options.ResetOptions() self.assertAlmostEqual(0.5, options.GetSurvivalRate(), test_tol)
def test_GetSetTolerances(self): options = libUnfitPython.Options() self.assertAlmostEqual(1e-12, options.GetCostTolerance(), test_tol) self.assertAlmostEqual(1e-8, options.GetDegenerateTolerance(), test_tol) self.assertAlmostEqual(1e-4, options.GetGeometricTolerance(), test_tol) # Check allowed changes work options.SetCostTolerance(1e-16) options.SetDegenerateTolerance(1e-12) options.SetGeometricTolerance(1e-8) self.assertAlmostEqual(1e-16, options.GetCostTolerance(), test_tol) self.assertAlmostEqual(1e-12, options.GetDegenerateTolerance(), test_tol) self.assertAlmostEqual(1e-8, options.GetGeometricTolerance(), test_tol) # Check invalid changes do nothing options.SetCostTolerance(0.0) options.SetDegenerateTolerance(0.0) options.SetGeometricTolerance(0.0) self.assertAlmostEqual(1e-16, options.GetCostTolerance(), test_tol) self.assertAlmostEqual(1e-12, options.GetDegenerateTolerance(), test_tol) self.assertAlmostEqual(1e-8, options.GetGeometricTolerance(), test_tol) options.SetCostTolerance(-1e-16) options.SetDegenerateTolerance(-1e-12) options.SetGeometricTolerance(-1e-8) self.assertAlmostEqual(1e-16, options.GetCostTolerance(), test_tol) self.assertAlmostEqual(1e-12, options.GetDegenerateTolerance(), test_tol) self.assertAlmostEqual(1e-8, options.GetGeometricTolerance(), test_tol) # Check reset works options.ResetOptions() self.assertAlmostEqual(1e-12, options.GetCostTolerance(), test_tol) self.assertAlmostEqual(1e-8, options.GetDegenerateTolerance(), test_tol) self.assertAlmostEqual(1e-4, options.GetGeometricTolerance(), test_tol)
def test_AlphaBetaDeltaGamma(self): options = libUnfitPython.Options() # Check the defaults self.assertAlmostEqual(1.0, options.GetAlpha(), test_tol) self.assertAlmostEqual(2.0, options.GetBeta(), test_tol) self.assertAlmostEqual(0.5, options.GetDelta(), test_tol) self.assertAlmostEqual(0.5, options.GetGamma(), test_tol) # Set some different values and check they are set options.SetAlpha(1.1) options.SetBeta(2.1) options.SetDelta(0.6) options.SetGamma(0.4) self.assertAlmostEqual(1.1, options.GetAlpha(), test_tol) self.assertAlmostEqual(2.1, options.GetBeta(), test_tol) self.assertAlmostEqual(0.6, options.GetDelta(), test_tol) self.assertAlmostEqual(0.4, options.GetGamma(), test_tol) options.ResetOptions() self.assertAlmostEqual(1.0, options.GetAlpha(), test_tol) self.assertAlmostEqual(2.0, options.GetBeta(), test_tol) self.assertAlmostEqual(0.5, options.GetDelta(), test_tol) self.assertAlmostEqual(0.5, options.GetGamma(), test_tol)
def test_NelderMeadAlphaBetaDeltaGammaConstraints(self): options = libUnfitPython.Options() alpha, beta, delta, gamma = options.GetNelderMeadStepSizes() # Check the defaults self.assertAlmostEqual(1.0, alpha, test_tol) self.assertAlmostEqual(2.0, beta, test_tol) self.assertAlmostEqual(0.5, delta, test_tol) self.assertAlmostEqual(0.5, gamma, test_tol) # Gamma too high (>=1) or too low (<=0) should result in no changes options.SetNelderMeadStepSizes(1.0, 2.0, 0.5, 0.0) alpha, beta, delta, gamma = options.GetNelderMeadStepSizes() self.assertAlmostEqual(1.0, alpha, test_tol) self.assertAlmostEqual(2.0, beta, test_tol) self.assertAlmostEqual(0.5, delta, test_tol) self.assertAlmostEqual(0.5, gamma, test_tol) options.SetNelderMeadStepSizes(1.0, 2.0, 0.5, -1.0) alpha, beta, delta, gamma = options.GetNelderMeadStepSizes() self.assertAlmostEqual(1.0, alpha, test_tol) self.assertAlmostEqual(2.0, beta, test_tol) self.assertAlmostEqual(0.5, delta, test_tol) self.assertAlmostEqual(0.5, gamma, test_tol) options.SetNelderMeadStepSizes(1.0, 2.0, 0.5, 1.0) alpha, beta, delta, gamma = options.GetNelderMeadStepSizes() self.assertAlmostEqual(1.0, alpha, test_tol) self.assertAlmostEqual(2.0, beta, test_tol) self.assertAlmostEqual(0.5, delta, test_tol) self.assertAlmostEqual(0.5, gamma, test_tol) options.SetNelderMeadStepSizes(1.0, 2.0, 0.5, 2.0) alpha, beta, delta, gamma = options.GetNelderMeadStepSizes() self.assertAlmostEqual(1.0, alpha, test_tol) self.assertAlmostEqual(2.0, beta, test_tol) self.assertAlmostEqual(0.5, delta, test_tol) self.assertAlmostEqual(0.5, gamma, test_tol) # Delta too high (>=1) or too low (<=0) should result in no changes options.SetNelderMeadStepSizes(1.0, 2.0, 0.0, 0.5) alpha, beta, delta, gamma = options.GetNelderMeadStepSizes() self.assertAlmostEqual(1.0, alpha, test_tol) self.assertAlmostEqual(2.0, beta, test_tol) self.assertAlmostEqual(0.5, delta, test_tol) self.assertAlmostEqual(0.5, gamma, test_tol) options.SetNelderMeadStepSizes(1.0, 2.0, -1.0, 0.5) alpha, beta, delta, gamma = options.GetNelderMeadStepSizes() self.assertAlmostEqual(1.0, alpha, test_tol) self.assertAlmostEqual(2.0, beta, test_tol) self.assertAlmostEqual(0.5, delta, test_tol) self.assertAlmostEqual(0.5, gamma, test_tol) options.SetNelderMeadStepSizes(1.0, 2.0, 1.0, 0.5) alpha, beta, delta, gamma = options.GetNelderMeadStepSizes() self.assertAlmostEqual(1.0, alpha, test_tol) self.assertAlmostEqual(2.0, beta, test_tol) self.assertAlmostEqual(0.5, delta, test_tol) self.assertAlmostEqual(0.5, gamma, test_tol) options.SetNelderMeadStepSizes(1.0, 2.0, 2.0, 0.5) alpha, beta, delta, gamma = options.GetNelderMeadStepSizes() self.assertAlmostEqual(1.0, alpha, test_tol) self.assertAlmostEqual(2.0, beta, test_tol) self.assertAlmostEqual(0.5, delta, test_tol) self.assertAlmostEqual(0.5, gamma, test_tol) # Gamma >= alpha should result in no changes options.SetNelderMeadStepSizes(0.5, 2.0, 0.5, 0.5) alpha, beta, delta, gamma = options.GetNelderMeadStepSizes() self.assertAlmostEqual(1.0, alpha, test_tol) self.assertAlmostEqual(2.0, beta, test_tol) self.assertAlmostEqual(0.5, delta, test_tol) self.assertAlmostEqual(0.5, gamma, test_tol) options.SetNelderMeadStepSizes(0.2, 2.0, 0.5, 0.5) alpha, beta, delta, gamma = options.GetNelderMeadStepSizes() self.assertAlmostEqual(1.0, alpha, test_tol) self.assertAlmostEqual(2.0, beta, test_tol) self.assertAlmostEqual(0.5, delta, test_tol) self.assertAlmostEqual(0.5, gamma, test_tol) # Alpha >= beta should result in no changes options.SetNelderMeadStepSizes(2.0, 2.0, 0.5, 0.5) alpha, beta, delta, gamma = options.GetNelderMeadStepSizes() self.assertAlmostEqual(1.0, alpha, test_tol) self.assertAlmostEqual(2.0, beta, test_tol) self.assertAlmostEqual(0.5, delta, test_tol) self.assertAlmostEqual(0.5, gamma, test_tol) options.SetNelderMeadStepSizes(5.0, 2.0, 0.5, 0.5) alpha, beta, delta, gamma = options.GetNelderMeadStepSizes() self.assertAlmostEqual(1.0, alpha, test_tol) self.assertAlmostEqual(2.0, beta, test_tol) self.assertAlmostEqual(0.5, delta, test_tol) self.assertAlmostEqual(0.5, gamma, test_tol)