Refactor code structure for improved readability and maintainability

parent 9ceb46a7
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -73,13 +73,14 @@ def load_tfdmap(case_folder_path):
f"TFDMap file must contain at least two columns after ignoring headers: {tfdmap_file}"
)
df_tfdmap = df_tfdmap.iloc[:, 1:].copy()
n_cols = df_tfdmap.shape[1]
if n_cols == 1:
df_tfdmap.columns = ["TFDMapF"]
if n_cols == 2:
df_tfdmap.columns = ["Time"] + ["TFDMapF"]
else:
df_tfdmap.columns = [f"TFDMapW{i + 1}" for i in range(n_cols - 1)] + ["TFDMapF"]
df_tfdmap.columns = (
["Time"] + [f"TFDMapW{i}" for i in range(1, n_cols - 1)] + ["TFDMapF"]
)
return df_tfdmap
......@@ -166,6 +167,9 @@ df["CumDispl"] = df.groupby("Case")["Displ"].transform(
lambda s: s.diff().abs().fillna(0).cumsum()
)
# DeltaDispl: actual Displ minus previous Displ, computed per case
df["DeltaDispl"] = df.groupby("Case")["Displ"].transform(lambda s: s.diff().fillna(0))
# ------------------------------------------------------------------
# 2) CycleNum based on slope reversals (LoadDir changes)
......@@ -190,7 +194,7 @@ df["MaxAmpl"] = df.groupby("Case")["Displ"].transform(lambda x: x.abs().max())
ordered_cols_point = (
["Case"]
+ thickness_cols
+ ["Displ", "CumDispl", "LoadDir", "CycleNum", "MaxAmpl", "Force"]
+ ["Displ", "CumDispl", "DeltaDispl", "LoadDir", "CycleNum", "MaxAmpl", "Force"]
)
df = df[ordered_cols_point]
......
......@@ -127,7 +127,9 @@ def make_windows_for_case_fast(
CaseWindows = Dict[
int, Tuple[np.ndarray, np.ndarray, np.ndarray]
] # case -> (x, y, idx)
WINDOW_CACHE: Dict[Tuple[str, int], CaseWindows] = {} # (target_col, window_size) -> cache
WINDOW_CACHE: Dict[
Tuple[str, int], CaseWindows
] = {} # (target_col, window_size) -> cache
def precompute_windows_for_cases(
......@@ -748,13 +750,19 @@ def main():
feature_cols = [
"Displ",
"CumDispl",
"DeltaDispl",
# "LoadDir",
# "CycleNum",
# "MaxAmpl",
] + thickness_cols
target_cols = sorted(
[c for c in df.columns if c == "Force" or c.startswith("TFDMap")],
key=target_sort_key,
)
if not target_cols:
raise RuntimeError("No target columns found. Expected Force and/or TFDMap* columns.")
raise RuntimeError(
"No target columns found. Expected Force and/or TFDMap* columns."
)
all_cases = sorted(df["Case"].unique())
train_pool = [int(c) for c in all_cases if c <= n_train_case]
......
import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler
import torch
import torch.nn as nn
from torch.utils.data import Dataset, DataLoader
from sklearn.preprocessing import StandardScaler
# Si quieres weight_norm moderno (sin warning):
from torch.nn.utils.parametrizations import weight_norm
from torch.utils.data import DataLoader, Dataset
# ============================================================
# 0) Config
......@@ -17,7 +16,7 @@ np.random.seed(SEED)
torch.manual_seed(SEED)
# --- Geometry identifiers (as in your workflow) ---
W = 2 # Number of windows
W = 2 # Number of windows
B = 29 # Width identifier
H = 30
if W == 2:
......@@ -42,7 +41,7 @@ elif W == 5:
else:
print("Warning: PREDICT_CASE not set for W != 2, 3, or 5")
WINDOW_SIZE = 60 # típicamente 40-80
WINDOW_SIZE = 60 # típicamente 40-80
BATCH_SIZE = 128
LR = 1e-3
......@@ -85,7 +84,14 @@ def choose_val_cases(train_pool):
df = pd.read_csv(DATA_FILE)
thickness_cols = [c for c in df.columns if c.startswith("tw")]
feature_cols = ["Displ", "CumDispl", "LoadDir", "CycleNum", "MaxAmpl"] + thickness_cols
feature_cols = [
"Displ",
"CumDispl",
"DeltaDispl",
"LoadDir",
"CycleNum",
"MaxAmpl",
] + thickness_cols
TARGET_COL = "Force"
df_train_all = df[df["Case"] != PREDICT_CASE].copy()
......@@ -111,12 +117,16 @@ def make_windows_for_case(df_case, feature_cols, target_col, window_size):
idx = df_case.index.to_numpy()
if len(df_case) < window_size:
return np.empty((0, window_size, len(feature_cols))), np.empty((0,)), np.array([])
return (
np.empty((0, window_size, len(feature_cols))),
np.empty((0,)),
np.array([]),
)
Xw, yw, iw = [], [], []
for end in range(window_size - 1, len(df_case)):
start = end - window_size + 1
Xw.append(X[start:end+1])
Xw.append(X[start : end + 1])
yw.append(y[end])
iw.append(idx[end])
......@@ -127,7 +137,9 @@ def build_windows_for_cases(df_all, cases, feature_cols, target_col, window_size
X_list, y_list = [], []
for case in sorted(cases):
df_case = df_all[df_all["Case"] == case]
Xc, yc, _ = make_windows_for_case(df_case, feature_cols, target_col, window_size)
Xc, yc, _ = make_windows_for_case(
df_case, feature_cols, target_col, window_size
)
if len(Xc) > 0:
X_list.append(Xc)
y_list.append(yc)
......@@ -141,15 +153,18 @@ def build_windows_for_cases(df_all, cases, feature_cols, target_col, window_size
print("\n--- Building TRAIN windows ---")
X_train, y_train = build_windows_for_cases(
df_train_all, train_cases, feature_cols, TARGET_COL, WINDOW_SIZE)
df_train_all, train_cases, feature_cols, TARGET_COL, WINDOW_SIZE
)
print("\n--- Building VAL windows ---")
X_val, y_val = build_windows_for_cases(
df_train_all, val_cases, feature_cols, TARGET_COL, WINDOW_SIZE)
df_train_all, val_cases, feature_cols, TARGET_COL, WINDOW_SIZE
)
print("\n--- Building TEST windows ---")
X_test, y_test, test_indices = make_windows_for_case(
df_test, feature_cols, TARGET_COL, WINDOW_SIZE)
df_test, feature_cols, TARGET_COL, WINDOW_SIZE
)
print("Test windows:", X_test.shape)
if X_train is None or X_val is None:
......@@ -165,7 +180,9 @@ n_features = X_train.shape[-1]
scaler_X = StandardScaler()
scaler_X.fit(X_train.reshape(-1, n_features))
X_train_scaled = scaler_X.transform(X_train.reshape(-1, n_features)).reshape(X_train.shape)
X_train_scaled = scaler_X.transform(X_train.reshape(-1, n_features)).reshape(
X_train.shape
)
X_val_scaled = scaler_X.transform(X_val.reshape(-1, n_features)).reshape(X_val.shape)
X_test_scaled = scaler_X.transform(X_test.reshape(-1, n_features)).reshape(X_test.shape)
......@@ -190,10 +207,12 @@ class WindowDataset(Dataset):
return self.X[idx], self.y[idx]
train_loader = DataLoader(WindowDataset(X_train_scaled, y_train_scaled),
batch_size=BATCH_SIZE, shuffle=True)
val_loader = DataLoader(WindowDataset(X_val_scaled, y_val_scaled),
batch_size=BATCH_SIZE, shuffle=False)
train_loader = DataLoader(
WindowDataset(X_train_scaled, y_train_scaled), batch_size=BATCH_SIZE, shuffle=True
)
val_loader = DataLoader(
WindowDataset(X_val_scaled, y_val_scaled), batch_size=BATCH_SIZE, shuffle=False
)
# ============================================================
......@@ -201,6 +220,7 @@ val_loader = DataLoader(WindowDataset(X_val_scaled, y_val_scaled),
# ============================================================
class Chomp1d(nn.Module):
"""Remove padding on the right to keep causality and correct length."""
def __init__(self, chomp_size: int):
super().__init__()
self.chomp_size = chomp_size
......@@ -208,16 +228,22 @@ class Chomp1d(nn.Module):
def forward(self, x):
if self.chomp_size == 0:
return x
return x[:, :, :-self.chomp_size]
return x[:, :, : -self.chomp_size]
class TemporalBlock(nn.Module):
def __init__(self, in_ch, out_ch, kernel_size, dilation, dropout, use_weight_norm=True):
def __init__(
self, in_ch, out_ch, kernel_size, dilation, dropout, use_weight_norm=True
):
super().__init__()
padding = (kernel_size - 1) * dilation
conv1 = nn.Conv1d(in_ch, out_ch, kernel_size, padding=padding, dilation=dilation)
conv2 = nn.Conv1d(out_ch, out_ch, kernel_size, padding=padding, dilation=dilation)
conv1 = nn.Conv1d(
in_ch, out_ch, kernel_size, padding=padding, dilation=dilation
)
conv2 = nn.Conv1d(
out_ch, out_ch, kernel_size, padding=padding, dilation=dilation
)
if use_weight_norm:
conv1 = weight_norm(conv1)
......@@ -250,16 +276,29 @@ class TemporalBlock(nn.Module):
class DeepTCNRegressor(nn.Module):
def __init__(self, n_features, channels=(64, 64, 128, 128, 256),
kernel_size=5, dropout=0.15, head_dim=128, use_weight_norm=True):
def __init__(
self,
n_features,
channels=(64, 64, 128, 128, 256),
kernel_size=5,
dropout=0.15,
head_dim=128,
use_weight_norm=True,
):
super().__init__()
layers = []
in_ch = n_features
dilation = 1
for out_ch in channels:
layers.append(
TemporalBlock(in_ch, out_ch, kernel_size, dilation=dilation,
dropout=dropout, use_weight_norm=use_weight_norm)
TemporalBlock(
in_ch,
out_ch,
kernel_size,
dilation=dilation,
dropout=dropout,
use_weight_norm=use_weight_norm,
)
)
in_ch = out_ch
dilation *= 2
......@@ -270,14 +309,14 @@ class DeepTCNRegressor(nn.Module):
nn.Linear(in_ch, head_dim),
nn.ReLU(),
nn.Dropout(dropout),
nn.Linear(head_dim, 1)
nn.Linear(head_dim, 1),
)
def forward(self, x):
x = x.transpose(1, 2) # (N, L, F) -> (N, F, L)
z = self.tcn(x) # (N, C, L)
z = self.pool(z).squeeze(-1) # (N, C)
y = self.head(z).squeeze(-1) # (N,)
x = x.transpose(1, 2) # (N, L, F) -> (N, F, L)
z = self.tcn(x) # (N, C, L)
z = self.pool(z).squeeze(-1) # (N, C)
y = self.head(z).squeeze(-1) # (N,)
return y
......@@ -287,10 +326,10 @@ model = DeepTCNRegressor(
kernel_size=5,
dropout=0.15,
head_dim=128,
use_weight_norm=USE_WEIGHT_NORM
use_weight_norm=USE_WEIGHT_NORM,
).to(DEVICE)
criterion = nn.SmoothL1Loss(beta=HUBER_BETA) # Huber
criterion = nn.SmoothL1Loss(beta=HUBER_BETA) # Huber
optimizer = torch.optim.AdamW(model.parameters(), lr=LR, weight_decay=WEIGHT_DECAY)
# ============================================================
......@@ -338,12 +377,16 @@ for epoch in range(MAX_EPOCHS):
val_true = scaler_y.inverse_transform(val_true_scaled.reshape(-1, 1)).ravel()
val_rmse = rmse(val_true, val_pred)
print(f"Epoch {epoch+1:03d} | Train loss={avg_train_loss:.6f} | Val RMSE={val_rmse:.4f}")
print(
f"Epoch {epoch + 1:03d} | Train loss={avg_train_loss:.6f} | Val RMSE={val_rmse:.4f}"
)
# early stopping on val RMSE
if val_rmse < best_val_rmse:
best_val_rmse = val_rmse
BEST_STATE = {k: v.detach().cpu().clone() for k, v in model.state_dict().items()}
BEST_STATE = {
k: v.detach().cpu().clone() for k, v in model.state_dict().items()
}
WAIT = 0
else:
WAIT += 1
......
......@@ -3,44 +3,44 @@ Capacity: max_strings=200000, hash_size=200000, hash_prime=170003
The top-level auxiliary file: Manuscript.aux
The style file: WileyNJD-AMA.bst
Database file #1: wileyNJD-AMA.bib
You've used 34 entries,
You've used 24 entries,
2086 wiz_defined-function locations,
783 strings with 11196 characters,
and the built_in function-call counts, 6526 in all, are:
= -- 575
> -- 298
< -- 3
+ -- 129
- -- 95
* -- 718
:= -- 1173
add.period$ -- 54
call.type$ -- 34
change.case$ -- 2
718 strings with 9842 characters,
and the built_in function-call counts, 4996 in all, are:
= -- 367
> -- 260
< -- 0
+ -- 118
- -- 94
* -- 645
:= -- 882
add.period$ -- 24
call.type$ -- 24
change.case$ -- 0
chr.to.int$ -- 0
cite$ -- 34
duplicate$ -- 340
empty$ -- 657
format.name$ -- 95
if$ -- 1470
cite$ -- 24
duplicate$ -- 264
empty$ -- 481
format.name$ -- 94
if$ -- 1038
int.to.chr$ -- 0
int.to.str$ -- 34
missing$ -- 31
newline$ -- 119
num.names$ -- 38
pop$ -- 75
int.to.str$ -- 24
missing$ -- 24
newline$ -- 100
num.names$ -- 24
pop$ -- 41
preamble$ -- 1
purify$ -- 0
quote$ -- 0
skip$ -- 40
skip$ -- 23
stack$ -- 0
substring$ -- 0
swap$ -- 48
text.length$ -- 3
swap$ -- 96
text.length$ -- 0
text.prefix$ -- 0
top$ -- 0
type$ -- 0
warning$ -- 0
while$ -- 36
width$ -- 36
write$ -- 388
while$ -- 24
width$ -- 26
write$ -- 298
# Fdb version 4
["bibtex Manuscript"] 1776327267.214 "Manuscript.aux" "Manuscript.bbl" "Manuscript" 1776327268.4116 0
"./wileyNJD-AMA.bib" 1776327033.62821 22635 ac78711a00932a09d59c9d66618441ea ""
["bibtex Manuscript"] 1776846350.22825 "Manuscript.aux" "Manuscript.bbl" "Manuscript" 1776846351.50549 0
"./wileyNJD-AMA.bib" 1776846173.72117 50239 5d7dd42294fbda9c7564a3b071a8277d ""
"./wileyNJD-AMA.bst" 1768403161.04645 19155 8fd474a7161c22bb6a795bd57510d2e1 ""
"Manuscript.aux" 1776327268.15206 33155 f2589dad76cdbdd1a8af76c8e4700460 "pdflatex"
"Manuscript.aux" 1776846351.22822 32572 5f192b1697d5919f296057c925fa91c1 "pdflatex"
(generated)
"Manuscript.bbl"
"Manuscript.blg"
(rewritten before read)
["pdflatex"] 1776327267.34583 "/home/cimne/Articles_in_process/2026_Article_RESILINK_ML/Manuscript/Manuscript.tex" "Manuscript.pdf" "Manuscript" 1776327268.4118 0
["pdflatex"] 1776846350.34251 "/home/cimne/Articles_in_process/2026_Article_RESILINK_ML/Manuscript/Manuscript.tex" "Manuscript.pdf" "Manuscript" 1776846351.50571 0
"/etc/texmf/web2c/texmf.cnf" 1727440723.11971 475 c0e671620eb5563b2130f56340a5fde8 ""
"/home/cimne/Articles_in_process/2026_Article_RESILINK_ML/Manuscript/Manuscript.tex" 1776327265.87996 87744 49a228ccac70c171aff96da1aaba9077 ""
"/home/cimne/Articles_in_process/2026_Article_RESILINK_ML/Manuscript/Manuscript.tex" 1776846348.81427 90576 bccc967433e5d59c517ed302559efaeb ""
"/usr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc" 1165713224 4850 80dc9bab7f31fb78a000ccfed0e27cab ""
"/usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map" 1577235249 3524 cb3e574dea2d1052e39280babc910dc8 ""
"/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrb8r.tfm" 1136768653 1292 3059476c50a24578715759f22652f3d0 ""
......@@ -31,7 +31,6 @@
"/usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/ectt1000.tfm" 1136768653 1536 06717a2b50de47d4087ac0e6cd759455 ""
"/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm" 1246382020 1004 54797486969f23fa377b128694d548df ""
"/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex8.tfm" 1246382020 988 bdf658c3bfc2d96d3c8b02cfc1c94c20 ""
"/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex9.tfm" 1246382020 996 a18840b13b499c08ac2de96a99eda4bc ""
"/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm" 1246382020 916 f87d7c45f9c908e672703b83b72241a3 ""
"/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm" 1246382020 924 9904cf1d39e9767e7a3622f2a125a565 ""
"/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm" 1246382020 928 2dc8d444221b7a635bb58038579b861a ""
......@@ -190,9 +189,9 @@
"/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map" 1727447066.11376 5472669 54eaf61a88b6b7896ebd0dac973cb29c ""
"/var/lib/texmf/web2c/pdftex/pdflatex.fmt" 1727447091 8213230 bd25039be121841657767565aabcb4cb ""
"LETTERSP.STY" 1768403161.04145 12163 b6de1fa5e93e58dc68ba3c77a1af2e61 ""
"Manuscript.aux" 1776327268.15206 33155 f2589dad76cdbdd1a8af76c8e4700460 "pdflatex"
"Manuscript.bbl" 1776327267.34103 8721 83e33752cfa17df61036e774d1ae9768 "bibtex Manuscript"
"Manuscript.tex" 1776327265.87996 87744 49a228ccac70c171aff96da1aaba9077 ""
"Manuscript.aux" 1776846351.22822 32572 5f192b1697d5919f296057c925fa91c1 "pdflatex"
"Manuscript.bbl" 1776846350.33824 7563 4bad40f348339a31db0190816d73a862 "bibtex Manuscript"
"Manuscript.tex" 1776846348.81427 90576 bccc967433e5d59c517ed302559efaeb ""
"NJDnatbib.sty" 1768403161.04145 45877 277c41da70878866aa377a8f5b8b53d8 ""
"WileyNJDv5.cls" 1768403161.04545 229209 b00f44318e3c54456bb10ed4e19ec0c4 ""
"algorithm.sty" 1768403161.04545 3249 15763257e50278eef5db1952ccde229c ""
......
......@@ -366,12 +366,12 @@ INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8t.tfm
INPUT ./empty.pdf
INPUT ./empty.pdf
INPUT ./empty.pdf
INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrr8t.vf
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8r.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmri8t.vf
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmri8r.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmri8t.vf
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmri8r.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrr8t.vf
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8r.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmri8t.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmr8t.vf
......@@ -392,39 +392,21 @@ INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8t.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrb8t.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrb8t.vf
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrb8r.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrr8t.vf
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8r.tfm
INPUT ./Manuscript.bbl
INPUT ./Manuscript.bbl
INPUT Manuscript.bbl
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmri8t.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex9.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmri8t.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmri8t.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmb8t.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmb8t.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmb8t.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm5.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm5.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmr8t.vf
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8r.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmri8t.vf
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmri8r.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8t.tfm
INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrr8t.vf
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8r.tfm
INPUT ./empty.pdf
INPUT ./empty.pdf
INPUT ./empty.pdf
INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrr8t.vf
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8r.tfm
INPUT ./empty.pdf
INPUT ./empty.pdf
INPUT ./empty.pdf
......
This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Debian) (preloaded format=pdflatex 2024.9.27) 16 APR 2026 10:14
This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Debian) (preloaded format=pdflatex 2024.9.27) 22 APR 2026 10:25
entering extended mode
restricted \write18 enabled.
file:line:error style messages enabled.
......@@ -1065,8 +1065,8 @@ Overfull \hbox (91.15167pt too wide) has occurred while \output is active
[]
[3]
<empty.pdf, id=45, 114.43155pt x 86.162pt>
LaTeX Font Info: Trying to load font information for T1+pcr on input line 136.
<empty.pdf, id=77, 114.43155pt x 86.162pt>
LaTeX Font Info: Trying to load font information for T1+pcr on input line 144.
(/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1pcr.fd
File: t1pcr.fd 2001/06/04 font definitions for T1/pcr.
)
......@@ -1075,12 +1075,12 @@ Package microtype Info: Loading generic protrusion settings for font family
(microtype) For optimal results, create family-specific settings.
(microtype) See the microtype manual for details.
Underfull \hbox (badness 10000) detected at line 137
Underfull \hbox (badness 10000) detected at line 145
[]
[]
Underfull \hbox (badness 10000) detected at line 147
Underfull \hbox (badness 10000) detected at line 155
[]
[]
......@@ -1099,13 +1099,8 @@ Overfull \hbox (91.15167pt too wide) has occurred while \output is active
\T1/ptm/m/n/7 FAST DESIGN OPTIMIZATION OF SLB DAMPERS USING FEM-CALIBRATED SURROGATES: HYSTERESIS PREDICTION WITH LSTM AND DAMAGE-CONSTRAINED OPTIMIZATION []| [][]
[]
[9]
Underfull \hbox (badness 10000) detected at line 347
[]
[]
[10]
Underfull \hbox (badness 10000) detected at line 397
[9] [10]
Underfull \hbox (badness 10000) detected at line 355
[]
[]
......@@ -1115,27 +1110,32 @@ Overfull \hbox (91.15167pt too wide) has occurred while \output is active
[]
[11]
Underfull \hbox (badness 10000) detected at line 405
[]
[]
[12]
LaTeX Warning: The counter will not be printed.
The label is: on input line 477.
The label is: on input line 485.
[12]
Overfull \hbox (91.15167pt too wide) has occurred while \output is active
\T1/ptm/m/n/7 FAST DESIGN OPTIMIZATION OF SLB DAMPERS USING FEM-CALIBRATED SURROGATES: HYSTERESIS PREDICTION WITH LSTM AND DAMAGE-CONSTRAINED OPTIMIZATION []| [][]
[]
[13]
Underfull \hbox (badness 10000) detected at line 563
[13] [14]
Underfull \hbox (badness 10000) detected at line 571
[]
[]
Underfull \hbox (badness 10000) detected at line 603
Underfull \hbox (badness 10000) detected at line 611
[]
[]
Package hyperref Info: bookmark level for unknown algorithm defaults to 0 on input line 611.
[14]
Package hyperref Info: bookmark level for unknown algorithm defaults to 0 on input line 619.
Overfull \hbox (91.15167pt too wide) has occurred while \output is active
\T1/ptm/m/n/7 FAST DESIGN OPTIMIZATION OF SLB DAMPERS USING FEM-CALIBRATED SURROGATES: HYSTERESIS PREDICTION WITH LSTM AND DAMAGE-CONSTRAINED OPTIMIZATION []| [][]
[]
......@@ -1145,61 +1145,34 @@ Overfull \hbox (91.15167pt too wide) has occurred while \output is active
\T1/ptm/m/n/7 FAST DESIGN OPTIMIZATION OF SLB DAMPERS USING FEM-CALIBRATED SURROGATES: HYSTERESIS PREDICTION WITH LSTM AND DAMAGE-CONSTRAINED OPTIMIZATION []| [][]
[]
[17] (./Manuscript.bbl [18]
LaTeX Font Info: Calculating math sizes for size <8.5> on input line 56.
LaTeX Font Warning: Font shape `OT1/cmr/m/n' in size <8.5> not available
(Font) size <8> substituted on input line 56.
LaTeX Font Warning: Font shape `OT1/cmr/m/n' in size <4.25> not available
(Font) size <5> substituted on input line 56.
LaTeX Font Warning: Font shape `OML/cmm/m/it' in size <8.5> not available
(Font) size <8> substituted on input line 56.
LaTeX Font Warning: Font shape `OML/cmm/m/it' in size <4.25> not available
(Font) size <5> substituted on input line 56.
LaTeX Font Warning: Font shape `OMS/cmsy/m/n' in size <8.5> not available
(Font) size <8> substituted on input line 56.
LaTeX Font Warning: Font shape `OMS/cmsy/m/n' in size <4.25> not available
(Font) size <5> substituted on input line 56.
)
[17] [18] (./Manuscript.bbl
Overfull \hbox (91.15167pt too wide) has occurred while \output is active
\T1/ptm/m/n/7 FAST DESIGN OPTIMIZATION OF SLB DAMPERS USING FEM-CALIBRATED SURROGATES: HYSTERESIS PREDICTION WITH LSTM AND DAMAGE-CONSTRAINED OPTIMIZATION []| [][]
[]
[19]
Overfull \hbox (9.0pt too wide) in paragraph at lines 750--750
[19])
Overfull \hbox (9.0pt too wide) in paragraph at lines 758--758
[] []
[]
Package hyperref Info: bookmark level for unknown lstlisting defaults to 0 on input line 759.
Package hyperref Info: bookmark level for unknown lstlisting defaults to 0 on input line 767.
Underfull \hbox (badness 10000) detected at line 759
Underfull \hbox (badness 10000) detected at line 767
[]
[]
[20]
Underfull \hbox (badness 10000) detected at line 835
[]
[]
Overfull \hbox (91.15167pt too wide) has occurred while \output is active
\T1/ptm/m/n/7 FAST DESIGN OPTIMIZATION OF SLB DAMPERS USING FEM-CALIBRATED SURROGATES: HYSTERESIS PREDICTION WITH LSTM AND DAMAGE-CONSTRAINED OPTIMIZATION []| [][]
[]
[21]
Underfull \hbox (badness 10000) detected at line 873
Underfull \hbox (badness 10000) detected at line 843
[]
[]
Underfull \hbox (badness 10000) detected at line 881
[]
[]
......@@ -1208,16 +1181,11 @@ Overfull \hbox (91.15167pt too wide) has occurred while \output is active
\T1/ptm/m/n/7 FAST DESIGN OPTIMIZATION OF SLB DAMPERS USING FEM-CALIBRATED SURROGATES: HYSTERESIS PREDICTION WITH LSTM AND DAMAGE-CONSTRAINED OPTIMIZATION []| [][]
[]
[23] (./Manuscript.aux)
[23] [24] (./Manuscript.aux)
***********
LaTeX2e <2023-11-01> patch level 1
L3 programming layer <2024-01-22>
***********
LaTeX Font Warning: Size substitutions with differences
(Font) up to 0.75pt have occurred.
)
(\end occurred when \iftrue on line 4824 was incomplete)
(\end occurred when \iftrue on line 4812 was incomplete)
......@@ -1229,18 +1197,18 @@ LaTeX Font Warning: Size substitutions with differences
(\end occurred when \iftrue on line 4740 was incomplete)
(\end occurred when \ifx on line 2 was incomplete)
Here is how much of TeX's memory you used:
23108 strings out of 474222
357055 string characters out of 5748733
22997 strings out of 474222
355024 string characters out of 5748733
1949975 words of memory out of 5000000
44405 multiletter control sequences out of 15000+600000
677838 words of font info for 395 fonts, out of 8000000 for 9000
44324 multiletter control sequences out of 15000+600000
663225 words of font info for 370 fonts, out of 8000000 for 9000
1167 hyphenation exceptions out of 8191
90i,18n,93p,2671b,1065s stack positions out of 10000i,1000n,20000p,200000b,200000s
</usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi5.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi7.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr7.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy5.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy6.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy8.pfb></usr/share/texlive/texmf-dist/fonts/type1/urw/courier/ucrb8a.pfb></usr/share/texlive/texmf-dist/fonts/type1/urw/courier/ucrr8a.pfb></usr/share/texlive/texmf-dist/fonts/type1/urw/times/utmb8a.pfb></usr/share/texlive/texmf-dist/fonts/type1/urw/times/utmr8a.pfb></usr/share/texlive/texmf-dist/fonts/type1/urw/times/utmri8a.pfb>
Output written on Manuscript.pdf (23 pages, 258213 bytes).
Output written on Manuscript.pdf (24 pages, 258865 bytes).
PDF statistics:
536 PDF objects out of 1000 (max. 8388607)
473 compressed objects within 5 object streams
136 named destinations out of 1000 (max. 500000)
125830 words of extra memory for PDF output out of 128383 (max. 10000000)
531 PDF objects out of 1000 (max. 8388607)
467 compressed objects within 5 object streams
127 named destinations out of 1000 (max. 500000)
111494 words of extra memory for PDF output out of 128383 (max. 10000000)
\FirstPg{1}\LastPg{22}
\FirstPg{1}\LastPg{23}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment