Ejemplo n.º 1
0
fig.colorbar(p32, ax=ax32)

x_min = a
y_min = a**2
scatter_31 = ax31.scatter(x_min, y_min, color='white')
scatter_32 = ax32.scatter(x_min, y_min, color='white')

####################################################################
# DISPLAY
plt.ion()
plt.show()

for i in range(200):
    # Compute for Simple Convex
    swarm_1.step()
    next(GD_1.gradient_descent(lr=0.1))

    for particle in swarm_1.get_particles():
        ax11.scatter(*particle)

    for particle in GD_1.particle_coordinates:
        ax12.scatter(*particle)

    # Compute for Ratrigin
    swarm_2.step()
    next(GD_2.gradient_descent(lr=0.1))

    for particle in swarm_2.get_particles():
        ax21.scatter(*particle)

    for particle in GD_2.particle_coordinates:
Ejemplo n.º 2
0
    sam = Sampler(omega, numerical_step_length, sys)
    met = Metropolis(step_metropolis, step_importance, num_particles,
                     num_dimensions, sam, 0.0)
    for i in range(monte_carlo_cycles):

        new_energy, new_positions, count = met.metropolis(positions)
        positions = new_positions
        accumulate_energy += sam.local_energy(positions)

        accumulate_psi_term += sys.derivative_psi_term(positions)
        accumulate_both += sam.local_energy_times_wf(positions)

    expec_val_energy = accumulate_energy / (monte_carlo_cycles * num_particles)
    expec_val_psi = accumulate_psi_term / (monte_carlo_cycles * num_particles)
    expec_val_both = accumulate_both / (monte_carlo_cycles * num_particles)

    derivative_energy = 2 * (expec_val_both - expec_val_psi * expec_val_energy)
    print('deri energy = ', derivative_energy)
    print('counter (accepted moves in metropolis) = ', count)
    return derivative_energy, new_energy


for i in range(gradient_iterations):

    d_El, energy = run_vmc(parameter)
    new_parameter = opt.gradient_descent(parameter, d_El)
    parameter = new_parameter
    print('new alpha =  ', new_parameter)
    print('----------------------------')
    print('new energy =  ', energy)