In [1]:
import sys
import os
parent_dir = os.path.abspath("../../libraries")
sys.path.insert(0, parent_dir)
In [2]:
from distributions import *
from simparameter import SimParameter
from simparameter_set import SimParamSet
from surrogate_model import SurrogateModel
import pickle
import torch
import pandas as pd
import object_utils as ou
import emcee
import time
import matplotlib.pyplot as plt
from digital_twin import DigitalTwin
import utils
from multiprocessing import Pool
from multibuilding_update import JointManager

import warnings
warnings.filterwarnings("ignore", category=RuntimeWarning)
warnings.simplefilter(action='ignore', category=FutureWarning)

Create models¶

Data¶

In [3]:
param_names = ['COEF_VERT', 'COEF_G', 'FACADE', 'FOUNDATION', 'WEIGHT']
a = [0.5, 1, 1, 7, 0.8]
b = [1, 3, 1.5, 10, 1.2] #1. changed to 1 from 1.5

P1 = SimParameter('COEF_VERT', UniformDistribution(0.5, 1))
P2 = SimParameter('COEF_G', UniformDistribution(1, 3))
P3 = SimParameter('FACADE', UniformDistribution(1, 1.5))
P4 = SimParameter('FOUNDATION', UniformDistribution(7, 10))
P5 = SimParameter('WEIGHT', UniformDistribution(0.8, 1.2))

PQ = SimParamSet()
PQ.add(P1)
PQ.add(P2)
PQ.add(P3)
PQ.add(P4)
PQ.add(P5)
In [4]:
param_names = ["e1", "e2", "e3", "g1", "g2", 'q']
a = [6, 10, 6, 400, 200, 5]
b = [12, 13, 12, 750, 500, 100]

YQ = SimParamSet()

P1 = SimParameter("e1", UniformDistribution(6, 12))
P2 = SimParameter("e2", UniformDistribution(10, 13))
P3 = SimParameter("e3", UniformDistribution(6, 12))
P4 = SimParameter("g1", UniformDistribution(400, 750))
P5 = SimParameter("g2", UniformDistribution(200, 500))
P6 = SimParameter('q', UniformDistribution(5, 100))

YQ.add(P1)
YQ.add(P2)
YQ.add(P3)
YQ.add(P4)
YQ.add(P5)
YQ.add(P6)
In [5]:
Q1_df = pd.read_csv('../data/YB_data/x_df.csv')
Q2_df = pd.read_csv('../data/PS_data/x_df.csv')
QoI1_df  = pd.read_csv('../data/YB_data/y_df.csv')
QoI2_df = pd.read_csv('../data/PS_data/y_df.csv')

z_yoker = pd.read_csv('../data/YB_data/z_m_df.csv')
z_palisaden = pd.read_csv('../data/PS_data/z_m_df.csv')

sigma_yoker = pd.read_csv('../data/YB_data/sigma.csv')
sigma_palisaden = pd.read_csv('../data/PS_data/sigma.csv')

with open('../data/YB_data/Yoker_model.sm', 'rb') as file:
    Yoker_model = pickle.load(file)
with open('../data/PS_data/Palisaden_model.sm', 'rb') as file:
    Palisaden_model = pickle.load(file)
In [6]:
joint_parameters = {'joint_e1_COEF_VERT': ['e1', 'COEF_VERT']}

j = JointManager([Yoker_model, Palisaden_model], joint_parameters)
In [7]:
print(j.Q.params)
{'joint_e1_COEF_VERT': U(0, 1), 'e2': U(10, 13), 'e3': U(6, 12), 'g1': U(400, 750), 'g2': U(200, 500), 'q': U(5, 100), 'COEF_G': U(1, 3), 'FACADE': U(1, 1.5), 'FOUNDATION': U(7, 10), 'WEIGHT': U(0.8, 1.2)}
In [8]:
nwalkers=32
niter=200
nburn=1000


j.update([z_yoker, z_palisaden], [sigma_yoker, sigma_palisaden], nwalkers=nwalkers, niter=niter, nburn=nburn)
MCMC creating
Burning period
100%|██████████| 1000/1000 [06:46<00:00,  2.46it/s]
MCMC running
100%|██████████| 200/200 [01:45<00:00,  1.90it/s]
--- 512.4425110816956 seconds ---

In [9]:
figs = utils.plot_multibuilding_MCMC(j, extra_point=None, extra_point_name='', map_point=True, model_names=['Yoker', 'Palisaden'], formatted_param_names=[["$e_{1}$", "$e_{2}$", "$e_{3}$", "$g_{1}$", "$g_{2}$", '$q$'], ["$γ_{e_{1}}$", "$γ_{G_{12}}$", "$γ_{G_{12,ext}}$", "$k_{spring}$", "$γ_{ρ}$"]])
No description has been provided for this image
No description has been provided for this image