added example file to do iterative optimization

This commit is contained in:
titusquah
2020-07-14 17:02:29 -06:00
parent ac8067baf4
commit 159a5c8140
9 changed files with 1304 additions and 44 deletions

59
llepe/objectives.py Normal file
View File

@@ -0,0 +1,59 @@
import numpy as np
import pandas as pd
def lmse_perturbed_obj(predicted_dict,
measured_df,
species_list,
epsilon=1e-100):
meas_aq = np.concatenate([measured_df['{0}_aq_eq'.format(species)].values
for species in species_list])
pred_aq = np.concatenate([
predicted_dict['{0}_aq_eq'.format(species)]
for species in species_list])
meas_d = np.concatenate([measured_df['{0}_d_eq'.format(species)].values
for species in species_list])
pred_d = np.concatenate([
predicted_dict['{0}_d_eq'.format(species)]
for species in species_list])
meas_org = meas_aq * meas_d
pred_org = np.concatenate([
predicted_dict['{0}_org_eq'.format(species)]
for species in species_list])
perturbed_pred_d = (pred_org + epsilon) / (pred_aq + epsilon)
perturbed_meas_d = (meas_org + epsilon) / (meas_aq + epsilon)
log_pred_d = np.log10(perturbed_pred_d)
log_meas_d = np.log10(perturbed_meas_d)
fun4 = (log_meas_d - log_pred_d) ** 2
obj = np.mean(fun4)
return obj
def ind_lmse_perturbed_obj(predicted_dict,
measured_df,
species_list,
epsilon=1e-100):
pred_df = pd.DataFrame(predicted_dict)
objectives = []
for i in range(len(pred_df)):
pred_aq = pred_df[['{0}_aq_eq'.format(species)
for species in species_list]].values[i]
pred_org = pred_df[['{0}_org_eq'.format(species)
for species in species_list]].values[i]
meas_aq = measured_df[['{0}_aq_eq'.format(species)
for species in species_list]].values[i]
meas_d = measured_df[['{0}_d_eq'.format(species)
for species in species_list]].values[i]
meas_org = meas_aq * meas_d
perturbed_pred_d = (pred_org + epsilon) / (pred_aq + epsilon)
perturbed_meas_d = (meas_org + epsilon) / (meas_aq + epsilon)
log_pred_d = np.log10(perturbed_pred_d)
log_meas_d = np.log10(perturbed_meas_d)
fun1 = (log_meas_d - log_pred_d) ** 2
objectives.append(np.mean(fun1))
objectives = np.array(objectives)
return objectives