-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.py
More file actions
138 lines (90 loc) · 3.27 KB
/
Copy pathtest.py
File metadata and controls
138 lines (90 loc) · 3.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
import pandas as pd
import pystra as ra
from PIL import Image,ImageOps
import numpy as np
import os
#coletar dados do excel com os valores do perfil
def dados(path:str)->pd.DataFrame:
return pd.read_excel(path,names=['bitola','h','bf','tw','tf'])
#função d estado limite
def g(fy:int,h:float,tw:float,bf:float,tf:float):
'''
Retorna a função de estado limite
fy: Resistência caracteristica de escoamento
h: altura da alma
tw: espessura da alma
bf: comprimento da mesa/flange
tf: espessura da mesa/flange
q: carga distribuida
L: comprimento do vão
'''
inercia = h**3*(tw)/12+2*(bf*tf*(h/2+tf/2)**2+bf*tf**3/12)
limit_state = ra.LimitState(lambda q,L: fy- (q*(L**2)/8)*(h/2+tf)/(inercia))
return limit_state
def preprocessamento(bd:pd.DataFrame,drop=None,multiplo = 4,path=r'C:\Users\Breno HM Rodrigues\Documents\GitHub\StructuralReliabilityGANS\Imagens') ->pd.DataFrame:
'''
Pre processamento dos dados
bd: Banco de Dados
multiplo: quantidade de elementos repetidos no enchimento dos dos
'''
if drop != None:
bd = bd.drop(columns=drop)
bd = bd.sort_values(['prob'],ascending=False)
saida = pd.DataFrame()
nomes = bd['bitola']
prob = bd['prob'].drop_duplicates()
#Gerar tabela bitola/Prob
for i in prob:
fil = bd[bd['prob']<=i]
fil['prob'] = fil['prob'].apply(lambda x:i)
for _ in range(multiplo):
saida = pd.concat([saida,fil],ignore_index=True)
#Passando Bitola Para Imagem
for nome in nomes:
print('rodando primeira imagem')
try:
img = Image.open(os.path.join(path,f'{nome}.png'))
except:
nome = nome.replace('.',',')
img = Image.open(os.path.join(path,f'{nome}.png'))
img = img.resize((125,125))
saida = saida.replace(nome.replace('.',','),np.array(ImageOps.grayscale(img)).tostring())
print('finalizado')
print('****************************************')
return saida
dados('BancoDados.xlsx')
bd = dados('BancoDados.xlsx')
prob= []
print(bd)
for i in range(bd['bitola'].shape[0]):
print('ok')
limite = g(35,bd['h'][i],bd['tw'][i],bd['bf'][i],bd['tf'][i])
stochastic_model = ra.StochasticModel()
stochastic_model.addVariable(ra.Lognormal("q", 5, 10))
stochastic_model.addVariable(ra.Constant("L", 300))
options = ra.AnalysisOptions()
options.setPrintOutput(False)
# initialize analysis obejct
Analysis = ra.Form(
analysis_options=options,
stochastic_model=stochastic_model,
limit_state=limite,
)
''' Analysis.run() # run analysis
failure = Analysis.getFailure()
Analysis.showDetailedOutput()'''
# initialize analysis obejct
cmc = ra.CrudeMonteCarlo(
analysis_options=options,
stochastic_model=stochastic_model,
limit_state=limite,
)
cmc.run()
failure = cmc.getFailure()
prob.append(round(failure,2))
bd['prob'] = prob
saida = preprocessamento(bd,drop=['h','bf','tw','tf'])
print(saida.shape)
saida.to_csv('saida.csv')
#bd.to_excel('saida.xlsx')
#*******