Assalamualaikum wr wb
Perkenalkan nama saya Andy Maulana Latif dengan NPM 2306211534. Pada kesempatan kali ini, saya bersyukur diberikan kesempatan untuk bisa membahas tentang prinsip dan algoritma PINN heat conduction 1D dengan framework DAI5.
Sebelumnya kita harus tau dulu apa itu PINN. Jadi PINN sendiri adalah singkatan dari Physics Informed Neural Network, yaitu jenis jaringan saraf tiruan yang mengintegrasikan hukum fisika ke dalam suatu model simulasi
Baik, selanjutnya mengenai pendekatan Framework DAI5.
Deep Awareness of I :
Kita harus menyadari bahwa semua hukum fisika yang ada, baik yang diterapkan pada simulasi heat conduction 1d ini, yaitu hukum fourier, adalah ketetapan Allah SWT. Dan dari ketetapan itu bisa kita pelajari guna untuk memperdalam pemahaman ciptaan Allah SWT. Namun, manusia punya keterbatasan dalam melakukan komputasi numerik tersebut. Maka dari itu, PINN (Physics Informed Neural Network) bisa kita manfaatkan untuk membantu kita dalam menyelesaikan persamaan diferensial tersebut. PINN memastikan solusi AI tetap mematuhi hukum fiska. Adanya regulasi loss function dalam PINN itu untuk menjaga makna fisik.
Intention :
Kita harus memiliki niat yang tulus dalam diri kita untuk sungguh sungguh mempelajari PINN. Tujuan dari penggunaan PINN adalah untuk menyelesaikan persamaan differensial yang mana lebih efisien daripada metode numerik seperti Finite Difference dan Finite Element Method. Pada heat conduction 1D, kita menerapkan hukum fourier untuk mendapat solusi atas persamaan diferensial tersebut. Dari hukum fourier ini dengan asumsi steady state, maka maka didapat:

Initial Thinking :
Dari problem yang ada, terdapat parameter yang mempengaruhi, yaitu sebagai berikut:
-Boundary condition

-Learning rate, jumlah epoch, dan jumlah collocation point
-Solusi analitik T(x) = T0 + (T1 – T0)x.
-Total loss, yaitu habungan dari physics loss dan boundary loss
Idealization :
Kita membangun model optimasi yang tetap mematuhi makna fisik sebagai berikut.
-Menggunakan PINN agar AI tetap mengikuti hukum fisika, dengan memasukkan physics loss yang memastikan solusi memenuhi persamaan diferensial konduksi panas.
-Menentukan learning rate, jumlah epoch, dan jumlah collocation point yang seimbang. Contohnya, semakin banyak jumlah epoch, maka solusinya akan semakin akurat, tetapi harus dihindari overfitting dan diperhatikan efisiensi komputasi.
-Solusi dari PINN harus dibandingkan dengan solusi analitik untuk mengevaluasi kinerja model dan memastikan bahwa PINN tidak hanya menghafal titik data, tetapi benar-benar memahami pola fisis yang mendasari.
-Menggunakan arsitektur jaringan saraf yang optimal, misalnya jumlah neuron dan hidden layers yang cukup untuk menangkap kompleksitas masalah tanpa menyebabkan overfitting atau meningkatkan biaya komputasi secara berlebihan.
-Memastikan kondisi batas tetap terpenuhi, dengan menerapkan boundary loss yang mengontrol agar nilai temperatur di batas domain tetap sesuai dengan kondisi awal.
Instruction Set :
Sesuai dengan blog yang telah diberikan dosen, maka langkah-langkah PINN Heat Conduction 1D:
- Define PINN Neural Network
class PINN(nn.Module):
def __init__(self):
super(PINN, self).__init__()
self.net = nn.Sequential(
nn.Linear(1, 20),
nn.Tanh(),
nn.Linear(20, 20),
nn.Tanh(),
nn.Linear(20, 1)
)
def forward(self, x):
return self.net(x)
2. Function to compute the loss
def compute_loss(model, x, T0, T1):
x = x.requires_grad_(True)
T = model(x)
# Compute derivatives
dT_dx = torch.autograd.grad(T, x, grad_outputs=torch.ones_like(T), create_graph=True)[0]
d2T_dx2 = torch.autograd.grad(dT_dx, x, grad_outputs=torch.ones_like(dT_dx), create_graph=True)[0]
# Physics loss (d^2T/dx^2 = 0)
physics_loss = torch.mean(d2T_dx2**2)
# Boundary conditions
T_left = model(torch.tensor([[0.0]]))
T_right = model(torch.tensor([[1.0]]))
bc_loss = (T_left - T0)**2 + (T_right - T1)**2
return physics_loss + bc_loss
3. Training function
def train_pinn(T0, T1, epochs=1000):
model = PINN()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
x = torch.linspace(0, 1, 100).reshape(-1, 1)
for epoch in range(epochs):
optimizer.zero_grad()
loss = compute_loss(model, x, T0, T1)
loss.backward()
optimizer.step()
if epoch % 100 == 0:
print(f"Epoch {epoch}, Loss: {loss.item():.6f}")
return model
4. Function to plot results
def plot_results(model, T0, T1):
x = torch.linspace(0, 1, 100).reshape(-1, 1)
with torch.no_grad():
T_pred = model(x).numpy()
x = x.numpy()
T_analytical = T0 + (T1 - T0) * x
plt.figure(figsize=(8, 6))
plt.plot(x, T_pred, label="PINN Solution")
plt.plot(x, T_analytical, '--', label="Analytical Solution")
plt.xlabel("x")
plt.ylabel("Temperature")
plt.title("1D Steady-State Heat Conduction")
plt.legend()
plt.grid(True)
plt.show()
5. GUI Aplication
class PINNApp:
def __init__(self, root):
self.root = root
self.root.title("PINN 1D Heat Conduction Solver")
# Labels and Entries
ttk.Label(root, text="T0 (Left Boundary, °C):").grid(row=0, column=0, padx=5, pady=5)
self.T0_entry = ttk.Entry(root)
self.T0_entry.grid(row=0, column=1, padx=5, pady=5)
self.T0_entry.insert(0, "100")
ttk.Label(root, text="T1 (Right Boundary, °C):").grid(row=1, column=0, padx=5, pady=5)
self.T1_entry = ttk.Entry(root)
self.T1_entry.grid(row=1, column=1, padx=5, pady=5)
self.T1_entry.insert(0, "0")
ttk.Label(root, text="Epochs:").grid(row=2, column=0, padx=5, pady=5)
self.epochs_entry = ttk.Entry(root)
self.epochs_entry.grid(row=2, column=1, padx=5, pady=5)
self.epochs_entry.insert(0, "1000")
# Solve Button
self.solve_button = ttk.Button(root, text="Solve & Plot", command=self.solve)
self.solve_button.grid(row=3, column=0, columnspan=2, pady=10)
def solve(self):
try:
T0 = float(self.T0_entry.get())
T1 = float(self.T1_entry.get())
epochs = int(self.epochs_entry.get())
model = train_pinn(T0, T1, epochs)
plot_results(model, T0, T1)
except ValueError:
messagebox.showerror("Error", "Please enter valid numerical values.")
if __name__ == "__main__":
root = tk.Tk()
app = PINNApp(root)
root.mainloop()

Dengan PINN, pendekatan berbasis deep learning, mampu menyelesaikan masalah konduksi panas 1D dengan tetap menjaga kepatuhan terhadap hukum fisika dan memberikan hasil yang akurat.
Sekian dari saya. Mohon maaf bila ada kesalahan.
Wassalamualaikum wr wb