pytc.vmc.optimization.optimize¶
- pytc.vmc.optimization.optimize(ansatz, cost_fn=None, n_walkers=100, n_steps=1000, step_size=1.0, burn_in_steps=1000, use_importance_sampling=False, initial_walkers=None, key=None, n_opt_steps=100, max_vmap_batch_size=0, learning_rate=0.01, optimizer_type='adam', opt_kwargs=None, params=None, frozen_params=None, move_type='one', use_custom_jvp=True, adaptive_step_size=True, step_size_adjust_interval=10, save_frequency=100, save_path=None)[source]¶
Perform wavefunction optimization using MCMC sampling.
- Parameters:
ansatz – Wavefunction object with __call__ method that returns ψ(R)
cost_fn – Cost function (defaults to average local energy if None)
n_walkers (int) – Number of parallel walkers
n_steps (int) – Number of MCMC steps for each walker in each opt iteration
step_size (float) – Standard deviation of Gaussian proposal for MCMC
burn_in_steps (int) – Number of initial MCMC steps to discard (equilibration)
use_importance_sampling (bool) – Whether to use importance sampling with drift
thinning – Keep only every thinning steps to reduce autocorrelation
n_samples – If provided, collect this many uncorrelated samples
initial_walkers – Optional initial positions, otherwise initialized near nuclei
key – PRNG key
n_opt_steps (int) – Number of optimization steps
max_vmap_batch_size (int) – If 0, use standard vmap. If >0, use folx.batched_vmap with the given batch size for memory efficiency. Recommended: 10-50
learning_rate (float) – Learning rate for optimizer
optimizer_type (str) – Type of optimizer (“adam”, “sgd”, etc.)
opt_kwargs (Dict[str, Any] | None) – Additional optimizer parameters
jastrow_params – Initial Jastrow parameters
linear_coeffs – Initial linear coefficients
move_type (str)
use_custom_jvp (bool)
adaptive_step_size (bool)
step_size_adjust_interval (int)
save_frequency (int)
save_path (str | None)
- Returns:
Dictionary with optimization results and statistics
- Return type:
Dict[str, Any]