def test_optimize_variational_circuit_with_proxy_x_squared(self): # Given client = MockedClient(self.ipaddress, self.port, "return_x_squared") params = [4] optimizer = MockOptimizer() # When opt_results = optimize_variational_circuit_with_proxy( params, optimizer, client) # Then self.assertGreater(opt_results["opt_value"].value, 0) self.assertEqual(len(opt_results["opt_params"]), 1)
def test_optimize_variational_circuit_with_proxy_all_zero_line(self): # Given client = MockedClient(self.ipaddress, self.port) params = [0, 0] optimizer = MockOptimizer() # When opt_results = optimize_variational_circuit_with_proxy( params, optimizer, client) # Then self.assertEqual(opt_results["opt_value"].value, 0) self.assertEqual(len(opt_results["opt_params"]), 2)
def test_optimize_variational_circuit_with_proxy_errors(self): client = MockedClient(self.ipaddress, self.port) params = [0] optimizer = MockOptimizer() # self.assertRaises(ValueError, lambda: optimize_variational_circuit_with_proxy( # "Not initial params", optimizer, client)) self.assertRaises(AttributeError, lambda: optimize_variational_circuit_with_proxy( params, "Not an optimizer object", "Not a client")) self.assertRaises(AttributeError, lambda: optimize_variational_circuit_with_proxy( params, optimizer, "Not a client"))
def test_optimize_variational_circuit_with_proxy_x_squared(self): # Given client = MockedClient(self.ipaddress, self.port, "return_x_squared") params = [4] optimizer = MockOptimizer() # When opt_results = optimize_variational_circuit_with_proxy(params, optimizer, client) # Then self.assertGreater(opt_results['opt_value'], 0) self.assertEqual(len(opt_results['opt_params']), 1) self.assertEqual(opt_results['history'], [{'optimization-evaluation-ids': ['MOCKED-ID']}])
def test_optimize_variational_circuit_with_proxy_all_zero_line(self): # Given client = MockedClient(self.ipaddress, self.port) params = [0, 0] optimizer = MockOptimizer() # When opt_results = optimize_variational_circuit_with_proxy(params, optimizer, client) # Then self.assertEqual(opt_results['opt_value'], 0) self.assertEqual(len(opt_results['opt_params']), 2) self.assertEqual(opt_results['history'], [{'optimization-evaluation-ids': ['MOCKED-ID']}])
def test_solve_qp_problem_with_optimizer_throws_error_when_optimizer_does_not_support_constraints( matrix, ): optimizer = MockOptimizer() with pytest.raises(ValueError): solution, optimal_value = solve_qp_problem_with_optimizer( matrix, optimizer)
def optimizer(): optimizer = MockOptimizer() optimizer.constraints = None return optimizer
class MaliciousNestedOptimizer(MockNestedOptimizer): def _minimize( self, cost_function_factory: Callable[[int], CostFunction], initial_params: np.ndarray, keep_history: bool = False, ): keep_history = not keep_history results = super()._minimize(cost_function_factory, initial_params, keep_history=keep_history) del results["nit"] return results _good_nested_optimizer = MockNestedOptimizer(inner_optimizer=MockOptimizer(), n_iters=5) _malicious_nested_optimizer = MaliciousNestedOptimizer( inner_optimizer=MockOptimizer(), n_iters=5) def mock_cost_function_factory(iteration_id: int): def modified_cost_function(params): return mock_cost_function(params)**iteration_id return modified_cost_function @pytest.mark.parametrize("contract", NESTED_OPTIMIZER_CONTRACTS) def test_validate_contracts(contract): assert contract(