@@ -52,11 +52,24 @@ function WavefunctionMC(params::AbstractDict)
5252 N = inputlength (wavefunction)
5353 sigma_dist = get (params, :sigma_distribution , 0.3 )
5454 distribution = get (params, :distribution , S <: Complex ? ComplexNormal (0 , sigma_dist) : Normal (0 , sigma_dist))
55- position = coordinate_proj . (100 * rand (distribution, N))
55+ position = [ coordinate_proj (100 * rand (distribution)) for _ in 1 : N]
5656
5757 observables = get (params, :observables , NoObservables ())
5858 dynamic_pos = get (params, :dynamic_positions , (N, 1 : N))
59- return WavefunctionMC {N} (State (position, 0.0 , coordinate_transf), distribution, coordinate_proj, wavefunction, observables; adapt_interval = div (get (params, :thermalization , 10_000 ), 10 ), dynamic_positions = dynamic_pos)
59+
60+ adapt_interval = get (params, :adapt_interval ,div (get (params, :thermalization , 10_000 ), 10 ))
61+ coordinate_update = get (params, :coordinate_update , CoordinateUpdate ())
62+ target_accept = get (params, :target_accept , optimal_acceptance_rate (coordinate_update))
63+ adaptive = get (params, :adaptive , true )
64+ active_during_run = get (params, :active_during_run , false )
65+ update_distribution = get (params, :update_distribution , (d, adjustment) -> begin
66+ sigma_new = d. σ * Base. exp (- adjustment)
67+ return typeof (d)(d. μ, sigma_new)
68+ end )
69+ adaptor = adaptive ? AcceptanceAdapter (; acceptance_rate = target_accept, adapt_interval = adapt_interval, update_distribution = update_distribution, active_during_run = active_during_run) : NoAcceptanceAdapter ()
70+
71+
72+ return WavefunctionMC {N} (State (position, 0.0 , coordinate_transf), distribution, coordinate_proj, wavefunction, observables; dynamic_positions = dynamic_pos, adaptor = adaptor, coordinate_update = coordinate_update)
6073end
6174
6275function Carlo. write_checkpoint (mc:: WavefunctionMC , out:: HDF5.Group )
0 commit comments