Rui Wan commited on
Commit
a106a7b
·
1 Parent(s): b96110f

model update

Browse files
Data/DataForThermoforming.xlsx CHANGED
Binary files a/Data/DataForThermoforming.xlsx and b/Data/DataForThermoforming.xlsx differ
 
Dataset.py ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ import pandas as pd
3
+
4
+ np.random.seed(42)
5
+ epsilon = 1e-8
6
+
7
+ class Dataset:
8
+ def __init__(self, inverse=False):
9
+ filename = './Data/DataForThermoforming.xlsx'
10
+ self.df = pd.read_excel(filename, sheet_name='Data')
11
+ # remove rows by index
12
+ self.df = self.df.drop([20, 48], axis=0)
13
+
14
+ # normalize data
15
+ if inverse:
16
+ self.input_columns = ['Ply_Number', 'A1(abs)', 'B1(abs)', 'C1(abs)', 'Stress(Max) MPa']
17
+ self.output_columns = ['Initial_Temp (degree celsius)', 'Punch_Velocity (mm/s)', 'Cooling_Time (s)']
18
+ else:
19
+ self.input_columns = ['Ply_Number', 'Initial_Temp (degree celsius)', 'Punch_Velocity (mm/s)', 'Cooling_Time (s)']
20
+ self.output_columns = ['A1(abs)', 'B1(abs)', 'C1(abs)', 'Stress(Max) MPa']
21
+
22
+ self.input_mean = self.df[self.input_columns].mean().to_numpy(dtype=np.float32)
23
+ self.input_std = self.df[self.input_columns].std().to_numpy(dtype=np.float32) + epsilon
24
+ self.output_mean = self.df[self.output_columns].mean().to_numpy(dtype=np.float32)
25
+ self.output_std = self.df[self.output_columns].std().to_numpy(dtype=np.float32) + epsilon
26
+
27
+
28
+ def get_input(self, normalize=False):
29
+ data = self.df[self.input_columns].to_numpy(dtype=np.float32)
30
+ if normalize:
31
+ data = self.normalize_input(data)
32
+ return data
33
+
34
+
35
+ def get_output(self, normalize=False):
36
+ data = self.df[self.output_columns].to_numpy(dtype=np.float32)
37
+ if normalize:
38
+ data = self.normalize_output(data)
39
+ return data
40
+
41
+ def __str__(self):
42
+ return str(self.df.head())
43
+
44
+ def normalize_input(self, input_data):
45
+ return (input_data - self.input_mean) / self.input_std
46
+
47
+ def normalize_output(self, output_data):
48
+ return (output_data - self.output_mean) / self.output_std
49
+
50
+ def denormalize_input(self, normalized_input):
51
+ return normalized_input * self.input_std + self.input_mean
52
+
53
+ def denormalize_output(self, normalized_output):
54
+ return normalized_output * self.output_std + self.output_mean
55
+
56
+ if __name__ == "__main__":
57
+ dataset = Dataset()
58
+
59
+ # Example usage
60
+ input_data = dataset.get_input(normalize=True)
61
+ output_data = dataset.get_output(normalize=True)
62
+
63
+ print("Input shape:", input_data.shape)
64
+ print("Output shape:", output_data.shape)
__pycache__/Dataset.cpython-312.pyc ADDED
Binary file (4.43 kB). View file
 
__pycache__/model_inverse.cpython-312.pyc ADDED
Binary file (17.5 kB). View file
 
app.py CHANGED
@@ -4,14 +4,13 @@ import gradio as gr
4
  from model_inverse import inverse_design
5
 
6
 
7
- def run_inverse_design(ply_number, a1, b1, c1, stress, n_restarts, epochs, loss_scale, use_lbfgs):
8
  y_target = np.array([a1, b1, c1, stress], dtype=np.float32)
9
  best = inverse_design(
10
- pile_number=int(ply_number),
11
  y_target=y_target,
12
  n_restarts=int(n_restarts),
13
  epochs=int(epochs),
14
- loss_scale=float(loss_scale),
15
  use_lbfgs=bool(use_lbfgs),
16
  )
17
  if best["input"] is None or best["output"] is None:
@@ -37,16 +36,17 @@ with gr.Blocks(title="Inverse Design Demo") as demo:
37
 
38
  with gr.Row():
39
  with gr.Column():
40
- pile_number = gr.Number(label="Pile number", value=2, precision=0)
 
41
  a1 = gr.Number(label="A1", value=0.89, precision=4)
42
  b1 = gr.Number(label="B1", value=0.83, precision=4)
43
  c1 = gr.Number(label="C1", value=0.12, precision=4)
44
  stress = gr.Number(label="Stress", value=180.2, precision=4)
45
  with gr.Column():
 
46
  n_restarts = gr.Number(label="Restarts", value=5, precision=0)
47
- epochs = gr.Number(label="Epochs", value=1000, precision=0)
48
- loss_scale = gr.Number(label="Loss scale", value=1.0, precision=3)
49
- use_lbfgs = gr.Checkbox(label="Use LBFGS", value=False)
50
 
51
  run_btn = gr.Button("Run Inverse Design")
52
 
@@ -56,7 +56,7 @@ with gr.Blocks(title="Inverse Design Demo") as demo:
56
 
57
  run_btn.click(
58
  run_inverse_design,
59
- inputs=[pile_number, a1, b1, c1, stress, n_restarts, epochs, loss_scale, use_lbfgs],
60
  outputs=[best_input, best_output],
61
  )
62
 
 
4
  from model_inverse import inverse_design
5
 
6
 
7
+ def run_inverse_design(ply_number, a1, b1, c1, stress, n_restarts, epochs, use_lbfgs):
8
  y_target = np.array([a1, b1, c1, stress], dtype=np.float32)
9
  best = inverse_design(
10
+ ply_number=int(ply_number),
11
  y_target=y_target,
12
  n_restarts=int(n_restarts),
13
  epochs=int(epochs),
 
14
  use_lbfgs=bool(use_lbfgs),
15
  )
16
  if best["input"] is None or best["output"] is None:
 
36
 
37
  with gr.Row():
38
  with gr.Column():
39
+ gr.Markdown("## Target Output")
40
+ ply_number = gr.Number(label="Ply number", value=2, precision=0)
41
  a1 = gr.Number(label="A1", value=0.89, precision=4)
42
  b1 = gr.Number(label="B1", value=0.83, precision=4)
43
  c1 = gr.Number(label="C1", value=0.12, precision=4)
44
  stress = gr.Number(label="Stress", value=180.2, precision=4)
45
  with gr.Column():
46
+ gr.Markdown("## Optimization Settings")
47
  n_restarts = gr.Number(label="Restarts", value=5, precision=0)
48
+ epochs = gr.Number(label="Epochs of Optimization", value=100, precision=0)
49
+ use_lbfgs = gr.Checkbox(label="Use LBFGS", value=True)
 
50
 
51
  run_btn = gr.Button("Run Inverse Design")
52
 
 
56
 
57
  run_btn.click(
58
  run_inverse_design,
59
+ inputs=[ply_number, a1, b1, c1, stress, n_restarts, epochs, use_lbfgs],
60
  outputs=[best_input, best_output],
61
  )
62
 
model_inverse_ckpt.pth CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:1d8a6c28d5674b85ab110058a65eab6bed5cc61c1180b22a4105dac959f0c493
3
- size 39655
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:627d783e02e0538dbcb75eef4a8a19ac27b3eed2f791b38eadb5c5cd31de98e5
3
+ size 39591