diff --git a/3SpotEcalc/run_opt.py b/3SpotEcalc/run_opt.py index f70afe5..6b9b352 100644 --- a/3SpotEcalc/run_opt.py +++ b/3SpotEcalc/run_opt.py @@ -6,7 +6,7 @@ from glob import glob import numpy as np -from popt.loop.ensemble import Ensemble +from popt.loop.ensemble import GaussianEnsemble from popt.loop.optimize import Optimize from subsurface.multphaseflow.opm import flow from input_output import read_config @@ -29,7 +29,7 @@ def main(): # Get variables sim = flow(kf) - ensemble = Ensemble(ke, sim, ecalc_npv) + ensemble = GaussianEnsemble(ke, sim, ecalc_npv) x0 = ensemble.get_state() cov = ensemble.get_cov() bounds = ensemble.get_bounds() diff --git a/LinearModel/run_script.py b/LinearModel/run_script.py index 88f6b56..28bf88d 100644 --- a/LinearModel/run_script.py +++ b/LinearModel/run_script.py @@ -50,7 +50,10 @@ Cd = np.diag(assimilation.ensemble.cov_data) else: Cd = assimilation.ensemble.cov_data - dobs = assimilation.ensemble.obs_data_vector + try: + dobs = assimilation.ensemble.obs_data_vector + except: + dobs = assimilation.ensemble.vecObs CxGT = np.dot(Cm, G.T) GCxGT = np.dot(G,CxGT) @@ -64,9 +67,9 @@ Sx_post = np.sqrt(np.diag(Cx_post)) # Plot the results -x_post_ens = assimilation.ensemble.state[param].mean(axis=1) +x_post_ens = assimilation.ensemble.enX.mean(axis=1) Sx_prior = np.sqrt(assimilation.ensemble.prior_info[param]['variance'])*np.ones(x_prior.size) -Sx_post_ens = assimilation.ensemble.state[param].std(ddof=1,axis=1) +Sx_post_ens = assimilation.ensemble.enX.std(ddof=1,axis=1) plt.figure();plt.plot(x_prior,'g');plt.plot(x_post_ens);plt.plot(x_post,'r'); plt.legend(['Prior','Posterior', 'Analytic']); plt.xlabel('Index'); plt.ylabel('State mean'); plt.figure();plt.plot(Sx_prior,'g');plt.plot(Sx_post_ens);plt.plot(Sx_post,'r'); diff --git a/Quadratic/init_optim.toml b/Quadratic/init_optim.toml index 0ece369..684f8cd 100644 --- a/Quadratic/init_optim.toml +++ b/Quadratic/init_optim.toml @@ -26,7 +26,7 @@ tol = 1e-02 alpha = 0.25 alpha_maxiter = 4 resample = 0 -optimizer = 'GA' +optimizer = 'GD' restartsave = true restart = false hessian = false diff --git a/Quadratic/run_opt.py b/Quadratic/run_opt.py index a0c700f..fe0a0cf 100644 --- a/Quadratic/run_opt.py +++ b/Quadratic/run_opt.py @@ -37,7 +37,7 @@ def main(): bounds = ensemble.get_bounds() EnOpt(ensemble.function, x0, args=(cov,), jac=ensemble.gradient, hess=ensemble.hessian, bounds=bounds, **ko) - print('Final state: ' + str(ensemble.get_final_state())) + print('Final state: ' + str(ensemble.get_state())) if __name__ == '__main__':