Add files via upload
업데이트 내용은 다음과 같습니다. 1. 기존에 작업하던 1공구 SP-11의 전체단계(4단계)에 대하여 반복문을 통하여 돌아갈 수 있도록 수정하였습니다. (1_SP-11_Test.csv/ main_Rev.4.py / main.Rev.4_svg) 2. 앞서 완성한 main_Rev.4.py 코드의 적용성 검토를 위하여 3공구 SP-68 지점 데이터(4단계) 적용한 결과 첨부해드립니다. (3_SP-68_Test.csv / 3_SP-68_Rev.4.svg) +) 지점 데이터에 변화에 대한 입력값 수정 필요 부분은 다음과 같습니다. line 50 : 불러올 .csv 파일명 line 61-62 : start/end index line 64 : 성토 단계 line 170 ~ : 그래프 추가 line 183 : .svg 파일명master
parent
8b279be17d
commit
2d8a39b694
|
|
@ -0,0 +1,125 @@
|
|||
Time,Settle,Surcharge
|
||||
0,0,1.5
|
||||
5,17.4,1.5
|
||||
7,23.9,1.5
|
||||
11,32.2,1.5
|
||||
14,41.7,1.5
|
||||
21,64.1,1.5
|
||||
28,72.5,1.5
|
||||
35,78.8,1.5
|
||||
42,93.3,1.5
|
||||
48,102.5,1.5
|
||||
53,108,3.002
|
||||
54,109.2,3.002
|
||||
55,110.4,3.002
|
||||
56,111.6,3.002
|
||||
59,117.3,3.002
|
||||
60,119.2,3.002
|
||||
61,121.1,3.002
|
||||
62,122.7,3.002
|
||||
67,130.2,3.002
|
||||
68,131.9,3.002
|
||||
69,133.6,3.002
|
||||
70,135.4,3.002
|
||||
74,141.4,3.002
|
||||
75,142.9,3.002
|
||||
76,144.4,3.002
|
||||
77,146.2,3.002
|
||||
80,149.2,3.002
|
||||
81,150.2,3.002
|
||||
82,151.2,3.002
|
||||
83,152.2,3.002
|
||||
91,162.8,3.002
|
||||
98,170,3.002
|
||||
105,177,3.002
|
||||
112,182.4,3.002
|
||||
115,185,3.002
|
||||
117,186.5,3.002
|
||||
118,187.3,3.002
|
||||
122,202.9,4.095
|
||||
124,210.5,4.095
|
||||
125,214.5,4.095
|
||||
126,218.6,4.095
|
||||
129,222.4,4.095
|
||||
130,223.7,4.095
|
||||
131,225,4.095
|
||||
132,226.3,4.095
|
||||
133,227.5,4.095
|
||||
136,231.7,4.095
|
||||
137,233.1,4.095
|
||||
138,234.5,4.095
|
||||
139,235.9,4.095
|
||||
140,237.3,4.095
|
||||
143,240.7,4.095
|
||||
147,245.5,4.095
|
||||
151,249.7,4.095
|
||||
154,252.8,4.095
|
||||
158,257.8,4.095
|
||||
161,261.1,4.095
|
||||
164,264.1,4.095
|
||||
168,268,4.095
|
||||
172,272.2,4.095
|
||||
175,275.5,4.095
|
||||
181,283.5,4.095
|
||||
192,293.5,4.095
|
||||
195,296.2,4.095
|
||||
199,301.3,4.095
|
||||
202,304.6,4.095
|
||||
209,311.1,4.095
|
||||
216,316,4.095
|
||||
223,322.3,4.095
|
||||
230,326.5,4.095
|
||||
237,331.6,4.095
|
||||
244,336.5,4.095
|
||||
251,341.2,4.095
|
||||
258,346.1,4.095
|
||||
266,350.9,4.095
|
||||
273,354,4.095
|
||||
280,356,4.095
|
||||
286,358,4.095
|
||||
294,360.9,4.095
|
||||
300,363,5.256
|
||||
301,363.4,5.256
|
||||
304,365.8,5.256
|
||||
305,366.5,5.256
|
||||
306,367.2,5.256
|
||||
307,367.9,5.256
|
||||
308,368.5,5.256
|
||||
311,369.5,5.256
|
||||
312,369.8,5.256
|
||||
313,370.1,5.256
|
||||
314,370.4,5.256
|
||||
327,377.4,5.256
|
||||
329,378.5,5.256
|
||||
336,381.8,5.256
|
||||
343,385.5,5.256
|
||||
350,388.4,5.256
|
||||
357,391.1,5.256
|
||||
364,394.1,5.256
|
||||
371,397.1,5.256
|
||||
377,399.5,5.256
|
||||
385,401.4,5.256
|
||||
388,402.3,5.256
|
||||
389,402.6,5.256
|
||||
390,402.9,5.256
|
||||
391,403.2,5.256
|
||||
392,403.5,5.256
|
||||
395,404.4,5.256
|
||||
397,405,5.256
|
||||
398,405.3,5.256
|
||||
402,406.5,5.256
|
||||
404,407.1,5.256
|
||||
405,407.4,5.256
|
||||
406,407.6,5.256
|
||||
409,408.2,5.256
|
||||
411,408.6,5.256
|
||||
419,410.2,5.256
|
||||
420,410.5,5.256
|
||||
425,411.5,5.256
|
||||
426,411.7,5.256
|
||||
434,413.3,5.256
|
||||
440,414.5,5.256
|
||||
447,415.9,5.256
|
||||
455,417.5,5.256
|
||||
461,418.7,5.256
|
||||
468,420,5.256
|
||||
|
File diff suppressed because it is too large
Load Diff
|
After Width: | Height: | Size: 68 KiB |
|
|
@ -0,0 +1,128 @@
|
|||
Time,Settle,Surcharge
|
||||
0,0,1.887
|
||||
3,41,1.887
|
||||
6,61.5,1.887
|
||||
10,73.1,1.887
|
||||
13,81.6,1.887
|
||||
17,86.9,1.887
|
||||
20,91.9,1.887
|
||||
23,96.7,1.887
|
||||
26,101.6,1.887
|
||||
30,107.7,2.94
|
||||
33,113,2.94
|
||||
37,119.4,2.94
|
||||
40,122.8,2.94
|
||||
44,128.4,2.94
|
||||
47,131.9,2.94
|
||||
52,139.5,2.94
|
||||
54,140.5,2.94
|
||||
59,148,2.94
|
||||
62,151,2.94
|
||||
65,153.8,2.94
|
||||
68,156.6,2.94
|
||||
72,160,2.94
|
||||
75,162.5,2.94
|
||||
79,166,2.94
|
||||
83,169.1,2.94
|
||||
86,172,2.94
|
||||
89,174.7,2.94
|
||||
94,180.3,2.94
|
||||
96,182.1,2.94
|
||||
100,185.5,2.94
|
||||
103,188.4,2.94
|
||||
110,195.8,2.94
|
||||
114,198.7,2.94
|
||||
118,201.1,2.94
|
||||
122,205,2.94
|
||||
125,206.9,2.94
|
||||
128,209.3,2.94
|
||||
131,211.8,2.94
|
||||
135,214.2,2.94
|
||||
138,216.2,2.94
|
||||
143,217.4,2.94
|
||||
146,218.3,2.94
|
||||
150,219.1,2.94
|
||||
153,219.9,2.94
|
||||
156,220.9,2.94
|
||||
159,222,2.94
|
||||
164,227.7,2.94
|
||||
167,230.7,2.94
|
||||
171,234.8,3.48
|
||||
173,236.5,3.48
|
||||
177,239.7,3.48
|
||||
180,241.8,3.48
|
||||
184,243.9,3.48
|
||||
187,246.3,3.48
|
||||
191,249.6,3.48
|
||||
194,252.1,3.48
|
||||
198,255.5,3.48
|
||||
201,258.9,3.48
|
||||
205,261.2,3.48
|
||||
208,263.4,3.48
|
||||
212,265.8,3.48
|
||||
215,267.1,3.48
|
||||
219,268.9,3.48
|
||||
222,270.2,3.48
|
||||
227,273.4,3.48
|
||||
229,275,3.48
|
||||
234,277.3,3.48
|
||||
237,278.1,3.48
|
||||
241,280,3.48
|
||||
244,281.2,3.48
|
||||
248,283.2,3.48
|
||||
251,284.6,3.48
|
||||
254,286.1,3.48
|
||||
257,287.5,3.48
|
||||
262,289.5,3.48
|
||||
265,290.7,3.48
|
||||
268,292,3.48
|
||||
271,293.2,3.48
|
||||
275,294.7,3.48
|
||||
278,295.3,3.48
|
||||
282,296.3,3.48
|
||||
285,296.7,3.48
|
||||
289,297.6,3.48
|
||||
292,298.5,3.48
|
||||
296,299.8,3.48
|
||||
299,300.6,3.48
|
||||
303,302.2,3.48
|
||||
306,303.5,3.48
|
||||
310,312.8,5.608
|
||||
313,318.1,5.608
|
||||
317,322.8,6.794
|
||||
320,328.9,6.794
|
||||
324,335.3,6.794
|
||||
328,340.5,6.794
|
||||
331,342.9,6.794
|
||||
334,345.5,6.794
|
||||
339,348,6.794
|
||||
342,350.6,6.794
|
||||
345,353.1,6.794
|
||||
348,355.6,6.794
|
||||
352,358.9,6.794
|
||||
355,361,6.794
|
||||
362,365.6,6.794
|
||||
367,369,6.794
|
||||
370,370.5,6.794
|
||||
373,372.2,6.794
|
||||
376,373.8,6.794
|
||||
381,376.4,6.794
|
||||
384,378.5,6.794
|
||||
387,380.4,6.794
|
||||
390,382.4,6.794
|
||||
394,385.8,6.794
|
||||
397,388,6.794
|
||||
402,389.9,6.794
|
||||
405,390.9,6.794
|
||||
409,392.6,6.794
|
||||
412,394,6.794
|
||||
415,396.7,6.794
|
||||
418,397.5,6.794
|
||||
422,398.7,6.794
|
||||
425,399.1,6.794
|
||||
429,399.8,6.794
|
||||
432,400.9,6.794
|
||||
436,403.6,6.794
|
||||
439,405.6,6.794
|
||||
443,408.2,6.794
|
||||
446,409.4,6.794
|
||||
|
|
|
@ -0,0 +1,184 @@
|
|||
# =================
|
||||
# Import 섹션
|
||||
# =================
|
||||
|
||||
import numpy as np
|
||||
from scipy.optimize import least_squares
|
||||
import matplotlib.pyplot as plt
|
||||
from matplotlib import rcParams
|
||||
import pandas as pd
|
||||
|
||||
# =================
|
||||
# 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
|
||||
|
||||
# =================
|
||||
# Step별 활용 Function
|
||||
# =================
|
||||
|
||||
# i단계 보정 침하량 산정
|
||||
def fun_step_measured_correction(m, p):
|
||||
return m - p
|
||||
|
||||
# i단계 t-ti 산정
|
||||
def fun_step_time_correction(t, ti):
|
||||
return t - ti
|
||||
|
||||
# i단계 침하곡선 작성
|
||||
def settlement_prediction_curve(m1, p1):
|
||||
return m1 + p1
|
||||
|
||||
# i단계 보정 예측 침하량 산정
|
||||
def fun_step_prediction_correction(m2, p2):
|
||||
return p2 + (m2[0] - p2[0])
|
||||
|
||||
|
||||
|
||||
# =================
|
||||
# 입력값 설정
|
||||
# =================
|
||||
|
||||
# CSV 파일 읽기
|
||||
data = pd.read_csv("3_SP-68_Test.csv")
|
||||
|
||||
# 시간, 침하량, 성토고 배열 생성
|
||||
time = data['Time'].to_numpy()
|
||||
settle = data['Settle'].to_numpy()
|
||||
surcharge = data['Surcharge'].to_numpy()
|
||||
|
||||
# =================
|
||||
# 성토 단계 구분
|
||||
# =================
|
||||
|
||||
step_start_index = [0, 9, 49, 90] # 단계별 성토 시작 지점 입력(4단계 이므로 4개)
|
||||
step_end_index = [8, 48, 89, 129] # 단계별 성토 종료 지점 입력(4단계 이므로 4개)
|
||||
x0 = np.ones(2)
|
||||
num_step = 4
|
||||
|
||||
for i in range(0, num_step): # 성토 단계에 따라 수정(4단계 이므로 0~4)
|
||||
|
||||
# i단계 실측 기간 및 침하량
|
||||
globals()['tm_{}'.format(i)] = time[step_start_index[i]:step_end_index[i]]
|
||||
globals()['ym_{}'.format(i)] = settle[step_start_index[i]:step_end_index[i]]
|
||||
|
||||
if i == 0 : # 1단계
|
||||
|
||||
res_lsq_hyper_nonlinear_0 = least_squares(fun_hyper_nonlinear, x0, args=(tm_0, ym_0))
|
||||
print(res_lsq_hyper_nonlinear_0.x)
|
||||
|
||||
globals()['settle_predicted_{}'.format(i)] = generate_data_hyper(res_lsq_hyper_nonlinear_0.x, time)
|
||||
|
||||
elif 0 < i < (num_step - 1):
|
||||
|
||||
# i단계~최종 실측 기간 및 침하량
|
||||
globals()['tmm_{}'.format(i)] = time[step_start_index[i]:step_end_index[-1]]
|
||||
globals()['ymm_{}'.format(i)] = settle[step_start_index[i]:step_end_index[-1]]
|
||||
|
||||
# i-1단계 예측 침하량(i단계 기간에 해당하는)
|
||||
globals()['yp_{}'.format(i)] = globals()['settle_predicted_{}'.format(i - 1)][(step_start_index[i]-step_start_index[i-1]):(step_end_index[i]-step_start_index[i-1])]
|
||||
# i-1 단계 예측 침하량 (i단계~최종)
|
||||
globals()['ypp_{}'.format(i)] = globals()['settle_predicted_{}'.format(i - 1)][(step_start_index[i]-step_start_index[i-1]):(step_end_index[-1]-step_start_index[i-1])]
|
||||
|
||||
# i단계 실측 보정 침하량 산정
|
||||
globals()['step_{}_measured_correction'.format(i)] = fun_step_measured_correction(globals()['ym_{}'.format(i)],globals()['yp_{}'.format(i)])
|
||||
# i단계 t-ti 산정
|
||||
globals()['step_{}_time_correction'.format(i)] = fun_step_time_correction(globals()['tmm_{}'.format(i)],
|
||||
globals()['tm_{}'.format(i)][0])
|
||||
|
||||
# i 단계 보정 침하량에 대한 예측 침하량 산정
|
||||
globals()['res_lsq_hyper_nonlinear_{}'.format(i)] = least_squares(fun_hyper_nonlinear, x0,
|
||||
args=(globals()['step_{}_time_correction'.format(i)][0:(step_end_index[i]-step_start_index[i])],
|
||||
globals()['step_{}_measured_correction'.format(i)]))
|
||||
|
||||
|
||||
print(globals()['res_lsq_hyper_nonlinear_{}'.format(i)].x)
|
||||
|
||||
globals()['settle_hyper_nonlinear_{}'.format(i)] = generate_data_hyper(globals()['res_lsq_hyper_nonlinear_{}'.format(i)].x,
|
||||
globals()['step_{}_time_correction'.format(i)])
|
||||
|
||||
# i단계 침하곡선 작성
|
||||
globals()['step_{}_prediction_curve'.format(i)] = settlement_prediction_curve(globals()['settle_hyper_nonlinear_{}'.format(i)],
|
||||
globals()['ypp_{}'.format(i)])
|
||||
|
||||
# i단계 보정 예측 침하량 산정
|
||||
globals()['settle_predicted_{}'.format(i)] = fun_step_prediction_correction(globals()['ymm_{}'.format(i)],
|
||||
globals()['step_{}_prediction_curve'.format(i)])
|
||||
|
||||
|
||||
else: # 최종 성토 단계
|
||||
|
||||
# i-1 단계 예측 침하량 (최종 단계에 해당하는)
|
||||
globals()['yp_{}'.format(i)] = globals()['settle_predicted_{}'.format(i - 1)][(step_start_index[i]-step_start_index[i-1]):step_end_index[i]]
|
||||
|
||||
# 최종 단계 실측 보정 침하량 산정
|
||||
globals()['step_{}_measured_correction'.format(i)] = fun_step_measured_correction(globals()['ym_{}'.format(i)],
|
||||
globals()['yp_{}'.format(i)])
|
||||
|
||||
# 최종 단계 t-ti 산정
|
||||
globals()['step_{}_time_correction'.format(i)] = fun_step_time_correction(globals()['tm_{}'.format(i)],
|
||||
globals()['tm_{}'.format(i)][0])
|
||||
|
||||
# 최종 단계 보정 침하량에 대한 예측 침하량 산정
|
||||
globals()['res_lsq_hyper_nonlinear_{}'.format(i)] = least_squares(fun_hyper_nonlinear, x0,
|
||||
args=(globals()['step_{}_time_correction'.format(i)],
|
||||
globals()['step_{}_measured_correction'.format(i)]))
|
||||
|
||||
print(globals()['res_lsq_hyper_nonlinear_{}'.format(i)].x)
|
||||
|
||||
globals()['settle_hyper_nonlinear_{}'.format(i)] = generate_data_hyper(globals()['res_lsq_hyper_nonlinear_{}'.format(i)].x,
|
||||
globals()['step_{}_time_correction'.format(i)])
|
||||
|
||||
# 최종 단계 침하곡선 작성
|
||||
globals()['step_{}_prediction_curve'.format(i)] = settlement_prediction_curve(globals()['settle_hyper_nonlinear_{}'.format(i)],
|
||||
globals()['yp_{}'.format(i)])
|
||||
|
||||
# 최종단계 보정 예측 침하량 산정
|
||||
globals()['settle_predicted_{}'.format(i)] = fun_step_prediction_correction(globals()['ym_{}'.format(i)],
|
||||
globals()['step_{}_prediction_curve'.format(i)])
|
||||
|
||||
'''
|
||||
나중에: 그래프 작성
|
||||
'''
|
||||
|
||||
# 그래프 크기, 서브 그래프 개수 및 비율 설정
|
||||
f, axes = plt.subplots(2,1, figsize=(10, 10),
|
||||
gridspec_kw={'height_ratios':[1,2]})
|
||||
|
||||
# 성토고 그래프 표시
|
||||
axes[0].plot(time, surcharge, color='black', label='surcharge height')
|
||||
|
||||
axes[0].set_ylabel("Surcharge height (m)", fontsize = 17)
|
||||
axes[0].set_xlim(left = 0)
|
||||
axes[0].grid(color="gray", alpha=.5, linestyle='--')
|
||||
axes[0].tick_params(direction='in')
|
||||
|
||||
# 계측 침하량 표시
|
||||
axes[1].scatter(time, -settle, s = 50, facecolors='white', edgecolors='black', label = 'measured data')
|
||||
|
||||
# 예측 침하량 표시
|
||||
axes[1].plot(time, -settle_predicted_0, linestyle='--', color='red', label='Predicted Curve_Step 1')
|
||||
axes[1].plot(tmm_1, -settle_predicted_1, linestyle='--', color='blue', label='Predicted Curve_Step 2')
|
||||
axes[1].plot(tmm_2, -settle_predicted_2, linestyle='--', color='green', label='Predicted Curve_Step 3')
|
||||
axes[1].plot(tm_3, -settle_predicted_3, linestyle='--', color='orange', label='Predicted Curve_Step 4')
|
||||
|
||||
# 예측 침하량 그래프 설정
|
||||
axes[1].set_xlabel("Time (day)", fontsize = 17)
|
||||
axes[1].set_ylabel("Settlement (mm)", fontsize = 17)
|
||||
axes[1].set_ylim(top = 0)
|
||||
axes[1].set_ylim(bottom = -1.5 * settle.max())
|
||||
axes[1].set_xlim(left = 0)
|
||||
|
||||
# 범례 표시
|
||||
axes[1].legend(loc=1, ncol=2, frameon=True, fontsize=12)
|
||||
|
||||
# 그래프 저장 및 출력
|
||||
plt.savefig('3_SP-68_Rev.4_Test.svg', dpi=300)
|
||||
plt.show()
|
||||
File diff suppressed because it is too large
Load Diff
|
After Width: | Height: | Size: 66 KiB |
Loading…
Reference in New Issue