def test_variational_study_optimize_and_extend_and_summary(): numpy.random.seed(63351) study = VariationalStudy( 'study', test_ansatz, test_objective, black_box_type=variational_black_box.XMON_SIMULATE_STATEFUL, target=-10.5) assert len(study.trial_results) == 0 assert study.target == -10.5 # Optimization run 1 result = study.optimize(OptimizationParams(test_algorithm), 'run1') assert len(study.trial_results) == 1 assert isinstance(result, OptimizationTrialResult) assert result.repetitions == 1 # Extend optimization run 1 study.extend_result('run1', repetitions=2) assert study.trial_results['run1'].repetitions == 3 # Optimization run 2 study.optimize(OptimizationParams(test_algorithm), repetitions=2, use_multiprocessing=True) result = study.trial_results[0] assert len(study.trial_results) == 2 assert isinstance(result, OptimizationTrialResult) assert result.repetitions == 2 # Optimization run 3 study.optimize(OptimizationParams(test_algorithm, initial_guess=numpy.array([4.5, 8.8]), initial_guess_array=numpy.array( [[7.2, 6.3], [3.6, 9.8]]), cost_of_evaluate=1.0), reevaluate_final_params=True, save_x_vals=True) result = study.trial_results[1] assert len(study.trial_results) == 3 assert isinstance(result, OptimizationTrialResult) assert result.repetitions == 1 assert all(result.data_frame['optimal_parameters'].apply( lambda x: XmonSimulateVariationalBlackBox(test_ansatz, test_objective). evaluate(x)) == result.data_frame['optimal_value']) assert isinstance(result.results[0].cost_spent, float) # Try extending non-existent run with pytest.raises(KeyError): study.extend_result('run100') # Check that getting a summary works assert str(study).startswith('This study contains')
def test_variational_black_box_evaluate_with_cost(): black_box = XmonSimulateVariationalBlackBox(test_ansatz, test_objective) numpy.testing.assert_allclose( black_box.evaluate_with_cost(test_ansatz.default_initial_params(), 2.0), 0.0) black_box_noisy = XmonSimulateVariationalBlackBox(test_ansatz, test_objective_noisy) numpy.random.seed(33534) noisy_val = black_box_noisy.evaluate_with_cost(numpy.array([0.5, 0.0]), 10.0) assert -0.8 < noisy_val < 1.2
def test_variational_black_box_evaluate(): black_box = XmonSimulateVariationalBlackBox(test_ansatz, test_objective) numpy.testing.assert_allclose( black_box.evaluate(test_ansatz.default_initial_params()), 0.0) numpy.testing.assert_allclose(black_box.evaluate(numpy.array([0.0, 0.5])), 1.0)
def test_variational_black_box_noise_bounds(): black_box = XmonSimulateVariationalBlackBox(test_ansatz, test_objective) assert black_box.noise_bounds(100) == (-numpy.inf, numpy.inf)
def test_variational_black_box_bounds(): black_box = XmonSimulateVariationalBlackBox(test_ansatz, test_objective) assert black_box.bounds == test_study.ansatz.param_bounds()
def test_variational_black_box_dimension(): black_box = XmonSimulateVariationalBlackBox(test_ansatz, test_objective) assert black_box.dimension == 2