From SW's laptop

Addition of Asaoka method
master
sanginnwoo 2022-10-31 17:16:21 +09:00
parent 10f733c224
commit 1fbbdf02b0
3 changed files with 14 additions and 27 deletions

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8 (SettlementPrediction)" project-jdk-type="Python SDK" /> <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (settle_prediction)" project-jdk-type="Python SDK" />
</project> </project>

7
.idea/other.xml Normal file
View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PySciProjectComponent">
<option name="PY_SCI_VIEW" value="true" />
<option name="PY_SCI_VIEW_SUGGESTED" value="true" />
</component>
</project>

View File

@ -14,35 +14,15 @@ from scipy.interpolate import interp1d
# Function 섹션 # Function 섹션
# ================= # =================
# 주어진 계수를 이용하여 쌍곡선 시간-침하 곡선 반환 # 주어진 계수를 이용하여 아사오카법 기반 시간-침하 곡선 반환
def generate_data_hyper(px, pt):
return pt / (px[0] * pt + px[1])
# 회귀식과 측정치와의 잔차 반환 (비선형 쌍곡선)
def fun_hyper_nonlinear(px, pt, py):
return pt / (px[0] * pt + px[1]) - py
# 회귀식과 측정치와의 잔차 반환 (기존 쌍곡선)
def fun_hyper_original(px, pt, py):
return px[0] * pt + px[1] - pt / py
# RMSE 산정
def fun_rmse(py1, py2):
mse = np.square(np.subtract(py1, py2)).mean()
return np.sqrt(mse)
def generate_data_asaoka(px, pt, dt): def generate_data_asaoka(px, pt, dt):
return (px[1] / (1 - px[0])) * (1 - (px[0] ** (pt / dt))) return (px[1] / (1 - px[0])) * (1 - (px[0] ** (pt / dt)))
# 아사오카법 목표 함수
def fun_asaoka(px, ps_b, ps_a): def fun_asaoka(px, ps_b, ps_a):
return px[0] * ps_b + px[1] - ps_a return px[0] * ps_b + px[1] - ps_a
# ==================== # ====================
# 파일 읽기, 데이터 설정 # 파일 읽기, 데이터 설정
# ==================== # ====================
@ -174,9 +154,9 @@ surcharge = np.append(surcharge, surcharge_add)
# 마지막 인덱스값 재조정 # 마지막 인덱스값 재조정
final_index = time.size final_index = time.size
# ========================================================= # ===============================
# Settlement prediction (nonliner and original hyperbolic) # Settlement prediction (Asaoka)
# ========================================================= # ===============================
# 성토 마지막 데이터 추출 # 성토 마지막 데이터 추출
tm_asaoka = time[step_start_index[num_steps - 1]:step_end_index[num_steps - 1]] tm_asaoka = time[step_start_index[num_steps - 1]:step_end_index[num_steps - 1]]
@ -192,7 +172,7 @@ tm_asaoka = tm_asaoka - t0_asaoka
# 초기 침하량에 대한 침하량 조정 # 초기 침하량에 대한 침하량 조정
sm_asaoka = sm_asaoka - s0_asaoka sm_asaoka = sm_asaoka - s0_asaoka
# 인터폴레이션 함수 설정 # Interpolation 함수 설정
inter_fn = interp1d(tm_asaoka, sm_asaoka, kind='cubic') inter_fn = interp1d(tm_asaoka, sm_asaoka, kind='cubic')
# 데이터 구축 간격 설정 # 데이터 구축 간격 설정