Compare commits
No commits in common. "2b3e70b3b6ab2a6c032a050e515fa04a0aa7eeeb" and "1fbbdf02b006cda8f253254f3248f95b832af147" have entirely different histories.
2b3e70b3b6
...
1fbbdf02b0
|
|
@ -1,215 +0,0 @@
|
||||||
"""
|
|
||||||
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.")
|
|
||||||
|
|
@ -1,777 +0,0 @@
|
||||||
"""
|
|
||||||
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')
|
|
||||||
'''
|
|
||||||
|
|
@ -0,0 +1,198 @@
|
||||||
|
|
||||||
|
# =================
|
||||||
|
# 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_asaoka(px, pt, dt):
|
||||||
|
return (px[1] / (1 - px[0])) * (1 - (px[0] ** (pt / dt)))
|
||||||
|
|
||||||
|
# 아사오카법 목표 함수
|
||||||
|
def fun_asaoka(px, ps_b, ps_a):
|
||||||
|
return px[0] * ps_b + px[1] - ps_a
|
||||||
|
|
||||||
|
|
||||||
|
# ====================
|
||||||
|
# 파일 읽기, 데이터 설정
|
||||||
|
# ====================
|
||||||
|
|
||||||
|
# CSV 파일 읽기
|
||||||
|
data = pd.read_csv("data/2-6_J-01.csv")
|
||||||
|
|
||||||
|
# 시간, 침하량, 성토고 배열 생성
|
||||||
|
time = data['Time'].to_numpy()
|
||||||
|
settle = data['Settlement'].to_numpy()
|
||||||
|
surcharge = data['Surcharge'].to_numpy()
|
||||||
|
|
||||||
|
# 만일 침하량의 단위가 m일 경우, 조정
|
||||||
|
settle = settle * 100
|
||||||
|
|
||||||
|
# 데이터 닫기
|
||||||
|
|
||||||
|
# 마지막 계측 데이터 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:
|
||||||
|
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 * 50 / 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 = 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 (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]]
|
||||||
|
|
||||||
|
# 초기 시점 및 침하량 산정
|
||||||
|
t0_asaoka = tm_asaoka[0]
|
||||||
|
s0_asaoka = sm_asaoka[0]
|
||||||
|
|
||||||
|
# 초기 시점에 대한 시간 조정
|
||||||
|
tm_asaoka = tm_asaoka - t0_asaoka
|
||||||
|
|
||||||
|
# 초기 침하량에 대한 침하량 조정
|
||||||
|
sm_asaoka = sm_asaoka - s0_asaoka
|
||||||
|
|
||||||
|
# Interpolation 함수 설정
|
||||||
|
inter_fn = interp1d(tm_asaoka, sm_asaoka, kind='cubic')
|
||||||
|
|
||||||
|
# 데이터 구축 간격 설정
|
||||||
|
interval = 10
|
||||||
|
num_data = int(tm_asaoka[-1]/3)
|
||||||
|
|
||||||
|
tm_asaoka_new = np.linspace(0, tm_asaoka[-1], num=num_data, endpoint=True)
|
||||||
|
sm_asaoka_new = inter_fn(tm_asaoka_new)
|
||||||
|
|
||||||
|
sm_asaoka_new1 = sm_asaoka_new[0:-2]
|
||||||
|
sm_asaoka_new2 = sm_asaoka_new[1:-1]
|
||||||
|
|
||||||
|
x0 = np.ones(2)
|
||||||
|
res_lsq_asaoka = least_squares(fun_asaoka, x0,
|
||||||
|
args=(sm_asaoka_new1, sm_asaoka_new2))
|
||||||
|
|
||||||
|
# 계측 및 예측 침하량 표시
|
||||||
|
plt.scatter(sm_asaoka_new1, sm_asaoka_new2, s=50,
|
||||||
|
facecolors='white', edgecolors='black', label='measured data')
|
||||||
|
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -38,7 +38,16 @@ for input_file in input_files:
|
||||||
for i in range(20, 100, 10):
|
for i in range(20, 100, 10):
|
||||||
|
|
||||||
# 침하 예측을 수행하고 반환값 저장
|
# 침하 예측을 수행하고 반환값 저장
|
||||||
return_values = settle_prediction_steps_main.run_settle_prediction_from_file(input_file=input_file)
|
return_values = settle_prediction_steps_main.\
|
||||||
|
run_settle_prediction(input_file=input_file, output_dir=output_dir,
|
||||||
|
final_step_predict_percent=i,
|
||||||
|
additional_predict_percent=100,
|
||||||
|
plot_show=False,
|
||||||
|
print_values=False,
|
||||||
|
run_original_hyperbolic=True,
|
||||||
|
run_nonlinear_hyperbolic=True,
|
||||||
|
run_step_prediction=True,
|
||||||
|
settle_unit=settle_unit)
|
||||||
|
|
||||||
# 데이터프레임에 일단 및 다단 성토를 포함한 예측의 에러를 저장
|
# 데이터프레임에 일단 및 다단 성토를 포함한 예측의 에러를 저장
|
||||||
df_overall.loc[len(df_overall.index)] = [input_file, i, return_values[0], return_values[1],
|
df_overall.loc[len(df_overall.index)] = [input_file, i, return_values[0], return_values[1],
|
||||||
|
|
@ -52,4 +61,4 @@ for input_file in input_files:
|
||||||
|
|
||||||
# 에러 파일을 출력
|
# 에러 파일을 출력
|
||||||
df_overall.to_csv('error_overall.csv')
|
df_overall.to_csv('error_overall.csv')
|
||||||
df_multi_step.to_csv('error_multi_step.csv')
|
df_multi_step.to_csv('error_multi_step.csv')
|
||||||
|
|
|
||||||
270
controller.py
270
controller.py
|
|
@ -1,270 +0,0 @@
|
||||||
"""
|
|
||||||
Title: Controller
|
|
||||||
Developer:
|
|
||||||
Sang Inn Woo, Ph.D. @ Incheon National University
|
|
||||||
Starting Date: 2022-11-10
|
|
||||||
"""
|
|
||||||
import psycopg2 as pg2
|
|
||||||
import numpy as np
|
|
||||||
import settle_prediction_steps_main
|
|
||||||
import matplotlib.pyplot as plt
|
|
||||||
|
|
||||||
import sys
|
|
||||||
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=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 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()
|
|
||||||
|
|
||||||
# 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)
|
|
||||||
|
|
||||||
# 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 (단계성토 고려법)
|
|
||||||
|
|
||||||
'''
|
|
||||||
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)
|
|
||||||
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()
|
|
||||||
|
|
||||||
|
|
||||||
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") #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 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()
|
|
||||||
|
|
||||||
# initialize time, surcharge, and settlement lists
|
|
||||||
time_monitored = []
|
|
||||||
surcharge_monitored = []
|
|
||||||
settlement_monitored = []
|
|
||||||
|
|
||||||
# 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]))
|
|
||||||
|
|
||||||
# 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
|
|
||||||
# 1: original hyperbolic method
|
|
||||||
# 2: nonlinear hyperbolic method
|
|
||||||
# 3: weighted nonlinear hyperbolic method
|
|
||||||
# 4: Asaoka method
|
|
||||||
# 5: Step loading
|
|
||||||
|
|
||||||
time_predicted_series = []
|
|
||||||
settlement_predicted_series = []
|
|
||||||
|
|
||||||
for i in range(5):
|
|
||||||
|
|
||||||
# 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"""
|
|
||||||
|
|
||||||
# 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]))
|
|
||||||
|
|
||||||
# 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]})
|
|
||||||
|
|
||||||
# 성토고 그래프 표시
|
|
||||||
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='grey', label='measured data')
|
|
||||||
|
|
||||||
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: 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)
|
|
||||||
print("The settlement prediction is over.")
|
|
||||||
|
|
||||||
#read_database_and_plot(business_code=business_code, cons_code=cons_code)
|
|
||||||
#print("Visualization is over.")
|
|
||||||
|
|
@ -1,10 +1,3 @@
|
||||||
"""
|
|
||||||
Title: Error analysis of the settlement prediction curves
|
|
||||||
Developer:
|
|
||||||
Sang Inn Woo, Ph.D. @ Incheon National University
|
|
||||||
Starting Date: 2022-11-10
|
|
||||||
"""
|
|
||||||
|
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -1,273 +0,0 @@
|
||||||
,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
|
|
||||||
|
|
|
@ -1,273 +0,0 @@
|
||||||
,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
|
|
||||||
|
|
|
@ -1,24 +1,24 @@
|
||||||
"""
|
"""
|
||||||
Title: Soft ground settlement prediction
|
Title: Soft ground settlement prediction considering the step loading
|
||||||
Developer:
|
Main Developer: Sang Inn Woo, Ph.D. @ Incheon National University
|
||||||
Sang Inn Woo, Ph.D. @ Incheon National University
|
|
||||||
Kwak Taeyoung, Ph.D. @ KICT
|
|
||||||
|
|
||||||
Starting Date: 2022-08-11
|
Starting Date: 2022-08-11
|
||||||
Abstract:
|
Abstract:
|
||||||
This main objective of this code is to predict
|
This main objective of this code is to predict
|
||||||
time vs. (consolidation) settlement curves of soft clay ground.
|
time vs. (consolidation) settlement curves of soft clay ground
|
||||||
|
under step loading conditions.
|
||||||
|
The methodologies used are 1) superposition of time-settlement curves
|
||||||
|
and 2) nonlinear regression for hyperbolic curves.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# =================
|
# =================
|
||||||
# Import 섹션
|
# Import 섹션
|
||||||
# =================
|
# =================
|
||||||
|
|
||||||
import os.path
|
import os.path
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
from scipy.optimize import least_squares
|
from scipy.optimize import least_squares
|
||||||
from scipy.interpolate import interp1d
|
|
||||||
|
|
||||||
|
|
||||||
# =================
|
# =================
|
||||||
|
|
@ -29,26 +29,16 @@ from scipy.interpolate import interp1d
|
||||||
def generate_data_hyper(px, pt):
|
def generate_data_hyper(px, pt):
|
||||||
return pt / (px[0] * pt + px[1])
|
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):
|
def fun_hyper_nonlinear(px, pt, py):
|
||||||
return pt / (px[0] * pt + px[1]) - 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):
|
def fun_hyper_original(px, pt, py):
|
||||||
return px[0] * pt + px[1] - 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 산정
|
# RMSE 산정
|
||||||
def fun_rmse(py1, py2):
|
def fun_rmse(py1, py2):
|
||||||
|
|
@ -56,17 +46,35 @@ def fun_rmse(py1, py2):
|
||||||
return np.sqrt(mse)
|
return np.sqrt(mse)
|
||||||
|
|
||||||
|
|
||||||
def run_settle_prediction(point_name, np_time, np_surcharge, np_settlement,
|
def run_settle_prediction(input_file, output_dir,
|
||||||
final_step_predict_percent, additional_predict_percent, asaoka_interval = 5):
|
final_step_predict_percent, additional_predict_percent,
|
||||||
|
plot_show,
|
||||||
|
print_values,
|
||||||
|
run_original_hyperbolic='True',
|
||||||
|
run_nonlinear_hyperbolic='True',
|
||||||
|
run_step_prediction='True',
|
||||||
|
settle_unit='cm'):
|
||||||
|
|
||||||
# ====================
|
# ====================
|
||||||
# 파일 읽기, 데이터 설정
|
# 파일 읽기, 데이터 설정
|
||||||
# ====================
|
# ====================
|
||||||
|
|
||||||
|
# 현재 파일 이름 출력
|
||||||
|
print("Working on " + input_file)
|
||||||
|
|
||||||
|
# CSV 파일 읽기
|
||||||
|
data = pd.read_csv(input_file, encoding='euc-kr')
|
||||||
|
|
||||||
# 시간, 침하량, 성토고 배열 생성
|
# 시간, 침하량, 성토고 배열 생성
|
||||||
time = np_time
|
time = data['Time'].to_numpy()
|
||||||
settle = np_settlement
|
settle = data['Settlement'].to_numpy()
|
||||||
surcharge = np_surcharge
|
surcharge = data['Surcharge'].to_numpy()
|
||||||
|
|
||||||
|
# 만일 침하량의 단위가 m일 경우, 조정
|
||||||
|
if settle_unit == 'm':
|
||||||
|
settle = settle * 100
|
||||||
|
|
||||||
|
# 데이터 닫기
|
||||||
|
|
||||||
# 마지막 계측 데이터 index + 1 파악
|
# 마지막 계측 데이터 index + 1 파악
|
||||||
final_index = time.size
|
final_index = time.size
|
||||||
|
|
@ -86,11 +94,12 @@ def run_settle_prediction(point_name, np_time, np_surcharge, np_settlement,
|
||||||
|
|
||||||
# 단계 시작 시점 초기화
|
# 단계 시작 시점 초기화
|
||||||
step_start_date = 0
|
step_start_date = 0
|
||||||
|
|
||||||
# 모든 시간-성토고 데이터에서 순차적으로 확인
|
# 모든 시간-성토고 데이터에서 순차적으로 확인
|
||||||
for index in range(len(surcharge)):
|
for index in range(len(surcharge)):
|
||||||
|
|
||||||
# 만일 성토고의 변화가 있을 경우,
|
# 만일 성토고의 변화가 있을 경우,
|
||||||
if surcharge[index] > current_surcharge*1.05 or surcharge[index] < current_surcharge*0.95:
|
if surcharge[index] != current_surcharge:
|
||||||
step_end_index.append(index)
|
step_end_index.append(index)
|
||||||
step_start_index.append(index)
|
step_start_index.append(index)
|
||||||
current_surcharge = surcharge[index]
|
current_surcharge = surcharge[index]
|
||||||
|
|
@ -233,6 +242,8 @@ def run_settle_prediction(point_name, np_time, np_surcharge, np_settlement,
|
||||||
|
|
||||||
# 쌍곡선 계수 저장 및 출력
|
# 쌍곡선 계수 저장 및 출력
|
||||||
x_step = res_lsq_hyper_nonlinear.x
|
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_to_end_update = generate_data_hyper(x_step, tm_to_end)
|
||||||
|
|
@ -242,8 +253,13 @@ def run_settle_prediction(point_name, np_time, np_surcharge, np_settlement,
|
||||||
sp_step[step_start_index[i]:final_index] + sp_to_end_update + s0_this_step
|
sp_step[step_start_index[i]:final_index] + sp_to_end_update + s0_this_step
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# Settlement prediction (nonliner, weighted nonlinear and original hyperbolic)
|
# Settlement prediction (nonliner and original hyperbolic)
|
||||||
# =========================================================
|
# =========================================================
|
||||||
|
|
||||||
# 성토 마지막 데이터 추출
|
# 성토 마지막 데이터 추출
|
||||||
|
|
@ -270,16 +286,8 @@ def run_settle_prediction(point_name, np_time, np_surcharge, np_settlement,
|
||||||
args=(tm_hyper, sm_hyper))
|
args=(tm_hyper, sm_hyper))
|
||||||
# 비선형 쌍곡선 법 계수 저장 및 출력
|
# 비선형 쌍곡선 법 계수 저장 및 출력
|
||||||
x_hyper_nonlinear = res_lsq_hyper_nonlinear.x
|
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
|
|
||||||
|
|
||||||
# 회귀분석 시행 (기존 쌍곡선법) - (0, 0)에 해당하는 초기 데이터를 제외하고 회귀분석 실시
|
# 회귀분석 시행 (기존 쌍곡선법) - (0, 0)에 해당하는 초기 데이터를 제외하고 회귀분석 실시
|
||||||
x0 = np.ones(2)
|
x0 = np.ones(2)
|
||||||
|
|
@ -287,82 +295,240 @@ def run_settle_prediction(point_name, np_time, np_surcharge, np_settlement,
|
||||||
args=(tm_hyper[1:], sm_hyper[1:]))
|
args=(tm_hyper[1:], sm_hyper[1:]))
|
||||||
# 기존 쌍곡선 법 계수 저장 및 출력
|
# 기존 쌍곡선 법 계수 저장 및 출력
|
||||||
x_hyper_original = res_lsq_hyper_original.x
|
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_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_original = generate_data_hyper(x_hyper_original, time_hyper)
|
||||||
|
|
||||||
# 예측 침하량 산정
|
# 예측 침하량 산정
|
||||||
sp_hyper_nonlinear = sp_hyper_nonlinear + s0_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
|
sp_hyper_original = sp_hyper_original + s0_hyper
|
||||||
time_hyper = time_hyper + t0_hyper
|
time_hyper = time_hyper + t0_hyper
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# ===============================
|
# ===============================
|
||||||
# Settlement prediction (Asaoka)
|
# 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='linear')
|
|
||||||
'''
|
|
||||||
변경사항
|
|
||||||
kind='cubic' --> kind='linear'
|
|
||||||
드물게 동일 시점에 침하 데이터가 다수 존재할 경우, 에러가 나서 수정함
|
|
||||||
'''
|
|
||||||
|
|
||||||
# 데이터 구축 간격 및 그에 해당하는 데이터 포인트 개수 설정
|
|
||||||
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
|
|
||||||
|
|
||||||
# 현재 단계 예측 침하량 산정 (침하 예측 끝까지)
|
|
||||||
sp_asaoka = generate_data_asaoka(x_asaoka, time_asaoka, asaoka_interval)
|
|
||||||
|
|
||||||
# 예측 침하량 산정
|
|
||||||
sp_asaoka = sp_asaoka + s0_asaoka
|
|
||||||
time_asaoka = time_asaoka + t0_asaoka
|
|
||||||
|
|
||||||
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]:]]
|
|
||||||
|
|
||||||
'''
|
|
||||||
변경사항
|
|
||||||
필요없는 post-processing 코드를 에러 방지 차원에서 모두 삭제
|
# ==========
|
||||||
'''
|
# 에러 산정
|
||||||
|
# ==========
|
||||||
|
|
||||||
|
# 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_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 산정 (단계, 비선형 쌍곡선, 기존 쌍곡선)
|
||||||
|
rmse_step = fun_rmse(sm_rmse, sp_step_rmse)
|
||||||
|
rmse_hyper_nonlinear = fun_rmse(sm_rmse, sp_hyper_nonlinear_rmse)
|
||||||
|
rmse_hyper_original = fun_rmse(sm_rmse, sp_hyper_original_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 (Original Hyperbolic): %0.3f" % rmse_hyper_original)
|
||||||
|
|
||||||
|
# (최종 계측 침하량 - 예측 침하량) 계산
|
||||||
|
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_original = np.abs(settle[-1] - sp_hyper_original_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 (Original Hyperbolic): %0.3f" % final_error_hyper_original)
|
||||||
|
|
||||||
|
# =====================
|
||||||
|
# Post-Processing
|
||||||
|
# =====================
|
||||||
|
|
||||||
|
# 그래프 크기, 서브 그래프 개수 및 비율 설정
|
||||||
|
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[step_start_index[0]:], -sp_step[step_start_index[0]:],
|
||||||
|
linestyle='-', color='blue', label='Nonlinear + Step Loading')
|
||||||
|
axes[1].plot(time_hyper, -sp_hyper_nonlinear,
|
||||||
|
linestyle='--', color='green', label='Nonlinear Hyperbolic')
|
||||||
|
axes[1].plot(time_hyper, -sp_hyper_original,
|
||||||
|
linestyle='--', color='red', label='Original Hyperbolic')
|
||||||
|
|
||||||
|
# 침하량 그래프 설정
|
||||||
|
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=2, frameon=True, fontsize=12)
|
||||||
|
|
||||||
|
# 예측 데이터 사용 범위 음영 처리 - 단계성토
|
||||||
|
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 (Nonlinear and Original Hyperbolic)', 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), 0.25 * min(-settle),
|
||||||
|
"Root Mean Squared Error"
|
||||||
|
+ "\n" + "Nonlinear + Step Loading: %0.3f" % rmse_step
|
||||||
|
+ "\n" + "Nonlinear Hyperbolic: %0.3f" % rmse_hyper_nonlinear
|
||||||
|
+ "\n" + "Original Hyperbolic: %0.3f" % rmse_hyper_original,
|
||||||
|
color='r', horizontalalignment='right',
|
||||||
|
verticalalignment='top', fontsize='12', bbox=mybox)
|
||||||
|
|
||||||
|
# (최종 계측 침하량 - 예측값) 출력
|
||||||
|
plt.text(max(time), 0.65 * min(-settle),
|
||||||
|
"Error in Final Monitored Settlement"
|
||||||
|
+ "\n" + "Nonlinear + Step Loading: %0.3f" % final_error_step
|
||||||
|
+ "\n" + "Nonlinear Hyperbolic: %0.3f" % final_error_hyper_nonlinear
|
||||||
|
+ "\n" + "Original Hyperbolic: %0.3f" % final_error_hyper_original,
|
||||||
|
color='r', horizontalalignment='right',
|
||||||
|
verticalalignment='top', fontsize='12', bbox=mybox)
|
||||||
|
|
||||||
|
# 파일 이름만 추출
|
||||||
|
filename = os.path.basename(input_file)
|
||||||
|
|
||||||
|
# 그래프 제목 표시
|
||||||
|
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
|
||||||
|
|
||||||
|
# 반환
|
||||||
|
return [rmse_hyper_original, rmse_hyper_nonlinear, rmse_step,
|
||||||
|
final_error_hyper_original, final_error_hyper_nonlinear,
|
||||||
|
final_error_step, is_multi_step]
|
||||||
|
|
||||||
|
|
||||||
|
#run_settle_prediction('data_1/1_SP-16.csv', 'output',
|
||||||
|
# 80, 100, True, True)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue