From 2b3e70b3b6ab2a6c032a050e515fa04a0aa7eeeb Mon Sep 17 00:00:00 2001 From: thkim Date: Tue, 23 Dec 2025 15:23:32 +0900 Subject: [PATCH] . --- 20240119_backup/controller.py | 215 +++++ .../settle_prediction_steps_main.py | 777 ++++++++++++++++++ ...ttle_prediction_steps_main.cpython-310.pyc | Bin 0 -> 4883 bytes ...ttle_prediction_steps_main.cpython-311.pyc | Bin 0 -> 9246 bytes ...ettle_prediction_steps_main.cpython-38.pyc | Bin 0 -> 10652 bytes ...ettle_prediction_steps_main.cpython-39.pyc | Bin 0 -> 7883 bytes controller.py | 185 +++-- error_analysis.zip | Bin 0 -> 17273 bytes error_multi_step.csv | 273 ++++++ error_overall.csv | 273 ++++++ settle_prediction_steps_main.py | 441 +--------- 11 files changed, 1673 insertions(+), 491 deletions(-) create mode 100644 20240119_backup/controller.py create mode 100644 20240119_backup/settle_prediction_steps_main.py create mode 100644 __pycache__/settle_prediction_steps_main.cpython-310.pyc create mode 100644 __pycache__/settle_prediction_steps_main.cpython-311.pyc create mode 100644 __pycache__/settle_prediction_steps_main.cpython-38.pyc create mode 100644 __pycache__/settle_prediction_steps_main.cpython-39.pyc create mode 100644 error_analysis.zip create mode 100644 error_multi_step.csv create mode 100644 error_overall.csv diff --git a/20240119_backup/controller.py b/20240119_backup/controller.py new file mode 100644 index 0000000..0dc383b --- /dev/null +++ b/20240119_backup/controller.py @@ -0,0 +1,215 @@ +""" +Title: Controller +Developer: +Sang Inn Woo, Ph.D. @ Incheon National University +Starting Date: 2022-11-10 +""" +import psycopg2 as pg2 +import sys +import numpy as np +import settle_prediction_steps_main +import matplotlib.pyplot as plt +import pdb; +''' +apptb_surset01 +cons_code: names of monitoring points + +apptb_surset02 +cons_code: names of monitoring points +amount_cum_sub: accumulated settlement +fill_height: height of surcharge fill +nod: number of date +''' + +def settlement_prediction(business_code, cons_code): + + # connect the database + #connection = pg2.connect("host=localhost dbname=sgis user=postgres password=postgres port=5434") # local + connection = pg2.connect("host=192.168.10.172 dbname=sgis_new user=sgis password=sgis port=5432") # ICTWay internal + + # set cursor + cursor = connection.cursor() + + # select monitoring data for the monitoring point + postgres_select_query = """SELECT (amount_cum_sub * -1), fill_height, nod FROM apptb_surset02 WHERE business_code='""" + business_code \ + + """' and cons_code='""" + cons_code + """' ORDER BY nod ASC""" + cursor.execute(postgres_select_query) + monitoring_record = cursor.fetchall() + # initialize time, surcharge, and settlement lists + time = [] + surcharge = [] + settlement = [] + + # fill lists + + for row in monitoring_record: + settlement.append(float(row[0])) + surcharge.append(float(row[1])) + time.append(float(row[2])) + + # convert lists to np arrays + settlement = np.array(settlement) + surcharge = np.array(surcharge) + time = np.array(time) + + # run the settlement prediction and get results + results = settle_prediction_steps_main.run_settle_prediction(point_name=cons_code, np_time=time, + np_surcharge=surcharge, np_settlement=settlement, + final_step_predict_percent=90, + additional_predict_percent=300, plot_show=False, + print_values=False, run_original_hyperbolic=True, + run_nonlinear_hyperbolic=True, + run_weighted_nonlinear_hyperbolic=True, + run_asaoka=True, run_step_prediction=True, + asaoka_interval=3) + + + # prediction method code + # 1: original hyperbolic method (쌍곡선법) + # 2: nonlinear hyperbolic method (비선형 쌍곡선법) + # 3: weighted nonlinear hyperbolic method (가중 비선형 쌍곡선법) + # 4: Asaoka method (아사오카법) + # 5: Step loading (단계성토 고려법) + + + ''' + time_hyper, sp_hyper_original, + time_hyper, sp_hyper_nonlinear, + time_hyper, sp_hyper_weight_nonlinear, + time_asaoka, sp_asaoka, + time[step_start_index[0]:], -sp_step[step_start_index[0]:], + ''' + + for i in range(5): + + # if there are prediction data for the given data point, delete it first + postgres_delete_query = """DELETE FROM apptb_pred02_no""" + str(i + 1) \ + + """ WHERE business_code='""" + business_code \ + + """' and cons_code='""" + cons_code + """'""" + cursor.execute(postgres_delete_query) + connection.commit() + + # get time and settlement arrays + time = results[2 * i] + predicted_settlement = results[2 * i + 1] + + # for each prediction time + for j in range(len(time)): + + # construct insert query + postgres_insert_query \ + = """INSERT INTO apptb_pred02_no""" + str(i + 1) + """ """ \ + + """(business_code, cons_code, prediction_progress_days, predicted_settlement, prediction_method) """ \ + + """VALUES (%s, %s, %s, %s, %s)""" + + # set data to insert + record_to_insert = (business_code, cons_code, time[j], predicted_settlement[j], i + 1) + + # execute the insert query + cursor.execute(postgres_insert_query, record_to_insert) + + # commit changes + connection.commit() + + +def read_database_and_plot(business_code, cons_code): + + # connect the database + # connection = pg2.connect("host=localhost dbname=postgres user=postgres password=lab36981 port=5432") + connection = pg2.connect("host=192.168.0.72 dbname=sgis user=sgis password=sgis port=5432") # ICTWay internal + + # set cursor + cursor = connection.cursor() + + # select monitoring data for the monitoring point + postgres_select_query = """SELECT * FROM apptb_surset02 WHERE business_code='""" + business_code \ + + """' and cons_code='""" + cons_code + """' ORDER BY nod ASC""" + cursor.execute(postgres_select_query) + monitoring_record = cursor.fetchall() + + # initialize time, surcharge, and settlement lists + time_monitored = [] + surcharge_monitored = [] + settlement_monitored = [] + + # fill lists + for row in monitoring_record: + time_monitored.append(float(row[2])) + settlement_monitored.append(float(row[6])) + surcharge_monitored.append(float(row[8])) + + # convert lists to np arrays + settlement_monitored = np.array(settlement_monitored) + surcharge_monitored = np.array(surcharge_monitored) + time_monitored = np.array(time_monitored) + + # prediction method code + # 0: original hyperbolic method + # 1: nonlinear hyperbolic method + # 2: weighted nonlinear hyperbolic method + # 3: Asaoka method + # 4: Step loading + # 5: temp + + # temporarily set the prediction method as 0 + postgres_select_query = """SELECT prediction_progress_days, predicted_settlement """ \ + + """FROM apptb_pred02_no""" + str(5) \ + + """ WHERE business_code='""" + business_code \ + + """' and cons_code='""" + cons_code \ + + """' ORDER BY prediction_progress_days ASC""" + + # select predicted data for the monitoring point + cursor.execute(postgres_select_query) + prediction_record = cursor.fetchall() + + # initialize time, surcharge, and settlement lists + time_predicted = [] + settlement_predicted = [] + + # fill lists + for row in prediction_record: + time_predicted.append(float(row[0])) + settlement_predicted.append(float(row[1])) + + # convert lists to np arrays + settlement_predicted = np.array(settlement_predicted) + time_predicted = np.array(time_predicted) + + # 그래프 크기, 서브 그래프 개수 및 비율 설정 + fig, axes = plt.subplots(2, 1, figsize=(8, 6), gridspec_kw={'height_ratios': [1, 3]}) + + # 성토고 그래프 표시 + axes[0].plot(time_monitored, surcharge_monitored, color='black', label='surcharge height') + + # 성토고 그래프 설정 + axes[0].set_ylabel("Surcharge height (m)", fontsize=10) + axes[0].set_xlim(left=0) + axes[0].set_xlim(right=np.max(time_predicted)) + axes[0].grid(color="gray", alpha=.5, linestyle='--') + axes[0].tick_params(direction='in') + + # 계측 및 예측 침하량 표시 + axes[1].scatter(time_monitored, -settlement_monitored, s=30, + facecolors='white', edgecolors='black', label='measured data') + + axes[1].plot(time_predicted, -settlement_predicted, + linestyle='--', color='red', label='Original Hyperbolic') + + axes[0].set_ylabel("Settlement (cm)", fontsize=10) + axes[1].set_xlim(left=0) + axes[1].set_xlim(right=np.max(time_predicted)) + + +# script to call: python3 controller.py [business_code] [cons_code] +# for example: python3 controller.py 221222SA0003 CONS001 +if __name__ == '__main__': + + args = sys.argv[1:] + business_code = args[0] + cons_code = args[1] + + settlement_prediction(business_code=business_code, cons_code=cons_code) + print("The settlement prediction is over.") + + #read_database_and_plot(business_code=business_code, cons_code=cons_code) + #print("Visualization is over.") \ No newline at end of file diff --git a/20240119_backup/settle_prediction_steps_main.py b/20240119_backup/settle_prediction_steps_main.py new file mode 100644 index 0000000..1435110 --- /dev/null +++ b/20240119_backup/settle_prediction_steps_main.py @@ -0,0 +1,777 @@ +""" +Title: Soft ground settlement prediction +Developer: +Sang Inn Woo, Ph.D. @ Incheon National University +Kwak Taeyoung, Ph.D. @ KICT + +Starting Date: 2022-08-11 +Abstract: +This main objective of this code is to predict +time vs. (consolidation) settlement curves of soft clay ground. +""" + +# ================= +# Import 섹션 +# ================= +import os.path +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from scipy.optimize import least_squares +from scipy.interpolate import interp1d + + +# ================= +# Function 섹션 +# ================= + +# 주어진 계수를 이용하여 쌍곡선 시간-침하 곡선 반환 +def generate_data_hyper(px, pt): + return pt / (px[0] * pt + px[1]) + +# 주어진 계수를 이용하여 아사오카 시간-침하 곡선 반환 +def generate_data_asaoka(px, pt, dt): + return (px[1] / (1 - px[0])) * (1 - (px[0] ** (pt / dt))) + +# 회귀식과 측정치와의 잔차 반환 (비선형 쌍곡선) +def fun_hyper_nonlinear(px, pt, py): + return pt / (px[0] * pt + px[1]) - py + +# 회귀식과 측정치와의 잔차 반환 (가중 비선형 쌍곡선) +def fun_hyper_weight_nonlinear(px, pt, py, pw): + return (pt / (px[0] * pt + px[1]) - py) * pw + +# 회귀식과 측정치와의 잔차 반환 (기존 쌍곡선) +def fun_hyper_original(px, pt, py): + return px[0] * pt + px[1] - pt / py + +# 회귀식과 측정치와의 잔차 반환 (아사오카) +def fun_asaoka(px, ps_b, ps_a): + return px[0] * ps_b + px[1] - ps_a + + +# RMSE 산정 +def fun_rmse(py1, py2): + mse = np.square(np.subtract(py1, py2)).mean() + return np.sqrt(mse) + + +def run_settle_prediction_from_file(input_file, output_dir, + final_step_predict_percent, additional_predict_percent, + plot_show, + print_values, + run_original_hyperbolic='True', + run_nonlinear_hyperbolic='True', + run_weighted_nonlinear_hyperbolic='True', + run_asaoka='True', + run_step_prediction='True', + asaoka_interval=3): + + # 현재 파일 이름 출력 + print("Working on " + input_file) + + # CSV 파일 읽기 + data = pd.read_csv(input_file, encoding='euc-kr') + + # 시간, 침하량, 성토고 배열 생성 + time = data['Time'].to_numpy() + settle = data['Settlement'].to_numpy() + surcharge = data['Surcharge'].to_numpy() + + run_settle_prediction(point_name=input_file, np_time=time, np_surcharge=surcharge, np_settlement=settle, + final_step_predict_percent=final_step_predict_percent, + additional_predict_percent=additional_predict_percent, plot_show=plot_show, + print_values=print_values, + run_original_hyperbolic=run_original_hyperbolic, + run_nonlinear_hyperbolic=run_nonlinear_hyperbolic, + run_weighted_nonlinear_hyperbolic=run_weighted_nonlinear_hyperbolic, + run_asaoka=run_asaoka, + run_step_prediction=run_step_prediction, + asaoka_interval=asaoka_interval) + +def run_settle_prediction(point_name, + np_time, np_surcharge, np_settlement, + final_step_predict_percent, additional_predict_percent, + plot_show, + print_values, + run_original_hyperbolic='True', + run_nonlinear_hyperbolic='True', + run_weighted_nonlinear_hyperbolic='True', + run_asaoka = 'True', + run_step_prediction='True', + asaoka_interval = 5): + + # ==================== + # 파일 읽기, 데이터 설정 + # ==================== + + # 시간, 침하량, 성토고 배열 생성 + time = np_time + settle = np_settlement + surcharge = np_surcharge + + # 마지막 계측 데이터 index + 1 파악 + final_index = time.size + + # ================= + # 성토 단계 구분 + # ================= + + # 성토 단계 시작 index 리스트 초기화 + step_start_index = [0] + + # 성토 단계 끝 index 리스트 초기화 + step_end_index = [] + + # 현재 성토고 설정 + current_surcharge = surcharge[0] + + # 단계 시작 시점 초기화 + step_start_date = 0 + # 모든 시간-성토고 데이터에서 순차적으로 확인 + for index in range(len(surcharge)): + + # 만일 성토고의 변화가 있을 경우, + if surcharge[index] > current_surcharge*1.05 or surcharge[index] < current_surcharge*0.95: + step_end_index.append(index) + step_start_index.append(index) + current_surcharge = surcharge[index] + + # 마지막 성토 단계 끝 index 추가 + step_end_index.append(len(surcharge) - 1) + + # ================= + # 성토 단계 조정 + # ================= + # 성토고 유지 기간이 매우 짧을 경우, 해석 단계에서 제외 + + # 조정 성토 시작 및 끝 인덱스 리스트 초기화 + step_start_index_adjust = [] + step_end_index_adjust = [] + + # 각 성토 단계 별로 분석 + for i in range(0, len(step_start_index)): + + # 현 단계 성토 시작일 / 끝일 파악 + step_start_date = time[step_start_index[i]] + step_end_date = time[step_end_index[i]] + + # 현 성토고 유지 일수 및 데이터 개수 파악 + step_span = step_end_date - step_start_date + step_data_num = step_end_index[i] - step_start_index[i] + 1 + + # 성토고 유지일 및 데이터 개수 기준 적용 + if step_span > 30 and step_data_num > 5: + step_start_index_adjust.append((step_start_index[i])) + step_end_index_adjust.append((step_end_index[i])) + + # 성토 시작 및 끝 인덱스 리스트 업데이트 + step_start_index = step_start_index_adjust + step_end_index = step_end_index_adjust + + # 침하 예측을 수행할 단계 설정 (현재 끝에서 2단계 이용) + step_start_index = step_start_index[-2:] + step_end_index = step_end_index[-2:] + + # 성토 단계 횟수 파악 및 저장 + num_steps = len(step_start_index) + + # =========================== + # 최종 단계 데이터 사용 범위 조정 + # =========================== + + # 데이터 사용 퍼센트에 해당하는 기간 계산 + final_step_end_date = time[-1] + final_step_start_date = time[step_start_index[num_steps - 1]] + final_step_period = final_step_end_date - final_step_start_date + final_step_predict_end_date = final_step_start_date + final_step_period * final_step_predict_percent / 100 + + # 데이터 사용 끝 시점 인덱스 초기화 + final_step_predict_end_index = -1 + + # 데이터 사용 끝 시점 인덱스 검색 + count = 0 + for day in time: + count = count + 1 + if day > final_step_predict_end_date: + final_step_predict_end_index = count - 1 + break + + # 마지막 성토 단계, 마지막 계측 시점 인덱스 업데이트 + final_step_monitor_end_index = step_end_index[num_steps - 1] + step_end_index[num_steps - 1] = final_step_predict_end_index + + # ================= + # 추가 예측 구간 반영 + # ================= + + # 추가 예측 일 입력 (현재 전체 계측일 * 계수) + add_days = (additional_predict_percent / 100) * time[-1] + + # 마지막 성토고 및 마지막 계측일 저장 + final_surcharge = surcharge[final_index - 1] + final_time = time[final_index - 1] + + # 추가 시간 및 성토고 배열 설정 (100개의 시점 설정) + time_add = np.linspace(final_time + 1, final_time + add_days, 100) + surcharge_add = np.ones(100) * final_surcharge + + # 기존 시간 및 성토고 배열에 붙이기 + time = np.append(time, time_add) + surcharge = np.append(surcharge, surcharge_add) + + # 마지막 인덱스값 재조정 + final_index = time.size + + + + + + + + + + # ========================================== + # Settlement Prediction (Step + Hyperbolic) + # ========================================== + + # 예측 침하량 초기화 + sp_step = np.zeros(time.size) + + # 각 단계별로 진행 + for i in range(0, num_steps): + + # 각 단계별 계측 시점과 계측 침하량 배열 생성 + tm_this_step = time[step_start_index[i]:step_end_index[i]] + sm_this_step = settle[step_start_index[i]:step_end_index[i]] + + # 이전 단계까지 예측 침하량 중 현재 단계에 해당하는 부분 추출 + sp_this_step = sp_step[step_start_index[i]:step_end_index[i]] + + # 현재 단계 시작 부터 끝까지 시간 데이터 추출 + tm_to_end = time[step_start_index[i]:final_index] + + # 기존 예측 침하량에 대한 보정 + sm_this_step = sm_this_step - sp_this_step + + # 초기 시점 및 침하량 산정 + t0_this_step = tm_this_step[0] + s0_this_step = sm_this_step[0] + + # 초기 시점에 대한 시간 조정 + tm_this_step = tm_this_step - t0_this_step + tm_to_end = tm_to_end - t0_this_step + + # 초기 침하량에 대한 침하량 조정 + sm_this_step = sm_this_step - s0_this_step + + # 침하 곡선 계수 초기화 + x0 = np.ones(2) + + # 회귀분석 시행 + res_lsq_hyper_nonlinear \ + = least_squares(fun_hyper_nonlinear, x0, + args=(tm_this_step, sm_this_step)) + + # 쌍곡선 계수 저장 및 출력 + x_step = res_lsq_hyper_nonlinear.x + if print_values: + print(x_step) + + # 현재 단계 예측 침하량 산정 (침하 예측 끝까지) + sp_to_end_update = generate_data_hyper(x_step, tm_to_end) + + # 예측 침하량 업데이트 + sp_step[step_start_index[i]:final_index] = \ + sp_step[step_start_index[i]:final_index] + sp_to_end_update + s0_this_step + + + + + ''' + # ====================================== + # Settlement Prediction (Step + Asaoka) + # ====================================== + + # TODO: Modify this + + # 예측 침하량 초기화 + sp_step_asaoka = np.zeros(time.size) + + # 각 단계별로 진행 + for i in range(0, num_steps): + + # 각 단계별 계측 시점과 계측 침하량 배열 생성 + tm_this_step = time[step_start_index[i]:step_end_index[i]] + sm_this_step = settle[step_start_index[i]:step_end_index[i]] + + # 이전 단계 까지 예측 침하량 중 현재 단계에 해당 하는 부분 추출 + sp_this_step = sp_step[step_start_index[i]:step_end_index[i]] + + # 현재 단계 시작 부터 끝까지 시간 데이터 추출 + tm_to_end = time[step_start_index[i]:final_index] + + # 기존 예측 침하량에 대한 보정 + sm_this_step = sm_this_step - sp_this_step + + # 초기 시점 및 침하량 산정 + t0_this_step = tm_this_step[0] + s0_this_step = sm_this_step[0] + + # 초기 시점에 대한 시간 조정 + tm_this_step = tm_this_step - t0_this_step + tm_to_end = tm_to_end - t0_this_step + + # 초기 침하량에 대한 침하량 조정 + sm_this_step = sm_this_step - s0_this_step + + + + + + + + # 등간격 데이터 생성을 위한 Interpolation 함수 설정 + inter_fn = interp1d(tm_this_step, sm_this_step, kind='cubic') + + # 데이터 구축 간격 및 그에 해당하는 데이터 포인트 개수 설정 + num_data = int(tm_this_step[-1] / asaoka_interval) + + # 등간격 시간 및 침하량 데이터 설정 + tm_this_step_inter = np.linspace(0, tm_this_step[-1], num=num_data, endpoint=True) + sm_this_step_inter = inter_fn(tm_this_step_inter) + + # 이전 이후 등간격 침하량 배열 구축 + sm_this_step_before = sm_this_step_inter[0:-2] + sm_this_step_after = sm_this_step_inter[1:-1] + + + + + # Least square 변수 초기화 + x0 = np.ones(2) + + # Least square 분석을 통한 침하 곡선 계수 결정 + res_lsq_asaoka = least_squares(fun_asaoka, x0, args=(sm_this_step_before, sm_this_step_after)) + + # 기존 쌍곡선 법 계수 저장 및 출력 + x_step_asaoka = res_lsq_asaoka.x + if print_values: + print(x_step_asaoka) + + # 현재 단계 예측 침하량 산정 (침하 예측 끝까지) + sp_to_end_update = generate_data_asaoka(x_step_asaoka, tm_to_end, asaoka_interval) + + + # 예측 침하량 업데이트 + sp_step_asaoka[step_start_index[i]:final_index] = \ + sp_step_asaoka[step_start_index[i]:final_index] + sp_to_end_update + s0_this_step + + ''' + + # ========================================================= + # Settlement prediction (nonliner, weighted nonlinear and original hyperbolic) + # ========================================================= + + # 성토 마지막 데이터 추출 + tm_hyper = time[step_start_index[num_steps - 1]:step_end_index[num_steps - 1]] + sm_hyper = settle[step_start_index[num_steps - 1]:step_end_index[num_steps - 1]] + + # 현재 단계 시작 부터 끝까지 시간 데이터 추출 + time_hyper = time[step_start_index[num_steps - 1]:final_index] + + # 초기 시점 및 침하량 산정 + t0_hyper = tm_hyper[0] + s0_hyper = sm_hyper[0] + + # 초기 시점에 대한 시간 조정 + tm_hyper = tm_hyper - t0_hyper + time_hyper = time_hyper - t0_hyper + + # 초기 침하량에 대한 침하량 조정 + sm_hyper = sm_hyper - s0_hyper + + # 회귀분석 시행 (비선형 쌍곡선) + x0 = np.ones(2) + res_lsq_hyper_nonlinear = least_squares(fun_hyper_nonlinear, x0, + args=(tm_hyper, sm_hyper)) + # 비선형 쌍곡선 법 계수 저장 및 출력 + x_hyper_nonlinear = res_lsq_hyper_nonlinear.x + if print_values: + print(x_hyper_nonlinear) + + # 가중 비선형 쌍곡선 가중치 산정 + weight = tm_hyper / np.sum(tm_hyper) + + # 회귀분석 시행 (가중 비선형 쌍곡선) + x0 = np.ones(2) + res_lsq_hyper_weight_nonlinear = least_squares(fun_hyper_weight_nonlinear, x0, + args=(tm_hyper, sm_hyper, weight)) + # 비선형 쌍곡선 법 계수 저장 및 출력 + x_hyper_weight_nonlinear = res_lsq_hyper_weight_nonlinear.x + if print_values: + print(x_hyper_weight_nonlinear) + + # 회귀분석 시행 (기존 쌍곡선법) - (0, 0)에 해당하는 초기 데이터를 제외하고 회귀분석 실시 + x0 = np.ones(2) + res_lsq_hyper_original = least_squares(fun_hyper_original, x0, + args=(tm_hyper[1:], sm_hyper[1:])) + # 기존 쌍곡선 법 계수 저장 및 출력 + x_hyper_original = res_lsq_hyper_original.x + if print_values: + print(x_hyper_original) + + # 현재 단계 예측 침하량 산정 (침하 예측 끝까지) + sp_hyper_nonlinear = generate_data_hyper(x_hyper_nonlinear, time_hyper) + sp_hyper_weight_nonlinear = generate_data_hyper(x_hyper_weight_nonlinear, time_hyper) + sp_hyper_original = generate_data_hyper(x_hyper_original, time_hyper) + + # 예측 침하량 산정 + sp_hyper_nonlinear = sp_hyper_nonlinear + s0_hyper + sp_hyper_weight_nonlinear = sp_hyper_weight_nonlinear + s0_hyper + sp_hyper_original = sp_hyper_original + s0_hyper + time_hyper = time_hyper + t0_hyper + + + + + + + + # =============================== + # Settlement prediction (Asaoka) + # =============================== + + # 성토 마지막 데이터 추출 + tm_asaoka = time[step_start_index[num_steps - 1]:step_end_index[num_steps - 1]] + sm_asaoka = settle[step_start_index[num_steps - 1]:step_end_index[num_steps - 1]] + + # 현재 단계 시작 부터 끝까지 시간 데이터 추출 + time_asaoka = time[step_start_index[num_steps - 1]:final_index] + + # 초기 시점 및 침하량 산정 + t0_asaoka = tm_asaoka[0] + s0_asaoka = sm_asaoka[0] + + # 초기 시점에 대한 시간 조정 + tm_asaoka = tm_asaoka - t0_asaoka + time_asaoka = time_asaoka - t0_asaoka + + # 초기 침하량에 대한 침하량 조정 + sm_asaoka = sm_asaoka - s0_asaoka + + # 등간격 데이터 생성을 위한 Interpolation 함수 설정 + inter_fn = interp1d(tm_asaoka, sm_asaoka, kind='cubic') + + # 데이터 구축 간격 및 그에 해당하는 데이터 포인트 개수 설정 + num_data = int(tm_asaoka[-1] / asaoka_interval) + + # 등간격 시간 및 침하량 데이터 설정 + tm_asaoka_inter = np.linspace(0, tm_asaoka[-1], num=num_data, endpoint=True) + sm_asaoka_inter = inter_fn(tm_asaoka_inter) + + # 이전 이후 등간격 침하량 배열 구축 + sm_asaoka_before = sm_asaoka_inter[0:-2] + sm_asaoka_after = sm_asaoka_inter[1:-1] + + # Least square 변수 초기화 + x0 = np.ones(2) + + # Least square 분석을 통한 침하 곡선 계수 결정 + res_lsq_asaoka = least_squares(fun_asaoka, x0, args=(sm_asaoka_before, sm_asaoka_after)) + + # 기존 쌍곡선 법 계수 저장 및 출력 + x_asaoka = res_lsq_asaoka.x + if print_values: + print(x_asaoka) + + # 현재 단계 예측 침하량 산정 (침하 예측 끝까지) + sp_asaoka = generate_data_asaoka(x_asaoka, time_asaoka, asaoka_interval) + + # 예측 침하량 산정 + sp_asaoka = sp_asaoka + s0_asaoka + time_asaoka = time_asaoka + t0_asaoka + + + + + + + + + + + + + + + + # ============================== + # Post-Processing #1 : 에러 산정 + # ============================== + + # RMSE 계산 데이터 구간 설정 (계측) + sm_rmse = settle[final_step_predict_end_index:final_step_monitor_end_index] + + # RMSE 계산 데이터 구간 설정 (단계) + sp_step_rmse = sp_step[final_step_predict_end_index:final_step_monitor_end_index] + + # RMSE 계산 데이터 구간 설정 (쌍곡선) + sp_hyper_nonlinear_rmse = sp_hyper_nonlinear[final_step_predict_end_index - step_start_index[num_steps - 1]: + final_step_predict_end_index - step_start_index[num_steps - 1] + + final_step_monitor_end_index - final_step_predict_end_index] + sp_hyper_weight_nonlinear_rmse \ + = sp_hyper_weight_nonlinear[final_step_predict_end_index - step_start_index[num_steps - 1]: + final_step_predict_end_index - step_start_index[num_steps - 1] + + final_step_monitor_end_index - final_step_predict_end_index] + sp_hyper_original_rmse = sp_hyper_original[final_step_predict_end_index - step_start_index[num_steps - 1]: + final_step_predict_end_index - step_start_index[num_steps - 1] + + final_step_monitor_end_index - final_step_predict_end_index] + + # RMSE 계산 데이터 구간 설정 (아사오카) + sp_asaoka_rmse = sp_asaoka[final_step_predict_end_index - step_start_index[num_steps - 1]: + final_step_predict_end_index - step_start_index[num_steps - 1] + + final_step_monitor_end_index - final_step_predict_end_index] + + # RMSE 산정 (단계, 비선형 쌍곡선, 기존 쌍곡선) + rmse_step = fun_rmse(sm_rmse, sp_step_rmse) + rmse_hyper_nonlinear = fun_rmse(sm_rmse, sp_hyper_nonlinear_rmse) + rmse_hyper_weight_nonlinear = fun_rmse(sm_rmse, sp_hyper_weight_nonlinear_rmse) + rmse_hyper_original = fun_rmse(sm_rmse, sp_hyper_original_rmse) + rmse_asaoka = fun_rmse(sm_rmse, sp_asaoka_rmse) + + # RMSE 출력 (단계, 비선형 쌍곡선, 기존 쌍곡선) + if print_values: + print("RMSE (Nonlinear Hyper + Step): %0.3f" % rmse_step) + print("RMSE (Nonlinear Hyperbolic): %0.3f" % rmse_hyper_nonlinear) + print("RMSE (Weighted Nonlinear Hyperbolic): %0.3f" % rmse_hyper_weight_nonlinear) + print("RMSE (Original Hyperbolic): %0.3f" % rmse_hyper_original) + print("RMSE (Asaoka): %0.3f" % rmse_asaoka) + + # (최종 계측 침하량 - 예측 침하량) 계산 + final_error_step = np.abs(settle[-1] - sp_step_rmse[-1]) + final_error_hyper_nonlinear = np.abs(settle[-1] - sp_hyper_nonlinear_rmse[-1]) + final_error_hyper_weight_nonlinear = np.abs(settle[-1] - sp_hyper_weight_nonlinear_rmse[-1]) + final_error_hyper_original = np.abs(settle[-1] - sp_hyper_original_rmse[-1]) + final_error_asaoka = np.abs(settle[-1] - sp_asaoka_rmse[-1]) + + # (최종 계측 침하량 - 예측 침하량) 출력 (단계, 비선형 쌍곡선, 기존 쌍곡선) + if print_values: + print("Error in Final Settlement (Nonlinear Hyper + Step): %0.3f" % final_error_step) + print("Error in Final Settlement (Nonlinear Hyperbolic): %0.3f" % final_error_hyper_nonlinear) + print("Error in Final Settlement (Weighted Nonlinear Hyperbolic): %0.3f" % final_error_hyper_weight_nonlinear) + print("Error in Final Settlement (Original Hyperbolic): %0.3f" % final_error_hyper_original) + print("Error in Final Settlement (Asaoka): %0.3f" % final_error_asaoka) + + + + + # ========================================== + # Post-Processing #2 : 그래프 작성 + # ========================================== + + # 만약 그래프 도시가 필요할 경우, + if plot_show: + + # 그래프 크기, 서브 그래프 개수 및 비율 설정 + fig, axes = plt.subplots(2, 1, figsize=(12, 9), gridspec_kw={'height_ratios': [1, 3]}) + + # 성토고 그래프 표시 + axes[0].plot(time, surcharge, color='black', label='surcharge height') + + # 성토고 그래프 설정 + axes[0].set_ylabel("Surcharge height (m)", fontsize=15) + axes[0].set_xlim(left=0) + axes[0].grid(color="gray", alpha=.5, linestyle='--') + axes[0].tick_params(direction='in') + + # 계측 및 예측 침하량 표시 + axes[1].scatter(time[0:settle.size], -settle, s=50, + facecolors='white', edgecolors='black', label='measured data') + axes[1].plot(time_hyper, -sp_hyper_original, + linestyle='--', color='red', label='Original Hyperbolic') + axes[1].plot(time_hyper, -sp_hyper_nonlinear, + linestyle='--', color='green', label='Nonlinear Hyperbolic') + axes[1].plot(time_hyper, -sp_hyper_weight_nonlinear, + linestyle='--', color='blue', label='Nonlinear Hyperbolic (Weighted)') + axes[1].plot(time_asaoka, -sp_asaoka, + linestyle='--', color='orange', label='Asaoka') + axes[1].plot(time[step_start_index[0]:], -sp_step[step_start_index[0]:], + linestyle='--', color='navy', label='Nonlinear + Step Loading') + + # 침하량 그래프 설정 + axes[1].set_xlabel("Time (day)", fontsize=15) + axes[1].set_ylabel("Settlement (cm)", fontsize=15) + axes[1].set_ylim(top=0) + axes[1].set_ylim(bottom=-1.5 * settle.max()) + axes[1].set_xlim(left=0) + axes[1].grid(color="gray", alpha=.5, linestyle='--') + axes[1].tick_params(direction='in') + + # 범례 표시 + axes[1].legend(loc=1, ncol=3, frameon=True, fontsize=10) + + # 예측 데이터 사용 범위 음영 처리 - 단계성토 + plt.axvspan(time[step_start_index[0]], final_step_predict_end_date, + alpha=0.1, color='grey', hatch='//') + + # 예측 데이터 사용 범위 음영 처리 - 기존 및 비선형 쌍곡선 + plt.axvspan(final_step_start_date, final_step_predict_end_date, + alpha=0.1, color='grey', hatch='\\') + + # 예측 데이터 사용 범위 표시 화살표 세로 위치 설정 + arrow1_y_loc = 1.3 * min(-settle) + arrow2_y_loc = 1.4 * min(-settle) + + # 화살표 크기 설정 + arrow_head_width = 0.03 * max(settle) + arrow_head_length = 0.01 * max(time) + + # 예측 데이터 사용 범위 화살표 처리 - 단계성토 + axes[1].arrow(time[step_start_index[0]], arrow1_y_loc, + final_step_predict_end_date - time[step_start_index[0]], 0, + head_width=arrow_head_width, head_length=arrow_head_length, + color='black', length_includes_head='True') + axes[1].arrow(final_step_predict_end_date, arrow1_y_loc, + time[step_start_index[0]] - final_step_predict_end_date, 0, + head_width=arrow_head_width, head_length=arrow_head_length, + color='black', length_includes_head='True') + + # 예측 데이터 사용 범위 화살표 처리 - 기존 및 비선형 쌍곡선 + axes[1].arrow(final_step_start_date, arrow2_y_loc, + final_step_predict_end_date - final_step_start_date, 0, + head_width=arrow_head_width, head_length=arrow_head_length, + color='black', length_includes_head='True') + axes[1].arrow(final_step_predict_end_date, arrow2_y_loc, + final_step_start_date - final_step_predict_end_date, 0, + head_width=arrow_head_width, head_length=arrow_head_length, + color='black', length_includes_head='True') + + # Annotation 표시용 공간 설정 + space = max(time) * 0.01 + + # 예측 데이터 사용 범위 범례 표시 - 단계성토 + plt.annotate('Data Range Used (Nonlinear + Step Loading)', xy=(final_step_predict_end_date, arrow1_y_loc), + xytext=(final_step_predict_end_date + space, arrow1_y_loc), + horizontalalignment='left', verticalalignment='center') + + # 예측 데이터 사용 범위 범례 표시 - 기존 및 비선형 쌍곡선 + plt.annotate('Data Range Used (Hyperbolic and Asaoka)', xy=(final_step_predict_end_date, arrow1_y_loc), + xytext=(final_step_predict_end_date + space, arrow2_y_loc), + horizontalalignment='left', verticalalignment='center') + + # RMSE 산정 범위 표시 화살표 세로 위치 설정 + arrow3_y_loc = 0.55 * min(-settle) + + # RMSE 산정 범위 화살표 표시 + axes[1].arrow(final_step_predict_end_date, arrow3_y_loc, + final_step_end_date - final_step_predict_end_date, 0, + head_width=arrow_head_width, head_length=arrow_head_length, + color='black', length_includes_head='True') + axes[1].arrow(final_step_end_date, arrow3_y_loc, + final_step_predict_end_date - final_step_end_date, 0, + head_width=arrow_head_width, head_length=arrow_head_length, + color='black', length_includes_head='True') + + # RMSE 산정 범위 세로선 설정 + axes[1].axvline(x=final_step_end_date, color='silver', linestyle=':') + + # RMSE 산정 범위 범례 표시 + plt.annotate('RMSE Estimation Section', xy=(final_step_end_date, arrow3_y_loc), + xytext=(final_step_end_date + space, arrow3_y_loc), + horizontalalignment='left', verticalalignment='center') + + # RMSE 출력 + mybox = {'facecolor': 'white', 'edgecolor': 'black', 'boxstyle': 'round', 'alpha': 0.2} + plt.text(max(time) * 1.04, 0.20 * min(-settle), + r"$\bf{Root\ Mean\ Squared\ Error}$" + + "\n" + "Original Hyperbolic: %0.3f" % rmse_hyper_original + + "\n" + "Nonlinear Hyperbolic: %0.3f" % rmse_hyper_nonlinear + + "\n" + "Nonlinear Hyperbolic (Weighted): %0.3f" % rmse_hyper_weight_nonlinear + + "\n" + "Asaoka: %0.3f" % rmse_asaoka + + "\n" + "Nonlinear + Step Loading: %0.3f" % rmse_step, + color='r', horizontalalignment='right', + verticalalignment='top', fontsize='10', bbox=mybox) + + # (최종 계측 침하량 - 예측값) 출력 + plt.text(max(time) * 1.04, 0.55 * min(-settle), + r"$\bf{Error\ in\ Final\ Settlement}$" + + "\n" + "Original Hyperbolic: %0.3f" % final_error_hyper_original + + "\n" + "Nonlinear Hyperbolic: %0.3f" % final_error_hyper_nonlinear + + "\n" + "Nonlinear Hyperbolic (Weighted): %0.3f" % final_error_hyper_weight_nonlinear + + "\n" + "Asaoka: %0.3f" % final_error_asaoka + + "\n" + "Nonlinear + Step Loading: %0.3f" % final_error_step, + color='r', horizontalalignment='right', + verticalalignment='top', fontsize='10', bbox=mybox) + + # 파일 이름만 추출 + filename = os.path.basename(point_name) + + # 그래프 제목 표시 + plt.title(filename + ": up to %i%% data used in the final step" % final_step_predict_percent) + + # 그래프 저장 (SVG 및 PNG) + # plt.savefig(output_dir + '/' + filename +' %i percent (SVG).svg' %final_step_predict_percent, bbox_inches='tight') + #plt.savefig(output_dir + '/' + filename + ' %i percent (PNG).png' % final_step_predict_percent, bbox_inches='tight') + + # 그래프 출력 + if plot_show: + plt.show() + + # 그래프 닫기 (메모리 소모 방지) + plt.close() + + # 예측 완료 표시 + print("Settlement prediction is done for " + filename + + " with " + str(final_step_predict_percent) + "% data usage") + + # 단계 성토 고려 여부 표시 + is_multi_step = True + if len(step_start_index) == 1: + is_multi_step = False + + # 반환 + + axes[1].plot(time_hyper, -sp_hyper_original, + linestyle='--', color='red', label='Original Hyperbolic') + axes[1].plot(time_hyper, -sp_hyper_nonlinear, + linestyle='--', color='green', label='Nonlinear Hyperbolic') + axes[1].plot(time_hyper, -sp_hyper_weight_nonlinear, + linestyle='--', color='blue', label='Nonlinear Hyperbolic (Weighted)') + axes[1].plot(time_asaoka, -sp_asaoka, + linestyle='--', color='orange', label='Asaoka') + axes[1].plot(time[step_start_index[0]:], -sp_step[step_start_index[0]:], + linestyle='--', color='navy', label='Nonlinear + Step Loading') + + return [time_hyper, sp_hyper_original, + time_hyper, sp_hyper_nonlinear, + time_hyper, sp_hyper_weight_nonlinear, + time_asaoka, sp_asaoka, + time[step_start_index[0]:], sp_step[step_start_index[0]:], + rmse_hyper_original, + rmse_hyper_nonlinear, + rmse_hyper_weight_nonlinear, + rmse_asaoka, + rmse_step, + final_error_hyper_original, + final_error_hyper_nonlinear, + final_error_hyper_weight_nonlinear, + final_error_asaoka, + final_error_step] + + +''' +run_settle_prediction(input_file='data/2-5_No.39.csv', + output_dir='output', + final_step_predict_percent=50, + additional_predict_percent=100, + plot_show=True, + print_values=True, + run_original_hyperbolic=True, + run_nonlinear_hyperbolic=True, + run_weighted_nonlinear_hyperbolic=True, + run_asaoka=True, + run_step_prediction=True, + asaoka_interval=3, + settle_unit='cm') +''' \ No newline at end of file diff --git a/__pycache__/settle_prediction_steps_main.cpython-310.pyc b/__pycache__/settle_prediction_steps_main.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7775fd4e58b6906f371b961f7ad7324257637c36 GIT binary patch literal 4883 zcmaJ_OK;rB5oVJd4u|uWMsInS-d%e=URy7FU$QORYwg1}-~_OP0EB}9Jxz^h&yW;J z+0vp3B=82vWr6$z>*zx+L4HDx$sgb~CtZRBxdp*0UpMC|#o?g4tE;QKzN%`ntH&>w z4GGUb|M&;z$#qHk8}E!i3OaXCqTivSk|j|>0`*V!~5`#Z7O3H^PKnvoNO*K@qs3_^#x?b!7_W7~P@bp5~y zH;u=(*D>#Vp7~4PzheG;cV&CUyaPsi*YQ2`kA&oN&{E9RxP??rysr2|WlceRYV@Gi-+S|87Cjvuvz1RtZb=sD>O#k7uigFJnnn%S5LkJhpHY8B; zf;1;BNspzs%A*i&myUV$R%*(r92}s;p$3Mi{=L1u`P2@AR@8B$r@>*o>w8Z}foMhT z&<*0JS(IAi1F;iCE$*b1;4q!;IGz*2qb=BOw{{N^x^vL+FOGGdgnZAo`PLjfoX(*L z8!my!ETG&H;GYNn0S)WqC21PG25f4=CO%OZCQN85VV*N|RH;nIj0+2#)tJO)N4EdM zK97-zgS$k+GMY2sh7MlF=>K*wlji{_I<#k+i!i`98Gjq2T+#nwNo`BYT; z+rv_^U7v~CK8?ZP7_xn_&eaxq)!@3vUpsCwe{Y1fY%f)#y)bSnmJ%GU^J>FVdXaM)p3dQg82AiI zBfcSKi9y0e5XbygX!Gqqcpic%p$L>a7-l5NGbPcPoD^98xs(``bVyR{NJ)tm_-7+2 zQ<79-63eXcn!G04(yz><$_lKCPfD4}4e5m%T^aVV(_Tp7CM&&BSoMeyi4}*Gn3I(E z7Wrtl9#!WhE(LuxlzL1k*HnZi8JaedDVAqNHnkuDNdgb7ecyI4#td6_->iyVM#4H$Cd@UWp<7&0@a^+ zAM=)o>~RZR$pWn#O`Xci=w^EF0dx}7uY4ya=FV~PFP?7(WgEb~%GO1@&eqs9^w-YVvC7sa?6}TWAyZ8k-DEdJdxPB+?M-eA`0Eq)5BIBx>#hIex2=hJncr@+Tf$#=*p_JT zvRmv9{B(=m7VT}e#qOfN6<0B`MN71dh<{a(;u>b+J!IOF^qM61V)c0rdo|`4{p8Ae`2T$FPr`Ua9(OxUb1NMO3 zh5ZjWHng|l5AKsqlpEkZ;P!DV`o7108}&K{zV)>%)$089FZ}t(?aq#P{(f6zE64BQ zlN>IgI{xY8jg#(I?2*6mP$m>W)VPAIV^I8fS+4 zy_4obq{U9EbR93%kiS77oWWA5jwPbNZab;!drp+*zIQ@D3b`7QV5H78ypKhrF72@C%IZ^XrY6z_@&+a*C-V0hh)lEwvqW!SF3(QVh=DlGOpDyn3BfJ$M zJshNqEhK|&B>3r~O{tsZ>u1KQ+4_A+!ppgjXVKddx)}r~tS?D`lRZghQWEse9XD^qK@%f%~r>A;Xt;^sEsLgiq5K-CX2)+jBuv@B7!-kU^lI(@e02UE|C%udc6B)wK` zFk{G>f)N7JnEr(!@65vW;m~je?$YeN!prjLT3%IjMOA9DsTfF*bt3ZI2|ujKi=k+$M${AeM9UebG01H19_%fgSIrvXA2c;l$099~G8{&lI&I+ze@2@7ZzC_2aJl4EK3X zrCPsLf^LkjYTFGCSNs5b2j`DCPpo>z%>JbCyZ8W#V?>-U;sg;V&e$Qt?^NR6BCw9d qS^OU%ZtMEZo=^9?&KCdAA~I2_l3wLeDT$x1>j-K8my@;1$$tUueETE- literal 0 HcmV?d00001 diff --git a/__pycache__/settle_prediction_steps_main.cpython-311.pyc b/__pycache__/settle_prediction_steps_main.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..369e4c6144e4ad6f55d1e1a24c7fff6a262ab703 GIT binary patch literal 9246 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 literal 0 HcmV?d00001 diff --git a/__pycache__/settle_prediction_steps_main.cpython-38.pyc b/__pycache__/settle_prediction_steps_main.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4a38a2553d76901b45029d4ce0344ec5d940433f GIT binary patch literal 10652 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 ZBvai89=4u8qz^=}l=yx6=ZV%c{Xga?N2ve+ literal 0 HcmV?d00001 diff --git a/__pycache__/settle_prediction_steps_main.cpython-39.pyc b/__pycache__/settle_prediction_steps_main.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a2250165bfd3ccc689797fcf33a0c79a17d7c42a GIT binary patch literal 7883 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 C?8T7) literal 0 HcmV?d00001 diff --git a/controller.py b/controller.py index b9601c2..46dc281 100644 --- a/controller.py +++ b/controller.py @@ -5,11 +5,12 @@ Sang Inn Woo, Ph.D. @ Incheon National University Starting Date: 2022-11-10 """ import psycopg2 as pg2 -import sys import numpy as np import settle_prediction_steps_main import matplotlib.pyplot as plt +import sys +import pdb ''' apptb_surset01 @@ -25,15 +26,32 @@ nod: number of date def settlement_prediction(business_code, cons_code): # connect the database - connection = pg2.connect("host=localhost dbname=postgres user=postgres password=lab36981 port=5432") # local - #connection = pg2.connect("host=192.168.0.13 dbname=sgis user=sgis password=sgis port=5432") # ICTWay internal + #connection = pg2.connect("host=localhost dbname=postgres user=postgres password=lab36981 port=5432") # SW local + #connection = pg2.connect("host=localhost dbname=sgis user=postgres password=postgres port=5434") # ICTWay local + + # connect the database + try: + # 디비엔텍 DB서버 + connection = pg2.connect("host=10.dbnt.co.kr dbname=sgis_new user=smartgeoinfo password=Smartgeoinfo1! port=55432") + print(f"[OK] DB 접속 성공: {connection.get_dsn_parameters()['host']}") + except pg2.OperationalError as e: + print(f"[Error] DB 접속 실패: {e}") + sys.exit(1) # set cursor cursor = connection.cursor() # select monitoring data for the monitoring point - postgres_select_query = """SELECT * FROM apptb_surset02 WHERE business_code='""" + business_code \ + postgres_select_query = """SELECT amount_cum_sub, fill_height, nod FROM apptb_surset02 WHERE business_code='""" + business_code \ + """' and cons_code='""" + cons_code + """' ORDER BY nod ASC""" + ''' + 변경사항 + (amount_cum_sub * -1) --> amount_cum_sub + 침하예측은 부호의 영향을 크게 받습니다. + 현재 개발이 침하량 양수를 기준으로 되어 있어, 양수를 넘겨 줘야 합니다. + 여기서는 일단 데이터 그대로 받습니다. + ''' + cursor.execute(postgres_select_query) monitoring_record = cursor.fetchall() @@ -44,8 +62,8 @@ def settlement_prediction(business_code, cons_code): # fill lists for row in monitoring_record: - settlement.append(float(row[6])) - surcharge.append(float(row[8])) + settlement.append(float(row[0])) + surcharge.append(float(row[1])) time.append(float(row[2])) # convert lists to np arrays @@ -53,32 +71,41 @@ def settlement_prediction(business_code, cons_code): surcharge = np.array(surcharge) time = np.array(time) - # run the settlement prediction and get results - results = settle_prediction_steps_main.run_settle_prediction(point_name=cons_code, np_time=time, - np_surcharge=surcharge, np_settlement=settlement, - final_step_predict_percent=90, - additional_predict_percent=300, plot_show=False, - print_values=False, run_original_hyperbolic=True, - run_nonlinear_hyperbolic=True, - run_weighted_nonlinear_hyperbolic=True, - run_asaoka=True, run_step_prediction=True, - asaoka_interval=3) + # adjust the sign + sgn = 1 + if np.average(settlement) < 0: + sgn = -1 + settlement = sgn * settlement + ''' + 변경사항 + 침하 예측은 부호의 영향을 크게 받습니다. + 만일 평균 침하량의 부호가 음수라면, + 침하량이 음수로 기입되어있다고 보고, + 양수로 변환시킵니다. + ''' + # run the settlement prediction and get results + results = (settle_prediction_steps_main. + run_settle_prediction(point_name=cons_code, np_time=time, + np_surcharge=surcharge, np_settlement=settlement, + final_step_predict_percent=90, + additional_predict_percent=300, + asaoka_interval=3)) + # prediction method code - # 1: original hyperbolic method - # 2: nonlinear hyperbolic method - # 3: weighted nonlinear hyperbolic method - # 4: Asaoka method - # 5: Step loading - + # 1: original hyperbolic method (쌍곡선법) + # 2: nonlinear hyperbolic method (비선형 쌍곡선법) + # 3: weighted nonlinear hyperbolic method (가중 비선형 쌍곡선법) + # 4: Asaoka method (아사오카법) + # 5: Step loading (단계성토 고려법) ''' time_hyper, sp_hyper_original, time_hyper, sp_hyper_nonlinear, time_hyper, sp_hyper_weight_nonlinear, time_asaoka, sp_asaoka, - time[step_start_index[0]:], -sp_step[step_start_index[0]:], + time[step_start_index[0]:], -sp_step[step_start_index[0]:], ''' for i in range(5): @@ -104,29 +131,35 @@ def settlement_prediction(business_code, cons_code): + """VALUES (%s, %s, %s, %s, %s)""" # set data to insert - record_to_insert = (business_code, cons_code, time[j], predicted_settlement[j], i + 1) + #record_to_insert = (business_code, cons_code, time[j], -predicted_settlement[j], i + 1) + record_to_insert = (business_code, cons_code, float(time[j]), float(-predicted_settlement[j]), i + 1) + + ''' + 변경사항 + predicted_settlement[j] --> -predicted_settlement[j] + 여기서 침하예측값의 부호를 음수로 설정해서 DB에 저장합니다. + ''' # execute the insert query cursor.execute(postgres_insert_query, record_to_insert) - # commit changes - connection.commit() - - a = 0 + # commit changes + connection.commit() def read_database_and_plot(business_code, cons_code): # connect the database - connection = pg2.connect("host=localhost dbname=postgres user=postgres password=lab36981 port=5432") - # connection = pg2.connect("host=192.168.0.13 dbname=sgis user=sgis password=sgis port=5432") # ICTWay internal + connection = pg2.connect("host=localhost dbname=postgres user=postgres password=lab36981 port=5432") #SW local + #connection = pg2.connect("host=192.168.0.72 dbname=sgis user=sgis password=sgis port=5432") # ICTWay internal # set cursor cursor = connection.cursor() # select monitoring data for the monitoring point - postgres_select_query = """SELECT * FROM apptb_surset02 WHERE business_code='""" + business_code \ - + """' and cons_code='""" + cons_code + """' ORDER BY nod ASC""" + postgres_select_query = ("""SELECT amount_cum_sub, fill_height, nod FROM apptb_surset02 WHERE business_code='""" + + business_code + """' and cons_code='""" + cons_code + """' ORDER BY nod ASC""") + cursor.execute(postgres_select_query) monitoring_record = cursor.fetchall() @@ -137,9 +170,9 @@ def read_database_and_plot(business_code, cons_code): # fill lists for row in monitoring_record: + settlement_monitored.append(float(row[0])) + surcharge_monitored.append(float(row[1])) time_monitored.append(float(row[2])) - settlement_monitored.append(float(row[6])) - surcharge_monitored.append(float(row[8])) # convert lists to np arrays settlement_monitored = np.array(settlement_monitored) @@ -147,36 +180,40 @@ def read_database_and_plot(business_code, cons_code): time_monitored = np.array(time_monitored) # prediction method code - # 0: original hyperbolic method - # 1: nonlinear hyperbolic method - # 2: weighted nonlinear hyperbolic method - # 3: Asaoka method - # 4: Step loading - # 5: temp + # 1: original hyperbolic method + # 2: nonlinear hyperbolic method + # 3: weighted nonlinear hyperbolic method + # 4: Asaoka method + # 5: Step loading - # temporarily set the prediction method as 0 - postgres_select_query = """SELECT prediction_progress_days, predicted_settlement """ \ - + """FROM apptb_pred02_no""" + str(1) \ - + """ WHERE business_code='""" + business_code \ - + """' and cons_code='""" + cons_code \ - + """' ORDER BY prediction_progress_days ASC""" + time_predicted_series = [] + settlement_predicted_series = [] - # select predicted data for the monitoring point - cursor.execute(postgres_select_query) - prediction_record = cursor.fetchall() + for i in range(5): - # initialize time, surcharge, and settlement lists - time_predicted = [] - settlement_predicted = [] + # temporarily set the prediction method as 0 + postgres_select_query = """SELECT prediction_progress_days, predicted_settlement """ \ + + """FROM apptb_pred02_no""" + str(i + 1) \ + + """ WHERE business_code='""" + business_code \ + + """' and cons_code='""" + cons_code \ + + """' ORDER BY prediction_progress_days ASC""" - # fill lists - for row in prediction_record: - time_predicted.append(float(row[0])) - settlement_predicted.append(float(row[1])) + # select predicted data for the monitoring point + cursor.execute(postgres_select_query) + prediction_record = cursor.fetchall() - # convert lists to np arrays - settlement_predicted = np.array(settlement_predicted) - time_predicted = np.array(time_predicted) + # initialize time, surcharge, and settlement lists + time_predicted = [] + settlement_predicted = [] + + # fill lists + for row in prediction_record: + time_predicted.append(float(row[0])) + settlement_predicted.append(float(row[1])) + + # add lists to series + time_predicted_series.append(np.array(time_predicted)) + settlement_predicted_series.append(np.array(settlement_predicted)) # 그래프 크기, 서브 그래프 개수 및 비율 설정 fig, axes = plt.subplots(2, 1, figsize=(8, 6), gridspec_kw={'height_ratios': [1, 3]}) @@ -193,23 +230,41 @@ def read_database_and_plot(business_code, cons_code): # 계측 및 예측 침하량 표시 axes[1].scatter(time_monitored, -settlement_monitored, s=30, - facecolors='white', edgecolors='black', label='measured data') + facecolors='white', edgecolors='grey', label='measured data') - axes[1].plot(time_predicted, -settlement_predicted, + axes[1].plot(time_predicted_series[0], settlement_predicted_series[0], linestyle='--', color='red', label='Original Hyperbolic') + axes[1].plot(time_predicted_series[1], settlement_predicted_series[1], + linestyle='--', color='blue', label='Nonlinear Hyperbolic') + axes[1].plot(time_predicted_series[2], settlement_predicted_series[2], + linestyle='--', color='black', label='Weighted Nonlinear Hyperbolic') + axes[1].plot(time_predicted_series[3], settlement_predicted_series[3], + linestyle='--', color='olive', label='Asaoka') + axes[1].plot(time_predicted_series[4], settlement_predicted_series[4], + linestyle='--', color='navy', label='Step Loading Hyperbolic') axes[0].set_ylabel("Settlement (cm)", fontsize=10) + axes[1].legend() + axes[1].set_ylim(top=0) axes[1].set_xlim(left=0) axes[1].set_xlim(right=np.max(time_predicted)) + plt.show() + # script to call: python3 controller.py [business_code] [cons_code] -# for example: +# for example: python3 controller.py 221222SA0003 CONS001 if __name__ == '__main__': + + # Example site 1: 231229SA0001, CONS017 + # Example site 2: 231229SA0006, CONS061 + args = sys.argv[1:] business_code = args[0] cons_code = args[1] - settlement_prediction(business_code=business_code, cons_code=cons_code) + + settlement_prediction(business_code = business_code, cons_code = cons_code) print("The settlement prediction is over.") - read_database_and_plot(business_code=business_code, cons_code=cons_code) - print("Visualization is over.") #DB 입력 결과 확인 시에 활성화 / 평소에는 비활성화 \ No newline at end of file + + #read_database_and_plot(business_code=business_code, cons_code=cons_code) + #print("Visualization is over.") \ No newline at end of file diff --git a/error_analysis.zip b/error_analysis.zip new file mode 100644 index 0000000000000000000000000000000000000000..a9e349ee01aa3cbf66a085ef0fd70aec3f22e89d GIT binary patch literal 17273 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 z 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 literal 0 HcmV?d00001 diff --git a/error_multi_step.csv b/error_multi_step.csv new file mode 100644 index 0000000..89d9989 --- /dev/null +++ b/error_multi_step.csv @@ -0,0 +1,273 @@ +,File,Data_usage,RMSE_hyper_original,RMSE_hyper_nonlinear,RMSE_step,Final_error_hyper_original,Final_error_hyper_nonlinear,Final_error_step +0,data\1_S-1.csv,20,23.478646116979654,16.776209296837532,11.120719833394293,31.147089838760067,16.776209296837532,34.39703383058222 +1,data\1_S-1.csv,30,12.402243644854485,5.208861608476322,2.150195941283636,13.42602435195194,5.208861608476322,17.88176228477299 +2,data\1_S-1.csv,40,5.5477225601078475,2.4340047901478026,6.124088322692104,3.137413028656972,2.4340047901478026,6.698331612401873 +3,data\1_S-1.csv,50,1.4243573608600337,5.339485942822988,7.291387329162888,1.5491904788507092,5.339485942822988,0.18927190226409607 +4,data\1_S-1.csv,60,1.2405425139403812,5.484226338578135,5.7050750283865845,2.4292610036214497,5.484226338578135,1.4831090032904086 +5,data\1_S-1.csv,70,1.597066962397822,4.027720666840552,2.7608737957120946,1.0042867085237617,4.027720666840552,1.540451618948424 +6,data\1_S-1.csv,80,1.5539368201809547,3.3570950843708673,1.8277216110401846,0.3671659497912856,3.3570950843708673,1.1246294275445763 +7,data\1_S-1.csv,90,1.1605550014743073,2.5042477994964543,0.8365472478337495,0.3815598208090165,2.5042477994964543,0.5605550014742988 +8,data\1_S-10.csv,20,2.250454268092718,11.945795822232032,14.022426652187274,5.458857525298658,12.78210944667846,4.480921480938093 +9,data\1_S-10.csv,30,1.4798556806649208,4.5201471879813395,1.2820054079359062,5.56697174346722,6.187128156863005,2.9409475590047975 +10,data\1_S-10.csv,40,2.5831593209425114,1.5068804246967553,3.9556125069100414,7.327682225114709,1.2159945876728537,4.603069473692216 +11,data\1_S-10.csv,50,3.0493487660606946,2.5290835903126405,3.781342127791944,6.543763194275195,0.7580449556824689,4.96050056705603 +12,data\1_S-10.csv,60,2.753018935138921,2.4773563031889623,2.4829685067950007,5.197657553387721,1.1114680943428539,4.144430467497713 +13,data\1_S-10.csv,70,2.057161629717554,1.852262568800247,1.125746596630284,3.5981758084098927,0.7917721159345887,2.9539000368872053 +14,data\1_S-10.csv,80,1.385275833572099,1.222635822549523,0.21141515162913316,3.0372816823669457,0.28624544571854166,2.055521208384789 +15,data\1_S-10.csv,90,1.2289805279797732,1.1001404713990144,0.17079561302316265,2.659062579968389,0.22576196364864093,1.687906445950702 +16,data\1_S-11.csv,20,12.780165484446645,3.543442987743452,3.826654330541223,14.142903035702759,2.8057093191787796,18.591421005556583 +17,data\1_S-11.csv,30,8.950467372059691,1.8083726479927158,0.600058015048404,10.92937956217384,1.2372043888069384,13.038668567087655 +18,data\1_S-11.csv,40,6.0781469397310275,2.0814044264045988,1.9762362900266666,8.545036423072245,1.6105013874823666,8.905430697186034 +19,data\1_S-11.csv,50,4.354144249638527,1.830001873935883,1.5994546831172567,6.658170772673151,1.4688426083053616,6.377174516981569 +20,data\1_S-11.csv,60,3.0600926275659055,1.5911267267597402,1.253477114943287,5.316149584849218,1.336850488399163,4.339127785422562 +21,data\1_S-11.csv,70,2.0782232665915683,1.023377922742072,0.4250838856090123,3.7693273765738313,0.8323985798147107,2.8678089286949273 +22,data\1_S-11.csv,80,1.3106083121407994,0.46948359525194167,0.24458020822699267,3.2221638079518704,0.29468631398794154,1.9290492102943517 +23,data\1_S-11.csv,90,1.1328843800677029,0.4200675824984277,0.12988845884140596,2.8519660229689157,0.2547636891884459,1.574556969531173 +24,data\1_S-12.csv,20,2.7120407627429746,7.298582927104371,8.599569444991946,13.542896407505745,2.6778432237681407,4.889581454963832 +25,data\1_S-12.csv,30,5.402183151249969,7.687632014330983,7.420643449273505,12.39344963386265,3.7415741342788835,8.386482482784231 +26,data\1_S-12.csv,40,4.394685384926156,4.845951876514215,2.4643841148224466,6.954026249999055,2.412851448737444,6.4929381725025905 +27,data\1_S-12.csv,50,3.2605713395995304,3.1319161474217667,0.8446842192946161,4.935018097624205,1.4510820822297386,4.728667992653101 +28,data\1_S-12.csv,60,1.9783184512590368,1.569473731965631,0.6435496596366582,2.850940115587415,0.5703161045481381,2.95931761635174 +29,data\1_S-12.csv,70,1.0000004382811707,0.5560357418512717,0.8212550238314622,2.1698581422986623,0.38681115435021735,1.7765112770664189 +30,data\1_S-12.csv,80,0.8241746816026769,0.45382185232957534,0.3656309038475283,1.8254973815355815,0.3919724859787349,1.4696145959291016 +31,data\1_S-12.csv,90,0.7085626123177089,0.417602660005857,0.07822953821441234,1.4335822794754267,0.32528847438603103,1.199407747704015 +32,data\1_S-15.csv,20,0.2880082260432656,0.31324495710969785,0.3234024531936505,0.4022129400876201,0.31324495710969785,0.5801711693735285 +33,data\1_S-15.csv,30,0.2612327425554409,0.1982982487483713,0.13414140830370697,0.15485897379953692,0.1982982487483713,0.45587398459380846 +34,data\1_S-15.csv,40,0.1627146650925451,0.0847291405415234,0.033866481436163935,0.038989961050724664,0.0847291405415234,0.26057510197224854 +35,data\1_S-15.csv,50,0.09403647123965381,0.03947355449793594,0.010432214231313604,0.016236014905314802,0.03947355449793594,0.14077931124954113 +36,data\1_S-15.csv,60,0.05952893520483399,0.023106062873209498,0.005335595378394103,0.005718866196795912,0.023106062873209498,0.08386450933302625 +37,data\1_S-15.csv,70,0.04473399276446019,0.016377408145597953,0.003981572071803215,0.0022423032047758674,0.016377408145597953,0.06066449965583809 +38,data\1_S-15.csv,80,0.033746284419315604,0.014448091335809161,0.006681360997480904,0.007188935630891185,0.014448091335809161,0.04113326606019707 +39,data\1_S-15.csv,90,0.02766081220100747,0.013596987999911315,0.007021701057583198,0.006864032090390862,0.013596987999911315,0.028039740265827118 +40,data\1_S-16.csv,20,3.3040962181845503,2.5459436259747408,1.45493861867461,3.3531886022017394,2.5459436259747408,5.830754051237456 +41,data\1_S-16.csv,30,3.397577659982119,2.1593623899054246,3.4385208065435036,6.806972770490538,2.1593623899054246,5.463521952189097 +42,data\1_S-16.csv,40,3.5615235188381624,3.0031596961493916,3.530913385578609,6.7713581454297,3.0031596961493916,5.321234213446772 +43,data\1_S-16.csv,50,2.979305758737618,2.456347223799883,2.003799792080917,4.62235381428586,2.456347223799883,4.208604160138584 +44,data\1_S-16.csv,60,2.440684687417658,1.9674064134436176,1.3030765444312726,3.7587013753882332,1.9674064134436176,3.219011843360569 +45,data\1_S-16.csv,70,1.9611474785668164,1.5509606603565687,0.8011290107342396,2.4317880070651103,1.5509606603565687,2.378298589011777 +46,data\1_S-16.csv,80,1.147210901886969,0.7794500638783542,0.25842333575239057,1.0220331261428133,0.7794500638783542,1.4548249995786477 +47,data\1_S-16.csv,90,0.6658320594808093,0.3599471149325066,0.3460836953388925,1.153154586718134,0.3599471149325066,0.9885512420661939 +48,data\1_S-17.csv,20,14.817149675077845,11.00820026665355,9.160227086888597,19.49554522452195,11.00820026665355,22.114584610703353 +49,data\1_S-17.csv,30,12.619854078927927,9.134481442421977,6.9071576082667425,16.03629997348982,9.134481442421977,17.657859773028946 +50,data\1_S-17.csv,40,9.602067756400896,6.47474795338568,4.084271910648953,11.477366749731411,6.47474795338568,12.643407243916172 +51,data\1_S-17.csv,50,6.782687807338599,3.914529880205498,1.207594132519305,6.842442053294446,3.914529880205498,8.457968207762192 +52,data\1_S-17.csv,60,4.4393395624054275,2.0008384382997764,0.7688263011902206,4.276987675473648,2.0008384382997764,5.234788630782006 +53,data\1_S-17.csv,70,2.931857444605733,1.0695640076905621,0.9273110304857721,3.2225789084675727,1.0695640076905621,3.2388963393675 +54,data\1_S-17.csv,80,1.630643658296253,0.3125213348966345,1.1612740930672463,1.8326739324209824,0.3125213348966345,1.8464644601669704 +55,data\1_S-17.csv,90,0.9032383117232653,0.24827782525448813,0.9587919569314237,1.674370356936783,0.24827782525448813,1.184956388177838 +56,data\1_S-18.csv,20,4.8569683354725655,8.370185056504068,9.972599263436887,14.865095422926293,8.370185056504068,9.978111512340448 +57,data\1_S-18.csv,30,7.502879610626537,9.170910252757494,9.19044618685778,13.6454883261436,9.170910252757494,13.302444006063652 +58,data\1_S-18.csv,40,7.138752761075896,7.328752844478417,5.329825897187873,9.095760769015405,7.328752844478417,11.980402617417937 +59,data\1_S-18.csv,50,5.233986629512829,4.185885403593828,0.783413059416807,3.6322332834046427,4.185885403593828,8.773198466234518 +60,data\1_S-18.csv,60,3.67241324585774,2.169070128892058,0.7783608535039951,2.154039188017579,2.169070128892058,6.401575843298858 +61,data\1_S-18.csv,70,2.5424291135664294,1.1802477097783282,0.4923296701790672,2.064256197436636,1.1802477097783282,4.5863843876741015 +62,data\1_S-18.csv,80,2.316459386629839,1.1667965600421817,0.4129961986646059,1.7712363628695194,1.1667965600421817,3.931515685511968 +63,data\1_S-18.csv,90,2.2309174292325835,1.2202603294310326,0.6119224915467529,1.215885316632567,1.2202603294310326,3.3551102882782544 +64,data\1_S-19.csv,20,0.4813921356094701,0.38645090597916665,0.262085380838314,,0.38645090597916665,0.14662814292741366 +65,data\1_S-19.csv,30,0.2542390778983757,0.4486975357849197,0.9538761866430289,1.4578288563061808,0.4486975357849197,0.44082650844485194 +66,data\1_S-19.csv,40,0.31581380528892206,0.3508458151659684,0.3483818926223097,0.38722202897310515,0.3508458151659684,0.5728220719268533 +67,data\1_S-19.csv,50,0.4289141972590556,0.47865360212276115,0.5717551474263084,0.17735833501852744,0.47865360212276115,0.732654069325152 +68,data\1_S-19.csv,60,0.6124097428850761,0.6727217066022969,0.7994377009874323,0.5650083536577103,0.6727217066022969,0.9069841958082296 +69,data\1_S-19.csv,70,0.5623432486393993,0.5988132191913642,0.5105750432737622,0.3048821664614563,0.5988132191913642,0.744300913392955 +70,data\1_S-19.csv,80,0.4580512395915517,0.5006204677271572,0.32797151283517634,0.22446438982174222,0.5006204677271572,0.5387456623125226 +71,data\1_S-19.csv,90,0.3623750170500113,0.42372832622671464,0.2209220631754878,0.18242844832152194,0.42372832622671464,0.3623750170500113 +72,data\1_S-2.csv,20,29.13824269821142,32.97006600177633,32.21195457337266,50.98953962583674,32.97006600177633,75.5054893685952 +73,data\1_S-2.csv,30,29.094378311540368,26.78893971941293,24.057354502241488,45.95952965698194,26.78893971941293,69.77267293076979 +74,data\1_S-2.csv,40,25.668812328945442,19.737664954989953,16.573301668930714,24.389044284038413,19.737664954989953,52.38088891618217 +75,data\1_S-2.csv,50,21.583732110692612,13.578484970142826,9.284277402492405,12.336281678713968,13.578484970142826,37.166154284409075 +76,data\1_S-2.csv,60,16.62078573542056,8.641182434779754,4.371591913792901,6.562214890034458,8.641182434779754,25.272718668872173 +77,data\1_S-2.csv,70,10.811437650017501,4.671426204672148,1.3020176782522703,3.462313585656565,4.671426204672148,14.045796578049647 +78,data\1_S-2.csv,80,9.173065296379605,3.754546671085857,0.7442237783985166,2.5270190520652127,3.754546671085857,10.64978363276596 +79,data\1_S-2.csv,90,7.478016107420814,3.0808772341682698,0.5970427746556197,2.4566348296251874,3.0808772341682698,6.8780161074208195 +80,data\1_S-20.csv,20,1.5991320251442396,0.734274177067469,0.5024653897933992,,0.734274177067469,1.6181966710915923 +81,data\1_S-20.csv,30,0.983467706082507,0.5566263918424004,1.1599839311022724,0.6891888364909496,0.5566263918424004,0.6205457463884416 +82,data\1_S-20.csv,40,1.0445947683198489,1.8102553204615202,1.7764261241719057,3.0507083248841558,1.8102553204615202,2.0625130717155606 +83,data\1_S-20.csv,50,1.0135995303584442,1.2428489549759612,0.8261289496652552,1.3546541436513129,1.2428489549759612,1.8588171166887548 +84,data\1_S-20.csv,60,0.9359575571420113,0.9239063949715502,0.6167255864523585,0.9803172858616156,0.9239063949715502,1.5791947067579333 +85,data\1_S-20.csv,70,1.0160045814445942,0.9713676236655032,0.8095088685500043,0.9647285147730768,0.9713676236655032,1.4728692385142317 +86,data\1_S-20.csv,80,0.9330057968496768,0.8398552977157308,0.6027524648118354,0.8579451894453256,0.8398552977157308,1.147925727916272 +87,data\1_S-20.csv,90,0.7810454819952506,0.6916580785283166,0.4052801175930112,0.5899582590956429,0.6916580785283166,0.7810454819952506 +88,data\1_S-3.csv,20,31.079801282684922,20.79725899625463,6.818060318938833,28.308551362298864,20.79725899625463,47.238716900050875 +89,data\1_S-3.csv,30,15.753554144633085,2.6352848578842987,6.859721543987546,4.702100098681567,2.6352848578842987,23.36498322819596 +90,data\1_S-3.csv,40,6.0485793575074664,7.374862524981409,9.794646700171079,5.6935020904941345,7.374862524981409,6.835073565304668 +91,data\1_S-3.csv,50,2.094048920603935,8.202986587700892,8.159727175403006,6.144855383897656,8.202986587700892,0.270197824992394 +92,data\1_S-3.csv,60,1.4543199299679703,7.237301240068834,5.981863502688744,5.584626897838916,7.237301240068834,2.1218242419079445 +93,data\1_S-3.csv,70,2.19394289660755,5.393455869919254,3.609877616358329,3.771152629539646,5.393455869919254,2.6421432980650223 +94,data\1_S-3.csv,80,2.4322158153771154,4.8844137991230685,2.9524536403368833,2.6133509468069507,4.8844137991230685,2.352481088106998 +95,data\1_S-3.csv,90,2.734140059942362,4.359378633827035,2.227164224763243,2.404017139031467,4.359378633827035,1.5341400599423594 +96,data\1_S-4.csv,20,28.378259539192584,20.76394535575388,14.033947286055122,33.956392919022214,20.76394535575388,45.99094608090661 +97,data\1_S-4.csv,30,16.61106216131759,8.942811079170239,3.4524341187436187,18.710539650936383,8.942811079170239,26.84827159237942 +98,data\1_S-4.csv,40,9.797519852171225,2.5496599587282107,3.319788316482909,8.412714329822519,2.5496599587282107,14.194926674696305 +99,data\1_S-4.csv,50,6.125834599642608,2.6040335337737477,5.850573674531381,1.9179721973123014,2.6040335337737477,7.993250496636364 +100,data\1_S-4.csv,60,2.8788592236974906,4.206983125971776,5.795766591760959,1.7072180407065176,4.206983125971776,3.461211024688268 +101,data\1_S-4.csv,70,0.4085160425472198,4.062087348253181,3.7531585944730246,1.6008828051224104,4.062087348253181,0.6633379205306653 +102,data\1_S-4.csv,80,0.47595142031207355,3.724576037953115,2.999485225439125,0.5935342876852995,3.724576037953115,0.5578013561442674 +103,data\1_S-4.csv,90,0.4702196369976548,2.770238687192787,1.4789221203064358,0.09388708245413113,2.770238687192787,0.729780363002348 +104,data\1_S-5.csv,20,1.967727423890477,1.3254354393668206,1.945810601215972,1.9607824925465678,1.3254354393668206,0.1874346159763789 +105,data\1_S-5.csv,30,1.4382082353192773,1.919434236053275,2.533465805806511,2.023289939059952,1.919434236053275,2.9894571542230324 +106,data\1_S-5.csv,40,2.7465167206481573,4.409602595386762,5.291501886071811,5.725165924900896,4.409602595386762,6.266108561419188 +107,data\1_S-5.csv,50,3.461920761656759,4.381575529957983,4.275659286339894,5.075875198611303,4.381575529957983,6.925871218956949 +108,data\1_S-5.csv,60,4.361846022920693,4.604849959229172,4.196889816830964,4.208858373774062,4.604849959229172,6.861029398211379 +109,data\1_S-5.csv,70,4.3969327856562845,4.205632373475578,3.4012384137145903,3.2719092143242556,4.205632373475578,6.121369526288497 +110,data\1_S-5.csv,80,4.096266723294103,3.499985586090912,2.3855823394470796,2.1966796537602513,3.499985586090912,4.9464799766905685 +111,data\1_S-5.csv,90,3.4604082851893114,2.689997383766356,1.47402197284386,1.2253835699076183,2.689997383766356,3.58886013074747 +112,data\1_S-6.csv,20,3.053759492348517,2.001309307753893,0.8290155196979421,4.399864757510363,2.001309307753893,4.949978925908944 +113,data\1_S-6.csv,30,0.6616315454047025,2.8758400900404943,4.735312554782918,2.3907096778655346,2.8758400900404943,1.1719061933164738 +114,data\1_S-6.csv,40,1.8154121853645282,3.2214327224410306,3.2778392243914536,2.5461929166560875,3.2214327224410306,3.0045898440710985 +115,data\1_S-6.csv,50,1.296886856905884,1.4915193295518268,0.6728501717871729,0.639996196106986,1.4915193295518268,1.9737040590938761 +116,data\1_S-6.csv,60,0.8015748472732784,0.696411033119271,0.26372552323457404,0.5934316617703056,0.696411033119271,1.0438148406506542 +117,data\1_S-6.csv,70,0.7876144436121876,0.6730390296235668,0.3217870993721718,0.1265165575151855,0.6730390296235668,0.8848022965429507 +118,data\1_S-6.csv,80,0.8779263334065708,0.7750307740182709,0.5374422060703334,0.4493235452909501,0.7750307740182709,0.8055827182868924 +119,data\1_S-6.csv,90,0.7501681896633152,0.6416649676648516,0.3558228026883899,0.12849860415305325,0.6416649676648516,0.5189720146847918 +120,data\1_S-7.csv,20,5.365254081514151,3.8657561591156813,3.8093740674211998,6.2385985725116875,3.8657561591156813,12.931787976643314 +121,data\1_S-7.csv,30,6.020986058758559,6.135746944313514,6.748313062661424,7.534740868368928,6.135746944313514,12.642457532575591 +122,data\1_S-7.csv,40,5.674619852269969,4.703357957475107,3.8463807465185167,5.468678771443814,4.703357957475107,10.682921494145674 +123,data\1_S-7.csv,50,3.4690575924798996,1.8878183084882048,0.8755075833559937,1.6025113529316266,1.8878183084882048,6.0995707396998 +124,data\1_S-7.csv,60,2.7451423754747624,1.4731986021963825,0.8469142936908258,1.2925956551006061,1.4731986021963825,4.257652913170311 +125,data\1_S-7.csv,70,2.7072833040182207,1.5925145664383469,1.156536439526758,1.5625936995519176,1.5925145664383469,3.8279131225302976 +126,data\1_S-7.csv,80,2.621881865553797,1.7290734621115118,1.3650423959522893,1.721165557371262,1.7290734621115118,3.000226554513077 +127,data\1_S-7.csv,90,2.266894911924734,1.4570027185864196,0.9445565509743197,1.0957970213384967,1.4570027185864196,2.2733706960531137 +128,data\1_S-8.csv,20,18.11867407113544,14.215247739318466,9.511025244297006,22.404300227967695,13.446664866431115,26.01883685539876 +129,data\1_S-8.csv,30,14.514699952893631,11.335799950369877,8.947236678349666,17.58355261139789,10.86796392608233,18.834907128584675 +130,data\1_S-8.csv,40,11.075185948305768,6.8509390887115895,2.6457376862208544,9.530043636696428,6.673867126195534,13.50020958026542 +131,data\1_S-8.csv,50,7.186567380657684,2.8339403044579425,1.4744207009933934,3.85833262551545,2.7885364868377245,7.98665931754185 +132,data\1_S-8.csv,60,4.170061258682651,0.9040062070909864,2.733241309408221,1.1686720201047711,0.9105324134896468,3.986163533267458 +133,data\1_S-8.csv,70,1.5780417387192855,1.4050145672359917,2.4869013753578524,0.35952798393250346,1.4178734518905698,0.8413080660591419 +134,data\1_S-8.csv,80,0.5058499106073733,1.6205084705479829,1.950904027163278,0.4184494053158285,1.6366433460233913,0.23664910840155073 +135,data\1_S-8.csv,90,0.4578779578295943,1.6313760499123662,1.4543709314629694,0.2256783271406,1.6521997346239476,0.4691400149420417 +136,data\1_S-9.csv,20,23.23466856539556,14.38965667065365,5.812478485735811,11.415193360584711,17.60095766072406,35.798616223799556 +137,data\1_S-9.csv,30,8.740016212536279,1.254088481183067,5.286134059469931,6.8867355672344175,4.699099274275911,11.926173764268128 +138,data\1_S-9.csv,40,0.7725497801920852,4.342346270472876,6.044221052095922,8.128363400745855,0.8423842661623222,0.2591634095472699 +139,data\1_S-9.csv,50,1.604201044849245,4.046644394358106,3.936626436981537,6.002530432463326,0.828713418284349,2.384399117848659 +140,data\1_S-9.csv,60,1.3390917223895678,2.428693627890554,1.2271797874647459,3.816309142062488,1.0597756937496738,1.7585285077495598 +141,data\1_S-9.csv,70,1.2202180455836111,1.9103128992797382,0.771291803280165,3.0048787355486817,1.310797523750748,1.346145339351395 +142,data\1_S-9.csv,80,0.5617299433168577,0.9928155840050683,0.4728782399995845,1.4040243056990842,1.8418478186652112,0.6723892700070877 +143,data\1_S-9.csv,90,0.22486696052940594,0.5792833717765682,0.5607951645765684,1.3539869222261414,2.1243071866986516,0.4806282542646869 +144,data\1_SP-11.csv,20,1.7081991927226081,7.2313561231667896,1.0953656139037249,6.18712689484869,3.5433619581079885,2.7577460356066013 +145,data\1_SP-11.csv,30,1.5756064331383481,1.4508379762295698,4.667981912115056,10.672594578553554,1.617156571881448,2.3383819412964613 +146,data\1_SP-11.csv,40,1.666416631660893,1.9147387544365118,2.7246884581594735,3.5102269392885606,2.0539228359031503,2.3988648053252746 +147,data\1_SP-11.csv,50,2.292818865830556,3.0276355451630215,3.857923628067331,5.7946017504485265,3.032368564205978,3.384991365221879 +148,data\1_SP-11.csv,60,1.889989812312286,1.7249795942495172,1.2640582684881747,2.526077644495358,2.0433210528715673,1.979183768159885 +149,data\1_SP-11.csv,70,2.103608751730582,1.8058365765796776,1.2951201482171344,1.9073165276319612,2.238909008345376,1.5961519844577197 +150,data\1_SP-11.csv,80,1.8788628904767846,1.162865729788941,0.31047591858649476,1.1848375699933602,2.0019114454225315,0.7574673332335351 +151,data\1_SP-11.csv,90,1.6578045150943486,0.8013356838663631,0.08523995237079618,0.3893484790967483,1.835912955550954,0.38333311153473915 +152,data\1_SP-13.csv,20,0.4372325497058458,3.6243420678089686,4.851065851031277,7.415206093573297,0.6251074747335184,1.7710273059890653 +153,data\1_SP-13.csv,30,0.7131156843560439,1.182411372082287,0.8606939440943202,2.1000835574758305,0.49852265726353917,2.4215488717810274 +154,data\1_SP-13.csv,40,0.4278189077600768,0.39601474936665476,0.4303011088176812,2.735854312131982,0.8957677532161553,1.6593554681574574 +155,data\1_SP-13.csv,50,1.4339059010061033,1.9491290609659973,2.136544531646112,2.656249815428144,0.7047311863777824,3.555367659593287 +156,data\1_SP-13.csv,60,0.39242710983822804,0.15258643592231405,0.8714892516916322,1.3278099872124942,0.5322267611739026,1.826726679179444 +157,data\1_SP-13.csv,70,0.18072037145060008,0.2617744847181645,0.5737992763703951,1.261638455555825,0.691105669926377,1.538114979348677 +158,data\1_SP-13.csv,80,0.17867732178011012,0.1735062337331057,0.20455691893679187,0.40809888582969184,0.698209101804319,1.4847208692700917 +159,data\1_SP-13.csv,90,0.19491393115805777,0.12209966495242676,0.10135028752760396,0.4554548974773021,0.6823303798309936,1.457893307596379 +160,data\1_SP-17.csv,20,18.507066346497727,18.605257986168017,18.699978439884738,8.520723473217428,9.226100175280822,27.98292250374635 +161,data\1_SP-17.csv,30,5.320558014435307,4.776189146250437,16.926096406129528,31.302259975691005,4.6214332180141895,6.7712262129747955 +162,data\1_SP-17.csv,40,1.7586801283380498,4.547990441524903,5.21303935131053,3.797922268658988,4.561169272178184,2.087240103886984 +163,data\1_SP-17.csv,50,2.7919874072221913,3.499394713176624,3.424666858660793,3.6674731091011044,3.661841220811493,4.753699240913875 +164,data\1_SP-17.csv,60,4.509512187046268,5.062010812243616,4.965508498242809,6.293231675366611,5.19153025332887,6.083450351519332 +165,data\1_SP-17.csv,70,4.477434583027644,4.415713384649314,2.973290496836599,2.715851907697277,4.835842604836214,4.835569684490849 +166,data\1_SP-17.csv,80,4.118355090968156,3.5969326524892806,1.60282498572747,1.6372084145126302,4.409162438716603,3.485338713566364 +167,data\1_SP-17.csv,90,3.5226698829318543,2.7625898354405023,0.6674499662480333,0.9570607962268323,3.912308283959222,2.436228051133355 +168,data\1_SP-18.csv,20,7.606253940268715,15.613827267689272,16.31429809958159,21.055177174811675,16.01873246119757,18.570240961687887 +169,data\1_SP-18.csv,30,14.367568344429996,18.4759301869696,17.811077331371575,21.26918604052492,18.839682917325284,29.252580611697567 +170,data\1_SP-18.csv,40,15.142173533690988,15.260101482485425,12.895880292773695,12.11525582622308,16.025220403227284,28.06859674552618 +171,data\1_SP-18.csv,50,13.236830193943605,11.361940339119686,9.147532937341081,10.380721972228644,12.690863720611114,21.247994508968986 +172,data\1_SP-18.csv,60,12.572109779868718,10.373045747898717,7.8403567771617455,7.475192965834482,12.053241768288808,17.242566043994316 +173,data\1_SP-18.csv,70,11.391355252271676,8.991883569123548,5.798034930135011,5.204559449064496,10.965688729889084,14.234577645108516 +174,data\1_SP-18.csv,80,8.7658521973087,6.517142595190262,3.02552883906568,3.1276197810755373,8.87611960090738,9.652567006884965 +175,data\1_SP-18.csv,90,6.381586755011683,4.6267059923998515,1.47963200729406,2.0247272214014176,7.174463796974973,6.1492139826732455 +176,data\1_SP-2.csv,20,7.251670001515235,4.035528221519683,1.768940800539829,6.821820576668616,2.489462690852944,12.351549624588728 +177,data\1_SP-2.csv,30,6.394859481503299,3.334644752337675,1.892465100473458,6.494840643140869,2.1072941692190876,10.96773880812998 +178,data\1_SP-2.csv,40,3.5150979054006277,1.030476235045081,0.5815497265283422,1.663475036364787,0.6352824649243111,6.831454185237476 +179,data\1_SP-2.csv,50,2.162925795561472,0.7487742235720621,0.60621821951639,2.265307447579157,0.5469280850738427,4.812094374889455 +180,data\1_SP-2.csv,60,1.5530356583388822,0.9400941478766079,0.9361513856359182,1.7749434198125569,0.7003402990927681,3.583445335172854 +181,data\1_SP-2.csv,70,1.92956285477023,1.4854573892940488,1.542384094436538,2.159691403245862,1.191125682131134,3.256134742153506 +182,data\1_SP-2.csv,80,1.7620101358819777,1.2590310165580139,0.6813073644257572,0.8336330267520252,1.015359141094122,2.6737570408162696 +183,data\1_SP-2.csv,90,1.6752219272312727,1.1350087827397781,0.34980187958582465,0.6806276375598923,0.9247523614210207,2.359606626511095 +184,data\1_SP-21.csv,20,42.12676455859104,38.90120020317653,37.22658345622938,34.309623185121495,41.718088947091374,74.12512857571585 +185,data\1_SP-21.csv,30,33.64631516446726,25.29658461536414,18.696713585251256,15.38596010345607,30.561471155274536,53.322700065494814 +186,data\1_SP-21.csv,40,20.49815346851365,13.283944333261775,8.03669888027985,4.568010914517468,20.510334180313954,29.75748908953392 +187,data\1_SP-21.csv,50,16.49123687721858,10.449087808602119,5.519203486691371,1.9678403995436788,18.01891988306453,23.193971027143334 +188,data\1_SP-21.csv,60,11.147105244244372,7.122962434632913,3.175364825607084,0.9753825221211637,14.617090212485024,15.185938487017665 +189,data\1_SP-21.csv,70,7.597835933362693,5.075843395024002,1.996714419444735,0.41583681120581284,12.169507338053933,10.092257320529143 +190,data\1_SP-21.csv,80,5.3839849473707835,3.963110348842146,1.7666792308581958,0.5075445221631049,10.439725199383387,6.52569514597667 +191,data\1_SP-21.csv,90,4.047770694365581,3.216550040119223,1.2847238278822437,0.280779464110913,9.48544972279011,4.250756998837119 +192,data\1_SP-23.csv,20,13.116024974500316,11.406415919730044,3.765506247399486,602.2836630636259,12.191707590091927,23.923046775405396 +193,data\1_SP-23.csv,30,1.4112953886998152,0.8966962615790152,0.586859483898776,4.264442175046207,1.3311405338931415,2.678895051458994 +194,data\1_SP-23.csv,40,0.503194490519577,1.246997021327698,1.893518739512354,3.8553845049761346,1.011465585089704,0.843393031303151 +195,data\1_SP-23.csv,50,0.40177904473664083,1.3013884145405648,1.5432161449557766,1.6336735889893956,0.8320807816723674,0.46226549015170804 +196,data\1_SP-23.csv,60,0.5378967117637476,0.983665873885793,0.9012969813708892,1.0010073396356354,0.8278345528564164,0.04731529797567191 +197,data\1_SP-23.csv,70,0.4535655885338811,0.491565848929026,0.506019286829261,2.8099125224415813,1.1146050245412609,0.38557444858889767 +198,data\1_SP-23.csv,80,0.5866926857702145,0.6017709913879816,0.9737862441170824,2.2594119811584648,1.460892813154599,0.7532984311519613 +199,data\1_SP-23.csv,90,0.7117527371636706,0.6781729753686052,0.7357350650681013,0.6003291518938575,1.4891135231245114,0.5780290711276734 +200,data\1_SP-24.csv,20,8.05208321507387,2.3775483088799723,0.8284886593422096,8.808339547201996,1.8054682221258365,12.256708834049562 +201,data\1_SP-24.csv,30,4.754057585152563,1.8972328533869973,1.14346382775907,5.869420242870603,1.8346948063531192,6.763333674883654 +202,data\1_SP-24.csv,40,3.7044220656872535,1.7774295583659288,1.600770661101458,5.438070310197358,1.487388512391807,5.0416487683838795 +203,data\1_SP-24.csv,50,3.3814507465626766,2.2423339061827465,2.3743431468449008,5.156771184685447,0.7935985345444764,4.3162075572721506 +204,data\1_SP-24.csv,60,2.9580616982955585,2.1138244336006364,1.936738251439519,3.911737118094992,0.7008325198972941,3.4983607937343777 +205,data\1_SP-24.csv,70,2.053019642075373,1.3755461864353626,0.8259635802348708,1.9783233512007146,0.8315397306624637,2.133727284788961 +206,data\1_SP-24.csv,80,0.925154070288001,0.4176762471904959,0.6829290262047738,0.48168303571445314,1.212222131618538,0.88306789224265 +207,data\1_SP-24.csv,90,0.2631479686071642,0.2788168836221197,0.7768479019140757,0.669556803256403,1.498288156663679,0.4404124785364729 +208,data\1_SP-27.csv,20,18.010609556858284,14.166985114707632,9.915165891602133,23.194832884944326,3.656394863473691,24.791256870866732 +209,data\1_SP-27.csv,30,11.71354908610107,7.814156489676422,4.0848401856637375,13.855485533288206,2.9853163240886675,15.052317647589291 +210,data\1_SP-27.csv,40,6.586066767787878,2.817013389041188,2.1778926038820683,5.688088848545767,4.590422827040999,7.541163703392897 +211,data\1_SP-27.csv,50,3.3522604033921652,0.9786737289806023,3.494819318845624,2.6240804510051956,5.782538636584345,3.1411422304844905 +212,data\1_SP-27.csv,60,1.3335052593426149,1.6158617009779779,2.930979658391043,1.965224999359457,6.167856737452781,0.5672384340131202 +213,data\1_SP-27.csv,70,0.7395930072864558,1.742199982469519,2.0915616244173845,1.3781521788721838,6.043388875004583,0.35371090404748884 +214,data\1_SP-27.csv,80,0.7129711553289985,1.9765310226371968,2.013838329825629,0.47991145803682334,6.111852384127282,0.8382121211179765 +215,data\1_SP-27.csv,90,0.9512041354104962,1.8979783064509756,1.472466016784874,0.401096122731131,5.927546475798311,0.7494462753147673 +216,data\1_SP-29.csv,20,58.11456968859943,54.20867884329497,39.61108050965662,72.7878344325526,47.176567041237234,79.76634044962634 +217,data\1_SP-29.csv,30,42.261288398671475,37.208725595653966,19.481691221334845,55.65442483030424,33.51072091517887,59.396079737633926 +218,data\1_SP-29.csv,40,30.26589551904199,25.41935167585668,8.824791212366963,39.27528850191659,24.03930285852246,43.74033540249678 +219,data\1_SP-29.csv,50,22.045627271044555,17.410788234879284,3.834321033138491,28.384109882092144,17.082361204181726,32.80560900650579 +220,data\1_SP-29.csv,60,12.58725003675586,8.625710340309544,0.7735301121039388,21.141175191142423,8.736739005847276,18.931538500183166 +221,data\1_SP-29.csv,70,10.379782274387619,6.498289228635464,0.23684084569137315,17.61674109226546,6.623364989079403,14.046110736188723 +222,data\1_SP-29.csv,80,9.388483891991743,5.731592744259239,0.2173229832348911,13.96446983079995,5.867370452446342,11.728430114724574 +223,data\1_SP-29.csv,90,8.083201483420313,4.860118636658717,0.2637172037503133,11.355207422945249,4.998247642890794,9.505128470303845 +224,data\1_SP-3.csv,20,2.7639666377013827,0.9505339793546425,1.0222593461911647,2.1271474494439353,1.889746668823346,5.625462848877987 +225,data\1_SP-3.csv,30,1.7588046260832937,1.0346779977857292,0.6904824924392874,1.2190904976454986,1.0911784639097006,4.030450955314791 +226,data\1_SP-3.csv,40,1.0122462164703974,0.3562513894553611,0.6380821442756859,0.9133417471727429,1.3412176434826666,2.873269221386522 +227,data\1_SP-3.csv,50,0.875772435310304,0.597764287699386,0.5855513269386318,1.3473701648152487,0.8205124440118188,2.525210296311343 +228,data\1_SP-3.csv,60,0.624543539369494,0.3742951816014111,0.2809099872726779,0.9231072880468726,0.9030900318430175,1.952983904963503 +229,data\1_SP-3.csv,70,0.8332515554331394,0.6103887926575137,0.6178974084951281,1.11269087059214,0.7356865313899721,1.9233485531789825 +230,data\1_SP-3.csv,80,0.9419012904046294,0.6892736180113511,0.5956241281720231,0.869350077634995,0.691929755323423,1.7907405530904157 +231,data\1_SP-3.csv,90,1.0498331495160493,0.7424376198659032,0.522772797378362,0.6773245400829682,0.6197977029042671,1.6192326419223946 +232,data\1_SP-31.csv,20,19.33714932197116,14.109524841969442,8.55126975160453,16.3240970149211,7.796826333425127,29.016294421755674 +233,data\1_SP-31.csv,30,14.93768169180386,11.575579244717796,11.27046813038168,14.889609790138776,7.408257853548278,20.689607566333564 +234,data\1_SP-31.csv,40,7.225161923150376,3.1546066039808682,10.586590635842512,7.222394920036293,3.5712235463176905,7.176477334351773 +235,data\1_SP-31.csv,50,2.057140529710824,11.165257759960324,16.466760388295498,11.063404181253127,11.111250850191475,3.980293867555588 +236,data\1_SP-31.csv,60,3.129236548164459,9.471968574955419,8.654601282011694,5.753283664275471,9.626092065807585,5.815114167759361 +237,data\1_SP-31.csv,70,3.493324425986982,6.647691615846848,4.423725798205054,3.1139471987914424,7.358201799611277,5.618117386075426 +238,data\1_SP-31.csv,80,3.7614567295505226,5.439641426488154,3.4017208594955126,3.3922462564020117,6.468800659704724,5.137075517588528 +239,data\1_SP-31.csv,90,3.6850586112356307,4.403414502163275,2.464704301411955,2.1002848993271788,5.7198909032835195,4.1671588382944265 +240,data\1_SP-4.csv,20,14.1800105801406,3.1497257010769313,6.116492058476434,2.3716109308472393,2.9888371479513616,18.033498964791022 +241,data\1_SP-4.csv,30,8.814180972034736,2.3841507421739756,3.4281001378778577,1.0193269965751968,2.421031029465271,10.14433645479312 +242,data\1_SP-4.csv,40,4.020069458092881,4.266027202872742,5.052898274886464,6.595912285842589,4.856902549700719,2.9447648482440627 +243,data\1_SP-4.csv,50,1.5655809586933982,4.421824166333213,4.498503991265344,3.6168109381332747,4.737919350452426,2.0241453132273364 +244,data\1_SP-4.csv,60,2.8255889328529777,4.318780481087872,3.812224438799903,3.638592480485815,4.348949039715682,4.9441194385123595 +245,data\1_SP-4.csv,70,3.0098355177291696,3.5706976401314443,2.0422680463516194,1.8948403042494955,3.665877481781085,3.8922112538999727 +246,data\1_SP-4.csv,80,3.3383481132125388,3.533116526395827,1.6461241498695636,1.7187934268197498,3.8936071711885947,3.0551044132898255 +247,data\1_SP-4.csv,90,3.500274980525205,3.4634537756934947,1.3053983171550954,1.0905947127296258,4.12898100426122,2.4002749805252392 +248,data\1_SP-5.csv,20,19.01982206124973,18.231684083564126,17.2031688944356,22.856744017504607,6.552090153390118,29.24820828829735 +249,data\1_SP-5.csv,30,8.619850907506631,1.8732529579056163,3.8839833263646395,6.122867503531058,1.9684593608640961,12.881057035896788 +250,data\1_SP-5.csv,40,4.373489591201087,2.4254200148711518,5.582645142047572,5.99503921049501,3.5165520880592576,6.185413783319461 +251,data\1_SP-5.csv,50,0.7840007911603155,3.1212360913344726,3.341409408531209,3.3018738611819773,4.031962434343803,0.27035601893521743 +252,data\1_SP-5.csv,60,1.385233520758738,2.9946337522798414,2.4356737478699,2.51980850430202,4.095636621635693,1.5725633701757147 +253,data\1_SP-5.csv,70,1.3376003278793556,2.155169165017391,0.8191776089203991,1.217087121208194,3.848020332177294,1.014221305019987 +254,data\1_SP-5.csv,80,1.5794214196008316,2.145853516105067,0.9055601727131877,1.6616812187056658,4.1534635206323545,0.8370904136937725 +255,data\1_SP-5.csv,90,1.6476033879915875,1.9262754528654276,0.6184697506069872,0.9602577234857359,4.3428653785188365,0.5191583472790171 +256,data\1_SP-6.csv,20,18.823368133620573,9.711298695408024,4.671217951931806,18.89361772643047,5.532272743878993,24.49568538525625 +257,data\1_SP-6.csv,30,7.2850741787827795,3.40676523188954,7.403579031219248,13.020198301363921,4.910197270345021,5.4312582371888425 +258,data\1_SP-6.csv,40,4.150725891586423,3.779152594657274,4.632370831812934,2.932826525485085,5.162388657496632,0.45840271174347436 +259,data\1_SP-6.csv,50,3.590739524819434,5.876445324519404,6.4793926042065815,6.519352298532605,6.766107158344899,8.441776378973657 +260,data\1_SP-6.csv,60,5.257258756772454,6.6405512761123,6.127938350147389,7.02026603377924,7.704340475747744,9.532189678105453 +261,data\1_SP-6.csv,70,6.499622877299118,7.338520754512718,6.13253420808361,6.2149369211993335,8.734147830763076,9.192764904676551 +262,data\1_SP-6.csv,80,7.197584388519787,7.16748519483013,4.84690165747437,4.571515896385614,9.240389511522254,7.989072293220033 +263,data\1_SP-6.csv,90,7.258476142471198,6.391707237133926,3.199691472382279,2.5189317643384292,9.378416986074912,6.36436546810836 +264,data\1_SP-8.csv,20,13.724402266628424,3.8474261858726027,3.8761389145379472,4.297387192543221,2.979953000441522,28.727756112879206 +265,data\1_SP-8.csv,30,8.117162803997703,1.8192082930013656,3.1881100613455,10.859572755132064,3.763598263372951,17.496525503906014 +266,data\1_SP-8.csv,40,5.601929975825574,3.1750076497104125,3.908802713266494,4.600704081525033,4.351429810828936,12.288857095097796 +267,data\1_SP-8.csv,50,5.418106443167945,4.1632861639884515,5.009236061811986,6.812329827763838,4.8346123593513175,11.576585817379168 +268,data\1_SP-8.csv,60,4.541530280936754,3.5537333439080747,3.1217704199084597,4.588534853343822,4.8770768338388235,8.296402009884787 +269,data\1_SP-8.csv,70,5.02028811636518,3.9026228580560693,3.2060451766201425,3.7664338358837894,5.709616335803563,7.307266716541278 +270,data\1_SP-8.csv,80,5.435344889150946,3.916965279400222,2.7451449694245005,3.2045994621080216,6.627286940187872,6.2159908585936705 +271,data\1_SP-8.csv,90,5.48054191461318,3.437963134670824,1.7657518311792497,1.7600499561277778,7.513525270362268,4.889949188131595 diff --git a/error_overall.csv b/error_overall.csv new file mode 100644 index 0000000..e6158ed --- /dev/null +++ b/error_overall.csv @@ -0,0 +1,273 @@ +,File,Data_usage,RMSE_hyper_original,RMSE_hyper_nonlinear,Final_error_hyper_original,Final_error_hyper_nonlinear +0,data\1_S-1.csv,20,23.478646116979654,16.776209296837532,31.147089838760067,16.776209296837532 +1,data\1_S-1.csv,30,12.402243644854485,5.208861608476322,13.42602435195194,5.208861608476322 +2,data\1_S-1.csv,40,5.5477225601078475,2.4340047901478026,3.137413028656972,2.4340047901478026 +3,data\1_S-1.csv,50,1.4243573608600337,5.339485942822988,1.5491904788507092,5.339485942822988 +4,data\1_S-1.csv,60,1.2405425139403812,5.484226338578135,2.4292610036214497,5.484226338578135 +5,data\1_S-1.csv,70,1.597066962397822,4.027720666840552,1.0042867085237617,4.027720666840552 +6,data\1_S-1.csv,80,1.5539368201809547,3.3570950843708673,0.3671659497912856,3.3570950843708673 +7,data\1_S-1.csv,90,1.1605550014743073,2.5042477994964543,0.3815598208090165,2.5042477994964543 +8,data\1_S-10.csv,20,2.250454268092718,11.945795822232032,5.458857525298658,12.78210944667846 +9,data\1_S-10.csv,30,1.4798556806649208,4.5201471879813395,5.56697174346722,6.187128156863005 +10,data\1_S-10.csv,40,2.5831593209425114,1.5068804246967553,7.327682225114709,1.2159945876728537 +11,data\1_S-10.csv,50,3.0493487660606946,2.5290835903126405,6.543763194275195,0.7580449556824689 +12,data\1_S-10.csv,60,2.753018935138921,2.4773563031889623,5.197657553387721,1.1114680943428539 +13,data\1_S-10.csv,70,2.057161629717554,1.852262568800247,3.5981758084098927,0.7917721159345887 +14,data\1_S-10.csv,80,1.385275833572099,1.222635822549523,3.0372816823669457,0.28624544571854166 +15,data\1_S-10.csv,90,1.2289805279797732,1.1001404713990144,2.659062579968389,0.22576196364864093 +16,data\1_S-11.csv,20,12.780165484446645,3.543442987743452,14.142903035702759,2.8057093191787796 +17,data\1_S-11.csv,30,8.950467372059691,1.8083726479927158,10.92937956217384,1.2372043888069384 +18,data\1_S-11.csv,40,6.0781469397310275,2.0814044264045988,8.545036423072245,1.6105013874823666 +19,data\1_S-11.csv,50,4.354144249638527,1.830001873935883,6.658170772673151,1.4688426083053616 +20,data\1_S-11.csv,60,3.0600926275659055,1.5911267267597402,5.316149584849218,1.336850488399163 +21,data\1_S-11.csv,70,2.0782232665915683,1.023377922742072,3.7693273765738313,0.8323985798147107 +22,data\1_S-11.csv,80,1.3106083121407994,0.46948359525194167,3.2221638079518704,0.29468631398794154 +23,data\1_S-11.csv,90,1.1328843800677029,0.4200675824984277,2.8519660229689157,0.2547636891884459 +24,data\1_S-12.csv,20,2.7120407627429746,7.298582927104371,13.542896407505745,2.6778432237681407 +25,data\1_S-12.csv,30,5.402183151249969,7.687632014330983,12.39344963386265,3.7415741342788835 +26,data\1_S-12.csv,40,4.394685384926156,4.845951876514215,6.954026249999055,2.412851448737444 +27,data\1_S-12.csv,50,3.2605713395995304,3.1319161474217667,4.935018097624205,1.4510820822297386 +28,data\1_S-12.csv,60,1.9783184512590368,1.569473731965631,2.850940115587415,0.5703161045481381 +29,data\1_S-12.csv,70,1.0000004382811707,0.5560357418512717,2.1698581422986623,0.38681115435021735 +30,data\1_S-12.csv,80,0.8241746816026769,0.45382185232957534,1.8254973815355815,0.3919724859787349 +31,data\1_S-12.csv,90,0.7085626123177089,0.417602660005857,1.4335822794754267,0.32528847438603103 +32,data\1_S-15.csv,20,0.2880082260432656,0.31324495710969785,0.4022129400876201,0.31324495710969785 +33,data\1_S-15.csv,30,0.2612327425554409,0.1982982487483713,0.15485897379953692,0.1982982487483713 +34,data\1_S-15.csv,40,0.1627146650925451,0.0847291405415234,0.038989961050724664,0.0847291405415234 +35,data\1_S-15.csv,50,0.09403647123965381,0.03947355449793594,0.016236014905314802,0.03947355449793594 +36,data\1_S-15.csv,60,0.05952893520483399,0.023106062873209498,0.005718866196795912,0.023106062873209498 +37,data\1_S-15.csv,70,0.04473399276446019,0.016377408145597953,0.0022423032047758674,0.016377408145597953 +38,data\1_S-15.csv,80,0.033746284419315604,0.014448091335809161,0.007188935630891185,0.014448091335809161 +39,data\1_S-15.csv,90,0.02766081220100747,0.013596987999911315,0.006864032090390862,0.013596987999911315 +40,data\1_S-16.csv,20,3.3040962181845503,2.5459436259747408,3.3531886022017394,2.5459436259747408 +41,data\1_S-16.csv,30,3.397577659982119,2.1593623899054246,6.806972770490538,2.1593623899054246 +42,data\1_S-16.csv,40,3.5615235188381624,3.0031596961493916,6.7713581454297,3.0031596961493916 +43,data\1_S-16.csv,50,2.979305758737618,2.456347223799883,4.62235381428586,2.456347223799883 +44,data\1_S-16.csv,60,2.440684687417658,1.9674064134436176,3.7587013753882332,1.9674064134436176 +45,data\1_S-16.csv,70,1.9611474785668164,1.5509606603565687,2.4317880070651103,1.5509606603565687 +46,data\1_S-16.csv,80,1.147210901886969,0.7794500638783542,1.0220331261428133,0.7794500638783542 +47,data\1_S-16.csv,90,0.6658320594808093,0.3599471149325066,1.153154586718134,0.3599471149325066 +48,data\1_S-17.csv,20,14.817149675077845,11.00820026665355,19.49554522452195,11.00820026665355 +49,data\1_S-17.csv,30,12.619854078927927,9.134481442421977,16.03629997348982,9.134481442421977 +50,data\1_S-17.csv,40,9.602067756400896,6.47474795338568,11.477366749731411,6.47474795338568 +51,data\1_S-17.csv,50,6.782687807338599,3.914529880205498,6.842442053294446,3.914529880205498 +52,data\1_S-17.csv,60,4.4393395624054275,2.0008384382997764,4.276987675473648,2.0008384382997764 +53,data\1_S-17.csv,70,2.931857444605733,1.0695640076905621,3.2225789084675727,1.0695640076905621 +54,data\1_S-17.csv,80,1.630643658296253,0.3125213348966345,1.8326739324209824,0.3125213348966345 +55,data\1_S-17.csv,90,0.9032383117232653,0.24827782525448813,1.674370356936783,0.24827782525448813 +56,data\1_S-18.csv,20,4.8569683354725655,8.370185056504068,14.865095422926293,8.370185056504068 +57,data\1_S-18.csv,30,7.502879610626537,9.170910252757494,13.6454883261436,9.170910252757494 +58,data\1_S-18.csv,40,7.138752761075896,7.328752844478417,9.095760769015405,7.328752844478417 +59,data\1_S-18.csv,50,5.233986629512829,4.185885403593828,3.6322332834046427,4.185885403593828 +60,data\1_S-18.csv,60,3.67241324585774,2.169070128892058,2.154039188017579,2.169070128892058 +61,data\1_S-18.csv,70,2.5424291135664294,1.1802477097783282,2.064256197436636,1.1802477097783282 +62,data\1_S-18.csv,80,2.316459386629839,1.1667965600421817,1.7712363628695194,1.1667965600421817 +63,data\1_S-18.csv,90,2.2309174292325835,1.2202603294310326,1.215885316632567,1.2202603294310326 +64,data\1_S-19.csv,20,0.4813921356094701,0.38645090597916665,,0.38645090597916665 +65,data\1_S-19.csv,30,0.2542390778983757,0.4486975357849197,1.4578288563061808,0.4486975357849197 +66,data\1_S-19.csv,40,0.31581380528892206,0.3508458151659684,0.38722202897310515,0.3508458151659684 +67,data\1_S-19.csv,50,0.4289141972590556,0.47865360212276115,0.17735833501852744,0.47865360212276115 +68,data\1_S-19.csv,60,0.6124097428850761,0.6727217066022969,0.5650083536577103,0.6727217066022969 +69,data\1_S-19.csv,70,0.5623432486393993,0.5988132191913642,0.3048821664614563,0.5988132191913642 +70,data\1_S-19.csv,80,0.4580512395915517,0.5006204677271572,0.22446438982174222,0.5006204677271572 +71,data\1_S-19.csv,90,0.3623750170500113,0.42372832622671464,0.18242844832152194,0.42372832622671464 +72,data\1_S-2.csv,20,29.13824269821142,32.97006600177633,50.98953962583674,32.97006600177633 +73,data\1_S-2.csv,30,29.094378311540368,26.78893971941293,45.95952965698194,26.78893971941293 +74,data\1_S-2.csv,40,25.668812328945442,19.737664954989953,24.389044284038413,19.737664954989953 +75,data\1_S-2.csv,50,21.583732110692612,13.578484970142826,12.336281678713968,13.578484970142826 +76,data\1_S-2.csv,60,16.62078573542056,8.641182434779754,6.562214890034458,8.641182434779754 +77,data\1_S-2.csv,70,10.811437650017501,4.671426204672148,3.462313585656565,4.671426204672148 +78,data\1_S-2.csv,80,9.173065296379605,3.754546671085857,2.5270190520652127,3.754546671085857 +79,data\1_S-2.csv,90,7.478016107420814,3.0808772341682698,2.4566348296251874,3.0808772341682698 +80,data\1_S-20.csv,20,1.5991320251442396,0.734274177067469,,0.734274177067469 +81,data\1_S-20.csv,30,0.983467706082507,0.5566263918424004,0.6891888364909496,0.5566263918424004 +82,data\1_S-20.csv,40,1.0445947683198489,1.8102553204615202,3.0507083248841558,1.8102553204615202 +83,data\1_S-20.csv,50,1.0135995303584442,1.2428489549759612,1.3546541436513129,1.2428489549759612 +84,data\1_S-20.csv,60,0.9359575571420113,0.9239063949715502,0.9803172858616156,0.9239063949715502 +85,data\1_S-20.csv,70,1.0160045814445942,0.9713676236655032,0.9647285147730768,0.9713676236655032 +86,data\1_S-20.csv,80,0.9330057968496768,0.8398552977157308,0.8579451894453256,0.8398552977157308 +87,data\1_S-20.csv,90,0.7810454819952506,0.6916580785283166,0.5899582590956429,0.6916580785283166 +88,data\1_S-3.csv,20,31.079801282684922,20.79725899625463,28.308551362298864,20.79725899625463 +89,data\1_S-3.csv,30,15.753554144633085,2.6352848578842987,4.702100098681567,2.6352848578842987 +90,data\1_S-3.csv,40,6.0485793575074664,7.374862524981409,5.6935020904941345,7.374862524981409 +91,data\1_S-3.csv,50,2.094048920603935,8.202986587700892,6.144855383897656,8.202986587700892 +92,data\1_S-3.csv,60,1.4543199299679703,7.237301240068834,5.584626897838916,7.237301240068834 +93,data\1_S-3.csv,70,2.19394289660755,5.393455869919254,3.771152629539646,5.393455869919254 +94,data\1_S-3.csv,80,2.4322158153771154,4.8844137991230685,2.6133509468069507,4.8844137991230685 +95,data\1_S-3.csv,90,2.734140059942362,4.359378633827035,2.404017139031467,4.359378633827035 +96,data\1_S-4.csv,20,28.378259539192584,20.76394535575388,33.956392919022214,20.76394535575388 +97,data\1_S-4.csv,30,16.61106216131759,8.942811079170239,18.710539650936383,8.942811079170239 +98,data\1_S-4.csv,40,9.797519852171225,2.5496599587282107,8.412714329822519,2.5496599587282107 +99,data\1_S-4.csv,50,6.125834599642608,2.6040335337737477,1.9179721973123014,2.6040335337737477 +100,data\1_S-4.csv,60,2.8788592236974906,4.206983125971776,1.7072180407065176,4.206983125971776 +101,data\1_S-4.csv,70,0.4085160425472198,4.062087348253181,1.6008828051224104,4.062087348253181 +102,data\1_S-4.csv,80,0.47595142031207355,3.724576037953115,0.5935342876852995,3.724576037953115 +103,data\1_S-4.csv,90,0.4702196369976548,2.770238687192787,0.09388708245413113,2.770238687192787 +104,data\1_S-5.csv,20,1.967727423890477,1.3254354393668206,1.9607824925465678,1.3254354393668206 +105,data\1_S-5.csv,30,1.4382082353192773,1.919434236053275,2.023289939059952,1.919434236053275 +106,data\1_S-5.csv,40,2.7465167206481573,4.409602595386762,5.725165924900896,4.409602595386762 +107,data\1_S-5.csv,50,3.461920761656759,4.381575529957983,5.075875198611303,4.381575529957983 +108,data\1_S-5.csv,60,4.361846022920693,4.604849959229172,4.208858373774062,4.604849959229172 +109,data\1_S-5.csv,70,4.3969327856562845,4.205632373475578,3.2719092143242556,4.205632373475578 +110,data\1_S-5.csv,80,4.096266723294103,3.499985586090912,2.1966796537602513,3.499985586090912 +111,data\1_S-5.csv,90,3.4604082851893114,2.689997383766356,1.2253835699076183,2.689997383766356 +112,data\1_S-6.csv,20,3.053759492348517,2.001309307753893,4.399864757510363,2.001309307753893 +113,data\1_S-6.csv,30,0.6616315454047025,2.8758400900404943,2.3907096778655346,2.8758400900404943 +114,data\1_S-6.csv,40,1.8154121853645282,3.2214327224410306,2.5461929166560875,3.2214327224410306 +115,data\1_S-6.csv,50,1.296886856905884,1.4915193295518268,0.639996196106986,1.4915193295518268 +116,data\1_S-6.csv,60,0.8015748472732784,0.696411033119271,0.5934316617703056,0.696411033119271 +117,data\1_S-6.csv,70,0.7876144436121876,0.6730390296235668,0.1265165575151855,0.6730390296235668 +118,data\1_S-6.csv,80,0.8779263334065708,0.7750307740182709,0.4493235452909501,0.7750307740182709 +119,data\1_S-6.csv,90,0.7501681896633152,0.6416649676648516,0.12849860415305325,0.6416649676648516 +120,data\1_S-7.csv,20,5.365254081514151,3.8657561591156813,6.2385985725116875,3.8657561591156813 +121,data\1_S-7.csv,30,6.020986058758559,6.135746944313514,7.534740868368928,6.135746944313514 +122,data\1_S-7.csv,40,5.674619852269969,4.703357957475107,5.468678771443814,4.703357957475107 +123,data\1_S-7.csv,50,3.4690575924798996,1.8878183084882048,1.6025113529316266,1.8878183084882048 +124,data\1_S-7.csv,60,2.7451423754747624,1.4731986021963825,1.2925956551006061,1.4731986021963825 +125,data\1_S-7.csv,70,2.7072833040182207,1.5925145664383469,1.5625936995519176,1.5925145664383469 +126,data\1_S-7.csv,80,2.621881865553797,1.7290734621115118,1.721165557371262,1.7290734621115118 +127,data\1_S-7.csv,90,2.266894911924734,1.4570027185864196,1.0957970213384967,1.4570027185864196 +128,data\1_S-8.csv,20,18.11867407113544,14.215247739318466,22.404300227967695,13.446664866431115 +129,data\1_S-8.csv,30,14.514699952893631,11.335799950369877,17.58355261139789,10.86796392608233 +130,data\1_S-8.csv,40,11.075185948305768,6.8509390887115895,9.530043636696428,6.673867126195534 +131,data\1_S-8.csv,50,7.186567380657684,2.8339403044579425,3.85833262551545,2.7885364868377245 +132,data\1_S-8.csv,60,4.170061258682651,0.9040062070909864,1.1686720201047711,0.9105324134896468 +133,data\1_S-8.csv,70,1.5780417387192855,1.4050145672359917,0.35952798393250346,1.4178734518905698 +134,data\1_S-8.csv,80,0.5058499106073733,1.6205084705479829,0.4184494053158285,1.6366433460233913 +135,data\1_S-8.csv,90,0.4578779578295943,1.6313760499123662,0.2256783271406,1.6521997346239476 +136,data\1_S-9.csv,20,23.23466856539556,14.38965667065365,11.415193360584711,17.60095766072406 +137,data\1_S-9.csv,30,8.740016212536279,1.254088481183067,6.8867355672344175,4.699099274275911 +138,data\1_S-9.csv,40,0.7725497801920852,4.342346270472876,8.128363400745855,0.8423842661623222 +139,data\1_S-9.csv,50,1.604201044849245,4.046644394358106,6.002530432463326,0.828713418284349 +140,data\1_S-9.csv,60,1.3390917223895678,2.428693627890554,3.816309142062488,1.0597756937496738 +141,data\1_S-9.csv,70,1.2202180455836111,1.9103128992797382,3.0048787355486817,1.310797523750748 +142,data\1_S-9.csv,80,0.5617299433168577,0.9928155840050683,1.4040243056990842,1.8418478186652112 +143,data\1_S-9.csv,90,0.22486696052940594,0.5792833717765682,1.3539869222261414,2.1243071866986516 +144,data\1_SP-11.csv,20,1.7081991927226081,7.2313561231667896,6.18712689484869,3.5433619581079885 +145,data\1_SP-11.csv,30,1.5756064331383481,1.4508379762295698,10.672594578553554,1.617156571881448 +146,data\1_SP-11.csv,40,1.666416631660893,1.9147387544365118,3.5102269392885606,2.0539228359031503 +147,data\1_SP-11.csv,50,2.292818865830556,3.0276355451630215,5.7946017504485265,3.032368564205978 +148,data\1_SP-11.csv,60,1.889989812312286,1.7249795942495172,2.526077644495358,2.0433210528715673 +149,data\1_SP-11.csv,70,2.103608751730582,1.8058365765796776,1.9073165276319612,2.238909008345376 +150,data\1_SP-11.csv,80,1.8788628904767846,1.162865729788941,1.1848375699933602,2.0019114454225315 +151,data\1_SP-11.csv,90,1.6578045150943486,0.8013356838663631,0.3893484790967483,1.835912955550954 +152,data\1_SP-13.csv,20,0.4372325497058458,3.6243420678089686,7.415206093573297,0.6251074747335184 +153,data\1_SP-13.csv,30,0.7131156843560439,1.182411372082287,2.1000835574758305,0.49852265726353917 +154,data\1_SP-13.csv,40,0.4278189077600768,0.39601474936665476,2.735854312131982,0.8957677532161553 +155,data\1_SP-13.csv,50,1.4339059010061033,1.9491290609659973,2.656249815428144,0.7047311863777824 +156,data\1_SP-13.csv,60,0.39242710983822804,0.15258643592231405,1.3278099872124942,0.5322267611739026 +157,data\1_SP-13.csv,70,0.18072037145060008,0.2617744847181645,1.261638455555825,0.691105669926377 +158,data\1_SP-13.csv,80,0.17867732178011012,0.1735062337331057,0.40809888582969184,0.698209101804319 +159,data\1_SP-13.csv,90,0.19491393115805777,0.12209966495242676,0.4554548974773021,0.6823303798309936 +160,data\1_SP-17.csv,20,18.507066346497727,18.605257986168017,8.520723473217428,9.226100175280822 +161,data\1_SP-17.csv,30,5.320558014435307,4.776189146250437,31.302259975691005,4.6214332180141895 +162,data\1_SP-17.csv,40,1.7586801283380498,4.547990441524903,3.797922268658988,4.561169272178184 +163,data\1_SP-17.csv,50,2.7919874072221913,3.499394713176624,3.6674731091011044,3.661841220811493 +164,data\1_SP-17.csv,60,4.509512187046268,5.062010812243616,6.293231675366611,5.19153025332887 +165,data\1_SP-17.csv,70,4.477434583027644,4.415713384649314,2.715851907697277,4.835842604836214 +166,data\1_SP-17.csv,80,4.118355090968156,3.5969326524892806,1.6372084145126302,4.409162438716603 +167,data\1_SP-17.csv,90,3.5226698829318543,2.7625898354405023,0.9570607962268323,3.912308283959222 +168,data\1_SP-18.csv,20,7.606253940268715,15.613827267689272,21.055177174811675,16.01873246119757 +169,data\1_SP-18.csv,30,14.367568344429996,18.4759301869696,21.26918604052492,18.839682917325284 +170,data\1_SP-18.csv,40,15.142173533690988,15.260101482485425,12.11525582622308,16.025220403227284 +171,data\1_SP-18.csv,50,13.236830193943605,11.361940339119686,10.380721972228644,12.690863720611114 +172,data\1_SP-18.csv,60,12.572109779868718,10.373045747898717,7.475192965834482,12.053241768288808 +173,data\1_SP-18.csv,70,11.391355252271676,8.991883569123548,5.204559449064496,10.965688729889084 +174,data\1_SP-18.csv,80,8.7658521973087,6.517142595190262,3.1276197810755373,8.87611960090738 +175,data\1_SP-18.csv,90,6.381586755011683,4.6267059923998515,2.0247272214014176,7.174463796974973 +176,data\1_SP-2.csv,20,7.251670001515235,4.035528221519683,6.821820576668616,2.489462690852944 +177,data\1_SP-2.csv,30,6.394859481503299,3.334644752337675,6.494840643140869,2.1072941692190876 +178,data\1_SP-2.csv,40,3.5150979054006277,1.030476235045081,1.663475036364787,0.6352824649243111 +179,data\1_SP-2.csv,50,2.162925795561472,0.7487742235720621,2.265307447579157,0.5469280850738427 +180,data\1_SP-2.csv,60,1.5530356583388822,0.9400941478766079,1.7749434198125569,0.7003402990927681 +181,data\1_SP-2.csv,70,1.92956285477023,1.4854573892940488,2.159691403245862,1.191125682131134 +182,data\1_SP-2.csv,80,1.7620101358819777,1.2590310165580139,0.8336330267520252,1.015359141094122 +183,data\1_SP-2.csv,90,1.6752219272312727,1.1350087827397781,0.6806276375598923,0.9247523614210207 +184,data\1_SP-21.csv,20,42.12676455859104,38.90120020317653,34.309623185121495,41.718088947091374 +185,data\1_SP-21.csv,30,33.64631516446726,25.29658461536414,15.38596010345607,30.561471155274536 +186,data\1_SP-21.csv,40,20.49815346851365,13.283944333261775,4.568010914517468,20.510334180313954 +187,data\1_SP-21.csv,50,16.49123687721858,10.449087808602119,1.9678403995436788,18.01891988306453 +188,data\1_SP-21.csv,60,11.147105244244372,7.122962434632913,0.9753825221211637,14.617090212485024 +189,data\1_SP-21.csv,70,7.597835933362693,5.075843395024002,0.41583681120581284,12.169507338053933 +190,data\1_SP-21.csv,80,5.3839849473707835,3.963110348842146,0.5075445221631049,10.439725199383387 +191,data\1_SP-21.csv,90,4.047770694365581,3.216550040119223,0.280779464110913,9.48544972279011 +192,data\1_SP-23.csv,20,13.116024974500316,11.406415919730044,602.2836630636259,12.191707590091927 +193,data\1_SP-23.csv,30,1.4112953886998152,0.8966962615790152,4.264442175046207,1.3311405338931415 +194,data\1_SP-23.csv,40,0.503194490519577,1.246997021327698,3.8553845049761346,1.011465585089704 +195,data\1_SP-23.csv,50,0.40177904473664083,1.3013884145405648,1.6336735889893956,0.8320807816723674 +196,data\1_SP-23.csv,60,0.5378967117637476,0.983665873885793,1.0010073396356354,0.8278345528564164 +197,data\1_SP-23.csv,70,0.4535655885338811,0.491565848929026,2.8099125224415813,1.1146050245412609 +198,data\1_SP-23.csv,80,0.5866926857702145,0.6017709913879816,2.2594119811584648,1.460892813154599 +199,data\1_SP-23.csv,90,0.7117527371636706,0.6781729753686052,0.6003291518938575,1.4891135231245114 +200,data\1_SP-24.csv,20,8.05208321507387,2.3775483088799723,8.808339547201996,1.8054682221258365 +201,data\1_SP-24.csv,30,4.754057585152563,1.8972328533869973,5.869420242870603,1.8346948063531192 +202,data\1_SP-24.csv,40,3.7044220656872535,1.7774295583659288,5.438070310197358,1.487388512391807 +203,data\1_SP-24.csv,50,3.3814507465626766,2.2423339061827465,5.156771184685447,0.7935985345444764 +204,data\1_SP-24.csv,60,2.9580616982955585,2.1138244336006364,3.911737118094992,0.7008325198972941 +205,data\1_SP-24.csv,70,2.053019642075373,1.3755461864353626,1.9783233512007146,0.8315397306624637 +206,data\1_SP-24.csv,80,0.925154070288001,0.4176762471904959,0.48168303571445314,1.212222131618538 +207,data\1_SP-24.csv,90,0.2631479686071642,0.2788168836221197,0.669556803256403,1.498288156663679 +208,data\1_SP-27.csv,20,18.010609556858284,14.166985114707632,23.194832884944326,3.656394863473691 +209,data\1_SP-27.csv,30,11.71354908610107,7.814156489676422,13.855485533288206,2.9853163240886675 +210,data\1_SP-27.csv,40,6.586066767787878,2.817013389041188,5.688088848545767,4.590422827040999 +211,data\1_SP-27.csv,50,3.3522604033921652,0.9786737289806023,2.6240804510051956,5.782538636584345 +212,data\1_SP-27.csv,60,1.3335052593426149,1.6158617009779779,1.965224999359457,6.167856737452781 +213,data\1_SP-27.csv,70,0.7395930072864558,1.742199982469519,1.3781521788721838,6.043388875004583 +214,data\1_SP-27.csv,80,0.7129711553289985,1.9765310226371968,0.47991145803682334,6.111852384127282 +215,data\1_SP-27.csv,90,0.9512041354104962,1.8979783064509756,0.401096122731131,5.927546475798311 +216,data\1_SP-29.csv,20,58.11456968859943,54.20867884329497,72.7878344325526,47.176567041237234 +217,data\1_SP-29.csv,30,42.261288398671475,37.208725595653966,55.65442483030424,33.51072091517887 +218,data\1_SP-29.csv,40,30.26589551904199,25.41935167585668,39.27528850191659,24.03930285852246 +219,data\1_SP-29.csv,50,22.045627271044555,17.410788234879284,28.384109882092144,17.082361204181726 +220,data\1_SP-29.csv,60,12.58725003675586,8.625710340309544,21.141175191142423,8.736739005847276 +221,data\1_SP-29.csv,70,10.379782274387619,6.498289228635464,17.61674109226546,6.623364989079403 +222,data\1_SP-29.csv,80,9.388483891991743,5.731592744259239,13.96446983079995,5.867370452446342 +223,data\1_SP-29.csv,90,8.083201483420313,4.860118636658717,11.355207422945249,4.998247642890794 +224,data\1_SP-3.csv,20,2.7639666377013827,0.9505339793546425,2.1271474494439353,1.889746668823346 +225,data\1_SP-3.csv,30,1.7588046260832937,1.0346779977857292,1.2190904976454986,1.0911784639097006 +226,data\1_SP-3.csv,40,1.0122462164703974,0.3562513894553611,0.9133417471727429,1.3412176434826666 +227,data\1_SP-3.csv,50,0.875772435310304,0.597764287699386,1.3473701648152487,0.8205124440118188 +228,data\1_SP-3.csv,60,0.624543539369494,0.3742951816014111,0.9231072880468726,0.9030900318430175 +229,data\1_SP-3.csv,70,0.8332515554331394,0.6103887926575137,1.11269087059214,0.7356865313899721 +230,data\1_SP-3.csv,80,0.9419012904046294,0.6892736180113511,0.869350077634995,0.691929755323423 +231,data\1_SP-3.csv,90,1.0498331495160493,0.7424376198659032,0.6773245400829682,0.6197977029042671 +232,data\1_SP-31.csv,20,19.33714932197116,14.109524841969442,16.3240970149211,7.796826333425127 +233,data\1_SP-31.csv,30,14.93768169180386,11.575579244717796,14.889609790138776,7.408257853548278 +234,data\1_SP-31.csv,40,7.225161923150376,3.1546066039808682,7.222394920036293,3.5712235463176905 +235,data\1_SP-31.csv,50,2.057140529710824,11.165257759960324,11.063404181253127,11.111250850191475 +236,data\1_SP-31.csv,60,3.129236548164459,9.471968574955419,5.753283664275471,9.626092065807585 +237,data\1_SP-31.csv,70,3.493324425986982,6.647691615846848,3.1139471987914424,7.358201799611277 +238,data\1_SP-31.csv,80,3.7614567295505226,5.439641426488154,3.3922462564020117,6.468800659704724 +239,data\1_SP-31.csv,90,3.6850586112356307,4.403414502163275,2.1002848993271788,5.7198909032835195 +240,data\1_SP-4.csv,20,14.1800105801406,3.1497257010769313,2.3716109308472393,2.9888371479513616 +241,data\1_SP-4.csv,30,8.814180972034736,2.3841507421739756,1.0193269965751968,2.421031029465271 +242,data\1_SP-4.csv,40,4.020069458092881,4.266027202872742,6.595912285842589,4.856902549700719 +243,data\1_SP-4.csv,50,1.5655809586933982,4.421824166333213,3.6168109381332747,4.737919350452426 +244,data\1_SP-4.csv,60,2.8255889328529777,4.318780481087872,3.638592480485815,4.348949039715682 +245,data\1_SP-4.csv,70,3.0098355177291696,3.5706976401314443,1.8948403042494955,3.665877481781085 +246,data\1_SP-4.csv,80,3.3383481132125388,3.533116526395827,1.7187934268197498,3.8936071711885947 +247,data\1_SP-4.csv,90,3.500274980525205,3.4634537756934947,1.0905947127296258,4.12898100426122 +248,data\1_SP-5.csv,20,19.01982206124973,18.231684083564126,22.856744017504607,6.552090153390118 +249,data\1_SP-5.csv,30,8.619850907506631,1.8732529579056163,6.122867503531058,1.9684593608640961 +250,data\1_SP-5.csv,40,4.373489591201087,2.4254200148711518,5.99503921049501,3.5165520880592576 +251,data\1_SP-5.csv,50,0.7840007911603155,3.1212360913344726,3.3018738611819773,4.031962434343803 +252,data\1_SP-5.csv,60,1.385233520758738,2.9946337522798414,2.51980850430202,4.095636621635693 +253,data\1_SP-5.csv,70,1.3376003278793556,2.155169165017391,1.217087121208194,3.848020332177294 +254,data\1_SP-5.csv,80,1.5794214196008316,2.145853516105067,1.6616812187056658,4.1534635206323545 +255,data\1_SP-5.csv,90,1.6476033879915875,1.9262754528654276,0.9602577234857359,4.3428653785188365 +256,data\1_SP-6.csv,20,18.823368133620573,9.711298695408024,18.89361772643047,5.532272743878993 +257,data\1_SP-6.csv,30,7.2850741787827795,3.40676523188954,13.020198301363921,4.910197270345021 +258,data\1_SP-6.csv,40,4.150725891586423,3.779152594657274,2.932826525485085,5.162388657496632 +259,data\1_SP-6.csv,50,3.590739524819434,5.876445324519404,6.519352298532605,6.766107158344899 +260,data\1_SP-6.csv,60,5.257258756772454,6.6405512761123,7.02026603377924,7.704340475747744 +261,data\1_SP-6.csv,70,6.499622877299118,7.338520754512718,6.2149369211993335,8.734147830763076 +262,data\1_SP-6.csv,80,7.197584388519787,7.16748519483013,4.571515896385614,9.240389511522254 +263,data\1_SP-6.csv,90,7.258476142471198,6.391707237133926,2.5189317643384292,9.378416986074912 +264,data\1_SP-8.csv,20,13.724402266628424,3.8474261858726027,4.297387192543221,2.979953000441522 +265,data\1_SP-8.csv,30,8.117162803997703,1.8192082930013656,10.859572755132064,3.763598263372951 +266,data\1_SP-8.csv,40,5.601929975825574,3.1750076497104125,4.600704081525033,4.351429810828936 +267,data\1_SP-8.csv,50,5.418106443167945,4.1632861639884515,6.812329827763838,4.8346123593513175 +268,data\1_SP-8.csv,60,4.541530280936754,3.5537333439080747,4.588534853343822,4.8770768338388235 +269,data\1_SP-8.csv,70,5.02028811636518,3.9026228580560693,3.7664338358837894,5.709616335803563 +270,data\1_SP-8.csv,80,5.435344889150946,3.916965279400222,3.2045994621080216,6.627286940187872 +271,data\1_SP-8.csv,90,5.48054191461318,3.437963134670824,1.7600499561277778,7.513525270362268 diff --git a/settle_prediction_steps_main.py b/settle_prediction_steps_main.py index 5cdb813..5923d4b 100644 --- a/settle_prediction_steps_main.py +++ b/settle_prediction_steps_main.py @@ -13,10 +13,9 @@ time vs. (consolidation) settlement curves of soft clay ground. # ================= # Import 섹션 # ================= - import os.path import numpy as np -import pandas as pd +import pandas as pd import matplotlib.pyplot as plt from scipy.optimize import least_squares from scipy.interpolate import interp1d @@ -57,50 +56,8 @@ def fun_rmse(py1, py2): return np.sqrt(mse) -def run_settle_prediction_from_file(input_file, output_dir, - final_step_predict_percent, additional_predict_percent, - plot_show, - print_values, - run_original_hyperbolic='True', - run_nonlinear_hyperbolic='True', - run_weighted_nonlinear_hyperbolic='True', - run_asaoka='True', - run_step_prediction='True', - asaoka_interval=3): - - # 현재 파일 이름 출력 - print("Working on " + input_file) - - # CSV 파일 읽기 - data = pd.read_csv(input_file, encoding='euc-kr') - - # 시간, 침하량, 성토고 배열 생성 - time = data['Time'].to_numpy() - settle = data['Settlement'].to_numpy() - surcharge = data['Surcharge'].to_numpy() - - run_settle_prediction(point_name=input_file, np_time=time, np_surcharge=surcharge, np_settlement=settle, - final_step_predict_percent=final_step_predict_percent, - additional_predict_percent=additional_predict_percent, plot_show=plot_show, - print_values=print_values, - run_original_hyperbolic=run_original_hyperbolic, - run_nonlinear_hyperbolic=run_nonlinear_hyperbolic, - run_weighted_nonlinear_hyperbolic=run_weighted_nonlinear_hyperbolic, - run_asaoka=run_asaoka, - run_step_prediction=run_step_prediction, - asaoka_interval=asaoka_interval) - -def run_settle_prediction(point_name, - np_time, np_surcharge, np_settlement, - final_step_predict_percent, additional_predict_percent, - plot_show, - print_values, - run_original_hyperbolic='True', - run_nonlinear_hyperbolic='True', - run_weighted_nonlinear_hyperbolic='True', - run_asaoka = 'True', - run_step_prediction='True', - asaoka_interval = 5): +def run_settle_prediction(point_name, np_time, np_surcharge, np_settlement, + final_step_predict_percent, additional_predict_percent, asaoka_interval = 5): # ==================== # 파일 읽기, 데이터 설정 @@ -129,12 +86,11 @@ def run_settle_prediction(point_name, # 단계 시작 시점 초기화 step_start_date = 0 - # 모든 시간-성토고 데이터에서 순차적으로 확인 for index in range(len(surcharge)): # 만일 성토고의 변화가 있을 경우, - if surcharge[index] != current_surcharge: + if surcharge[index] > current_surcharge*1.05 or surcharge[index] < current_surcharge*0.95: step_end_index.append(index) step_start_index.append(index) current_surcharge = surcharge[index] @@ -277,8 +233,6 @@ def run_settle_prediction(point_name, # 쌍곡선 계수 저장 및 출력 x_step = res_lsq_hyper_nonlinear.x - if print_values: - print(x_step) # 현재 단계 예측 침하량 산정 (침하 예측 끝까지) sp_to_end_update = generate_data_hyper(x_step, tm_to_end) @@ -288,89 +242,6 @@ def run_settle_prediction(point_name, sp_step[step_start_index[i]:final_index] + sp_to_end_update + s0_this_step - - - ''' - # ====================================== - # Settlement Prediction (Step + Asaoka) - # ====================================== - - # TODO: Modify this - - # 예측 침하량 초기화 - sp_step_asaoka = np.zeros(time.size) - - # 각 단계별로 진행 - for i in range(0, num_steps): - - # 각 단계별 계측 시점과 계측 침하량 배열 생성 - tm_this_step = time[step_start_index[i]:step_end_index[i]] - sm_this_step = settle[step_start_index[i]:step_end_index[i]] - - # 이전 단계 까지 예측 침하량 중 현재 단계에 해당 하는 부분 추출 - sp_this_step = sp_step[step_start_index[i]:step_end_index[i]] - - # 현재 단계 시작 부터 끝까지 시간 데이터 추출 - tm_to_end = time[step_start_index[i]:final_index] - - # 기존 예측 침하량에 대한 보정 - sm_this_step = sm_this_step - sp_this_step - - # 초기 시점 및 침하량 산정 - t0_this_step = tm_this_step[0] - s0_this_step = sm_this_step[0] - - # 초기 시점에 대한 시간 조정 - tm_this_step = tm_this_step - t0_this_step - tm_to_end = tm_to_end - t0_this_step - - # 초기 침하량에 대한 침하량 조정 - sm_this_step = sm_this_step - s0_this_step - - - - - - - - # 등간격 데이터 생성을 위한 Interpolation 함수 설정 - inter_fn = interp1d(tm_this_step, sm_this_step, kind='cubic') - - # 데이터 구축 간격 및 그에 해당하는 데이터 포인트 개수 설정 - num_data = int(tm_this_step[-1] / asaoka_interval) - - # 등간격 시간 및 침하량 데이터 설정 - tm_this_step_inter = np.linspace(0, tm_this_step[-1], num=num_data, endpoint=True) - sm_this_step_inter = inter_fn(tm_this_step_inter) - - # 이전 이후 등간격 침하량 배열 구축 - sm_this_step_before = sm_this_step_inter[0:-2] - sm_this_step_after = sm_this_step_inter[1:-1] - - - - - # Least square 변수 초기화 - x0 = np.ones(2) - - # Least square 분석을 통한 침하 곡선 계수 결정 - res_lsq_asaoka = least_squares(fun_asaoka, x0, args=(sm_this_step_before, sm_this_step_after)) - - # 기존 쌍곡선 법 계수 저장 및 출력 - x_step_asaoka = res_lsq_asaoka.x - if print_values: - print(x_step_asaoka) - - # 현재 단계 예측 침하량 산정 (침하 예측 끝까지) - sp_to_end_update = generate_data_asaoka(x_step_asaoka, tm_to_end, asaoka_interval) - - - # 예측 침하량 업데이트 - sp_step_asaoka[step_start_index[i]:final_index] = \ - sp_step_asaoka[step_start_index[i]:final_index] + sp_to_end_update + s0_this_step - - ''' - # ========================================================= # Settlement prediction (nonliner, weighted nonlinear and original hyperbolic) # ========================================================= @@ -399,8 +270,6 @@ def run_settle_prediction(point_name, args=(tm_hyper, sm_hyper)) # 비선형 쌍곡선 법 계수 저장 및 출력 x_hyper_nonlinear = res_lsq_hyper_nonlinear.x - if print_values: - print(x_hyper_nonlinear) # 가중 비선형 쌍곡선 가중치 산정 weight = tm_hyper / np.sum(tm_hyper) @@ -411,8 +280,6 @@ def run_settle_prediction(point_name, args=(tm_hyper, sm_hyper, weight)) # 비선형 쌍곡선 법 계수 저장 및 출력 x_hyper_weight_nonlinear = res_lsq_hyper_weight_nonlinear.x - if print_values: - print(x_hyper_weight_nonlinear) # 회귀분석 시행 (기존 쌍곡선법) - (0, 0)에 해당하는 초기 데이터를 제외하고 회귀분석 실시 x0 = np.ones(2) @@ -420,8 +287,6 @@ def run_settle_prediction(point_name, args=(tm_hyper[1:], sm_hyper[1:])) # 기존 쌍곡선 법 계수 저장 및 출력 x_hyper_original = res_lsq_hyper_original.x - if print_values: - print(x_hyper_original) # 현재 단계 예측 침하량 산정 (침하 예측 끝까지) sp_hyper_nonlinear = generate_data_hyper(x_hyper_nonlinear, time_hyper) @@ -434,12 +299,6 @@ def run_settle_prediction(point_name, sp_hyper_original = sp_hyper_original + s0_hyper time_hyper = time_hyper + t0_hyper - - - - - - # =============================== # Settlement prediction (Asaoka) # =============================== @@ -463,7 +322,12 @@ def run_settle_prediction(point_name, sm_asaoka = sm_asaoka - s0_asaoka # 등간격 데이터 생성을 위한 Interpolation 함수 설정 - inter_fn = interp1d(tm_asaoka, sm_asaoka, kind='cubic') + inter_fn = interp1d(tm_asaoka, sm_asaoka, kind='linear') + ''' + 변경사항 + kind='cubic' --> kind='linear' + 드물게 동일 시점에 침하 데이터가 다수 존재할 경우, 에러가 나서 수정함 + ''' # 데이터 구축 간격 및 그에 해당하는 데이터 포인트 개수 설정 num_data = int(tm_asaoka[-1] / asaoka_interval) @@ -484,8 +348,6 @@ def run_settle_prediction(point_name, # 기존 쌍곡선 법 계수 저장 및 출력 x_asaoka = res_lsq_asaoka.x - if print_values: - print(x_asaoka) # 현재 단계 예측 침하량 산정 (침하 예측 끝까지) sp_asaoka = generate_data_asaoka(x_asaoka, time_asaoka, asaoka_interval) @@ -494,286 +356,13 @@ def run_settle_prediction(point_name, sp_asaoka = sp_asaoka + s0_asaoka time_asaoka = time_asaoka + t0_asaoka - - - - - - - - - - - - - - - # ============================== - # Post-Processing #1 : 에러 산정 - # ============================== - - # RMSE 계산 데이터 구간 설정 (계측) - sm_rmse = settle[final_step_predict_end_index:final_step_monitor_end_index] - - # RMSE 계산 데이터 구간 설정 (단계) - sp_step_rmse = sp_step[final_step_predict_end_index:final_step_monitor_end_index] - - # RMSE 계산 데이터 구간 설정 (쌍곡선) - sp_hyper_nonlinear_rmse = sp_hyper_nonlinear[final_step_predict_end_index - step_start_index[num_steps - 1]: - final_step_predict_end_index - step_start_index[num_steps - 1] + - final_step_monitor_end_index - final_step_predict_end_index] - sp_hyper_weight_nonlinear_rmse \ - = sp_hyper_weight_nonlinear[final_step_predict_end_index - step_start_index[num_steps - 1]: - final_step_predict_end_index - step_start_index[num_steps - 1] + - final_step_monitor_end_index - final_step_predict_end_index] - sp_hyper_original_rmse = sp_hyper_original[final_step_predict_end_index - step_start_index[num_steps - 1]: - final_step_predict_end_index - step_start_index[num_steps - 1] + - final_step_monitor_end_index - final_step_predict_end_index] - - # RMSE 계산 데이터 구간 설정 (아사오카) - sp_asaoka_rmse = sp_asaoka[final_step_predict_end_index - step_start_index[num_steps - 1]: - final_step_predict_end_index - step_start_index[num_steps - 1] + - final_step_monitor_end_index - final_step_predict_end_index] - - # RMSE 산정 (단계, 비선형 쌍곡선, 기존 쌍곡선) - rmse_step = fun_rmse(sm_rmse, sp_step_rmse) - rmse_hyper_nonlinear = fun_rmse(sm_rmse, sp_hyper_nonlinear_rmse) - rmse_hyper_weight_nonlinear = fun_rmse(sm_rmse, sp_hyper_weight_nonlinear_rmse) - rmse_hyper_original = fun_rmse(sm_rmse, sp_hyper_original_rmse) - rmse_asaoka = fun_rmse(sm_rmse, sp_asaoka_rmse) - - # RMSE 출력 (단계, 비선형 쌍곡선, 기존 쌍곡선) - if print_values: - print("RMSE (Nonlinear Hyper + Step): %0.3f" % rmse_step) - print("RMSE (Nonlinear Hyperbolic): %0.3f" % rmse_hyper_nonlinear) - print("RMSE (Weighted Nonlinear Hyperbolic): %0.3f" % rmse_hyper_weight_nonlinear) - print("RMSE (Original Hyperbolic): %0.3f" % rmse_hyper_original) - print("RMSE (Asaoka): %0.3f" % rmse_asaoka) - - # (최종 계측 침하량 - 예측 침하량) 계산 - final_error_step = np.abs(settle[-1] - sp_step_rmse[-1]) - final_error_hyper_nonlinear = np.abs(settle[-1] - sp_hyper_nonlinear_rmse[-1]) - final_error_hyper_weight_nonlinear = np.abs(settle[-1] - sp_hyper_weight_nonlinear_rmse[-1]) - final_error_hyper_original = np.abs(settle[-1] - sp_hyper_original_rmse[-1]) - final_error_asaoka = np.abs(settle[-1] - sp_asaoka_rmse[-1]) - - # (최종 계측 침하량 - 예측 침하량) 출력 (단계, 비선형 쌍곡선, 기존 쌍곡선) - if print_values: - print("Error in Final Settlement (Nonlinear Hyper + Step): %0.3f" % final_error_step) - print("Error in Final Settlement (Nonlinear Hyperbolic): %0.3f" % final_error_hyper_nonlinear) - print("Error in Final Settlement (Weighted Nonlinear Hyperbolic): %0.3f" % final_error_hyper_weight_nonlinear) - print("Error in Final Settlement (Original Hyperbolic): %0.3f" % final_error_hyper_original) - print("Error in Final Settlement (Asaoka): %0.3f" % final_error_asaoka) - - - - - # ========================================== - # Post-Processing #2 : 그래프 작성 - # ========================================== - - # 만약 그래프 도시가 필요할 경우, - if plot_show: - - # 그래프 크기, 서브 그래프 개수 및 비율 설정 - fig, axes = plt.subplots(2, 1, figsize=(12, 9), gridspec_kw={'height_ratios': [1, 3]}) - - # 성토고 그래프 표시 - axes[0].plot(time, surcharge, color='black', label='surcharge height') - - # 성토고 그래프 설정 - axes[0].set_ylabel("Surcharge height (m)", fontsize=15) - axes[0].set_xlim(left=0) - axes[0].grid(color="gray", alpha=.5, linestyle='--') - axes[0].tick_params(direction='in') - - # 계측 및 예측 침하량 표시 - axes[1].scatter(time[0:settle.size], -settle, s=50, - facecolors='white', edgecolors='black', label='measured data') - axes[1].plot(time_hyper, -sp_hyper_original, - linestyle='--', color='red', label='Original Hyperbolic') - axes[1].plot(time_hyper, -sp_hyper_nonlinear, - linestyle='--', color='green', label='Nonlinear Hyperbolic') - axes[1].plot(time_hyper, -sp_hyper_weight_nonlinear, - linestyle='--', color='blue', label='Nonlinear Hyperbolic (Weighted)') - axes[1].plot(time_asaoka, -sp_asaoka, - linestyle='--', color='orange', label='Asaoka') - axes[1].plot(time[step_start_index[0]:], -sp_step[step_start_index[0]:], - linestyle='--', color='navy', label='Nonlinear + Step Loading') - - # 침하량 그래프 설정 - axes[1].set_xlabel("Time (day)", fontsize=15) - axes[1].set_ylabel("Settlement (cm)", fontsize=15) - axes[1].set_ylim(top=0) - axes[1].set_ylim(bottom=-1.5 * settle.max()) - axes[1].set_xlim(left=0) - axes[1].grid(color="gray", alpha=.5, linestyle='--') - axes[1].tick_params(direction='in') - - # 범례 표시 - axes[1].legend(loc=1, ncol=3, frameon=True, fontsize=10) - - # 예측 데이터 사용 범위 음영 처리 - 단계성토 - plt.axvspan(time[step_start_index[0]], final_step_predict_end_date, - alpha=0.1, color='grey', hatch='//') - - # 예측 데이터 사용 범위 음영 처리 - 기존 및 비선형 쌍곡선 - plt.axvspan(final_step_start_date, final_step_predict_end_date, - alpha=0.1, color='grey', hatch='\\') - - # 예측 데이터 사용 범위 표시 화살표 세로 위치 설정 - arrow1_y_loc = 1.3 * min(-settle) - arrow2_y_loc = 1.4 * min(-settle) - - # 화살표 크기 설정 - arrow_head_width = 0.03 * max(settle) - arrow_head_length = 0.01 * max(time) - - # 예측 데이터 사용 범위 화살표 처리 - 단계성토 - axes[1].arrow(time[step_start_index[0]], arrow1_y_loc, - final_step_predict_end_date - time[step_start_index[0]], 0, - head_width=arrow_head_width, head_length=arrow_head_length, - color='black', length_includes_head='True') - axes[1].arrow(final_step_predict_end_date, arrow1_y_loc, - time[step_start_index[0]] - final_step_predict_end_date, 0, - head_width=arrow_head_width, head_length=arrow_head_length, - color='black', length_includes_head='True') - - # 예측 데이터 사용 범위 화살표 처리 - 기존 및 비선형 쌍곡선 - axes[1].arrow(final_step_start_date, arrow2_y_loc, - final_step_predict_end_date - final_step_start_date, 0, - head_width=arrow_head_width, head_length=arrow_head_length, - color='black', length_includes_head='True') - axes[1].arrow(final_step_predict_end_date, arrow2_y_loc, - final_step_start_date - final_step_predict_end_date, 0, - head_width=arrow_head_width, head_length=arrow_head_length, - color='black', length_includes_head='True') - - # Annotation 표시용 공간 설정 - space = max(time) * 0.01 - - # 예측 데이터 사용 범위 범례 표시 - 단계성토 - plt.annotate('Data Range Used (Nonlinear + Step Loading)', xy=(final_step_predict_end_date, arrow1_y_loc), - xytext=(final_step_predict_end_date + space, arrow1_y_loc), - horizontalalignment='left', verticalalignment='center') - - # 예측 데이터 사용 범위 범례 표시 - 기존 및 비선형 쌍곡선 - plt.annotate('Data Range Used (Hyperbolic and Asaoka)', xy=(final_step_predict_end_date, arrow1_y_loc), - xytext=(final_step_predict_end_date + space, arrow2_y_loc), - horizontalalignment='left', verticalalignment='center') - - # RMSE 산정 범위 표시 화살표 세로 위치 설정 - arrow3_y_loc = 0.55 * min(-settle) - - # RMSE 산정 범위 화살표 표시 - axes[1].arrow(final_step_predict_end_date, arrow3_y_loc, - final_step_end_date - final_step_predict_end_date, 0, - head_width=arrow_head_width, head_length=arrow_head_length, - color='black', length_includes_head='True') - axes[1].arrow(final_step_end_date, arrow3_y_loc, - final_step_predict_end_date - final_step_end_date, 0, - head_width=arrow_head_width, head_length=arrow_head_length, - color='black', length_includes_head='True') - - # RMSE 산정 범위 세로선 설정 - axes[1].axvline(x=final_step_end_date, color='silver', linestyle=':') - - # RMSE 산정 범위 범례 표시 - plt.annotate('RMSE Estimation Section', xy=(final_step_end_date, arrow3_y_loc), - xytext=(final_step_end_date + space, arrow3_y_loc), - horizontalalignment='left', verticalalignment='center') - - # RMSE 출력 - mybox = {'facecolor': 'white', 'edgecolor': 'black', 'boxstyle': 'round', 'alpha': 0.2} - plt.text(max(time) * 1.04, 0.20 * min(-settle), - r"$\bf{Root\ Mean\ Squared\ Error}$" - + "\n" + "Original Hyperbolic: %0.3f" % rmse_hyper_original - + "\n" + "Nonlinear Hyperbolic: %0.3f" % rmse_hyper_nonlinear - + "\n" + "Nonlinear Hyperbolic (Weighted): %0.3f" % rmse_hyper_weight_nonlinear - + "\n" + "Asaoka: %0.3f" % rmse_asaoka - + "\n" + "Nonlinear + Step Loading: %0.3f" % rmse_step, - color='r', horizontalalignment='right', - verticalalignment='top', fontsize='10', bbox=mybox) - - # (최종 계측 침하량 - 예측값) 출력 - plt.text(max(time) * 1.04, 0.55 * min(-settle), - r"$\bf{Error\ in\ Final\ Settlement}$" - + "\n" + "Original Hyperbolic: %0.3f" % final_error_hyper_original - + "\n" + "Nonlinear Hyperbolic: %0.3f" % final_error_hyper_nonlinear - + "\n" + "Nonlinear Hyperbolic (Weighted): %0.3f" % final_error_hyper_weight_nonlinear - + "\n" + "Asaoka: %0.3f" % final_error_asaoka - + "\n" + "Nonlinear + Step Loading: %0.3f" % final_error_step, - color='r', horizontalalignment='right', - verticalalignment='top', fontsize='10', bbox=mybox) - - # 파일 이름만 추출 - filename = os.path.basename(point_name) - - # 그래프 제목 표시 - plt.title(filename + ": up to %i%% data used in the final step" % final_step_predict_percent) - - # 그래프 저장 (SVG 및 PNG) - # plt.savefig(output_dir + '/' + filename +' %i percent (SVG).svg' %final_step_predict_percent, bbox_inches='tight') - #plt.savefig(output_dir + '/' + filename + ' %i percent (PNG).png' % final_step_predict_percent, bbox_inches='tight') - - # 그래프 출력 - if plot_show: - plt.show() - - # 그래프 닫기 (메모리 소모 방지) - plt.close() - - # 예측 완료 표시 - print("Settlement prediction is done for " + filename + - " with " + str(final_step_predict_percent) + "% data usage") - - # 단계 성토 고려 여부 표시 - is_multi_step = True - if len(step_start_index) == 1: - is_multi_step = False - - # 반환 - - axes[1].plot(time_hyper, -sp_hyper_original, - linestyle='--', color='red', label='Original Hyperbolic') - axes[1].plot(time_hyper, -sp_hyper_nonlinear, - linestyle='--', color='green', label='Nonlinear Hyperbolic') - axes[1].plot(time_hyper, -sp_hyper_weight_nonlinear, - linestyle='--', color='blue', label='Nonlinear Hyperbolic (Weighted)') - axes[1].plot(time_asaoka, -sp_asaoka, - linestyle='--', color='orange', label='Asaoka') - axes[1].plot(time[step_start_index[0]:], -sp_step[step_start_index[0]:], - linestyle='--', color='navy', label='Nonlinear + Step Loading') - return [time_hyper, sp_hyper_original, time_hyper, sp_hyper_nonlinear, time_hyper, sp_hyper_weight_nonlinear, time_asaoka, sp_asaoka, - time[step_start_index[0]:], sp_step[step_start_index[0]:], - rmse_hyper_original, - rmse_hyper_nonlinear, - rmse_hyper_weight_nonlinear, - rmse_asaoka, - rmse_step, - final_error_hyper_original, - final_error_hyper_nonlinear, - final_error_hyper_weight_nonlinear, - final_error_asaoka, - final_error_step] + time[step_start_index[0]:], sp_step[step_start_index[0]:]] - -''' -run_settle_prediction(input_file='data/2-5_No.39.csv', - output_dir='output', - final_step_predict_percent=50, - additional_predict_percent=100, - plot_show=True, - print_values=True, - run_original_hyperbolic=True, - run_nonlinear_hyperbolic=True, - run_weighted_nonlinear_hyperbolic=True, - run_asaoka=True, - run_step_prediction=True, - asaoka_interval=3, - settle_unit='cm') -''' \ No newline at end of file + ''' + 변경사항 + 필요없는 post-processing 코드를 에러 방지 차원에서 모두 삭제 + ''' \ No newline at end of file