a "hY@s0dZddlmZddlmZddifddZdS) a& ******************************************************************************** * Copyright (c) 2025 the Qrisp authors * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at * http://www.eclipse.org/legal/epl-2.0. * * This Source Code may also be made available under the following Secondary * Licenses when the conditions for such availability set forth in the Eclipse * Public License, v. 2.0 are satisfied: GNU General Public License, version 2 * with the GNU Classpath Exception which is * available at https://www.gnu.org/software/classpath/license.html. * * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 ******************************************************************************** )spsa)cobylaCOBYLAcCsL|dkrt|||fi|S|dkr8t|||fi|Std|ddS)ad Minimization of scalar functions of one ore more variables via gradient-free solvers. The API for this function matches SciPy with some minor deviations. * Various optional arguments in the SciPy interface have not yet been implemented. * ``maxiter`` defines the maximum number of iterations to perform and not the maximum number of function evaluations. Parameters ---------- fun : callable The objective function to be minimized, ``fun(x, *args) -> float``, where ``x`` is a 1-D array with shape ``(n,)`` and ``args`` is a tuple of parameters needed to specify the function. x0 : jax.Array Initial guess. Array of real elements of size ``(n,)``, where ``n`` is the number of independent variables. args : tuple Extra arguments passed to the objective function. method : str, optional The solver type. Supported are ``SPSA`` and ``COBYLA``. options : dict, optional A dictionary of solver options. All methods accept the following generic options: * maxiter : int Maximum number of iterations to perform. Depending on the method each iteration may use several function evaluations. Returns ------- results An `OptimizeResults `_ object. Examples -------- We prepare the state .. math:: \ket{\psi_{\theta}} = \cos(\theta)\ket{0} + \sin(\theta)\ket{1} :: from qrisp import QuantumFloat, ry from qrisp.jasp import expectation_value, minimize, jaspify import jax.numpy as jnp def state_prep(theta): qv = QuantumFloat(1) ry(theta[0], qv) return qv Next, we define the objective function calculating the expectation value from the prepared state :: def objective(theta, state_prep): return expectation_value(state_prep, shots=100)(theta) Finally, we use ``optimize`` to find the optimal choice of the parameter $\theta_0$ that minimizes the objective function :: @jaspify(terminal_sampling=True) def main(): x0 = jnp.array([1.0]) return minimize(objective,x0,args=(state_prep,)) results = main() print(results.x) print(results.fun) ZSPSArzOptimization method z" is not available in tracing mode.N)rr Exception)funx0argsmethodoptionsrr]/Users/natalie/Documents/masters/GDP/code/first_try/qrisp/jasp/optimization_tools/optimize.pyminimizesM r N)__doc__"qrisp.jasp.optimization_tools.spsar$qrisp.jasp.optimization_tools.cobylarr rrrr s