Assalamualaikum Warahmatullah Wabarakatuh
Selamat pagi, siang, dan malam bagi para pembaca yang membaca blog ini. Semoga kita selalu dalam rahmat Tuhan YME dan selalu diberikan kesehatan untuk menjalani hari. Pada blog kali ini saya akan membahas mengenai PINN atau yang biasa dikenal sebagai Physics-Informed Neural Network. Selain itu saya akan membahas mengenai contoh penerapannya pada perpindahan panas 1D menggunakan metode DAI5. Pembahasan topik dapat dilihat pada paragraf berikutnya.
PINN
Physics-Informed Neural Network (PINN) adalah pendekatan dalam pembelajaran mesin yang mengintegrasikan hukum-hukum fisika ke dalam arsitektur jaringan saraf tiruan (neural network). PINN digunakan untuk menyelesaikan permasalahan berbasis persamaan diferensial, seperti Persamaan Diferensial Parsial (PDE) dan Persamaan Diferensial Biasa (ODE), yang sering muncul dalam ilmu teknik, fisika, dan matematika terapan.
Intinya, PINN merupakan sebuah cara untuk melatih sebuah AI atau yang biasa disebut machine learning dengan menggunakan sistem yang didesain semirip mungkin secara struktur dan fungsinya terhadap otak manusia. Keunggulan dalam menggunakan PINN adalah sebagai berikut:
- Mampu bekerja dengan data yang terbatas karena hukum fisika membantu mengisi kekosongan data.
- Dapat menyelesaikan masalah berbasis PDE/ODE yang sulit atau mahal untuk disimulasikan dengan metode numerik seperti metode elemen hingga (FEM) atau metode beda hingga (FDM).
- Generalizable ke berbagai aplikasi seperti dinamika fluida, mekanika material, elektrodinamika, dan biomedis.
Selain dalam penghitungan dalam perpindahan panas baik secara 1D hingga 3D. PINN dapat digunakan dalam:
- Simulasi Fluida (Computational Fluid Dynamics – CFD)
- Prediksi Getaran Struktur Mekanik
- Penyelesaian Inversi Geofisika
- Percepatan Simulasi Elektromagnetik
Selanjutnya, berikut adalah pembahasan mengenai penerapan PINN pada perpindahan panas secara 1D menggunakan DAI5.
1. Deep Awareness of I
Untuk memahami penerapan PINN untuk analisis heat conduction 1D, kesadaran mendalam mencerminkan pemahaman bahwa ilmu pengetahuan dan teknologi merupakan bagian dari kebijaksanaan yang diberikan oleh Allah SWT. Dengan menyadari bahwa semua hal termasuk heat transfer pada 1D adalah kebesaran-Nya, kita akan memiliki pemahaman yang lebih mendalam baik secara ilmiah, spiritual, dan juga sosial.
Penerapan PINN untuk memahami heat counduction pada 1D bukan hanya sekedar inovasi teknologi yang dibuat oleh manusia. Namun, hal ini juga dibuat untuk memahami ciptaan-Nya sebagai upaya untuk mendekatkan diri kepada-Nya. Terakhir, kita juga harus memiliki kesadaran bahwa ilmu yang didapat tidak boleh digunakan untuk hal yang buruk. Namun, hal ini harus digunakan untuk kebaikan dan untuk memberi manfaat bagi seluruh masyarakat
2. Intention
Untuk melanjutkan analisis, kita harus memiliki niat dan tujuan yang jelas. Dengan , niat yang relevan dengan permasalahan yang ada, hasil yang ada akan menjadi lebih baik dan dapat lebih mudah dipahami baik secara ilmiah, spiritual, dan sosial.
Walaupun niat yang ada hanya untuk mempelajari bagaimana heat conduction pada suatu benda bekerja. Namun, FINN juga dapat digunakan untuk berbagai masalah fisika lainnya. Selain itu, metode ini dikembangkan agar lebih adaptif dan dapat diterapkan dalam berbagai industri, seperti pendinginan prosesor dalam elektronik, manajemen termal baterai dalam otomotif, serta proses pengelasan dan pemanasan dalam manufaktur. Dalam penerapannya, penggunaan teknologi ini harus dilakukan secara bertanggung jawab dengan mempertimbangkan keberlanjutan serta dampak lingkungan, sehingga selaras dengan nilai-nilai spiritual yang menekankan manfaat yang lebih luas bagi manusia dan alam.
3. Initial Thinking
Pada simulasi heat conduction pada bidang 1D, digunakanlah persamaan sebagai berikut:

Selain itu, beberapa metode numerik dapat digunakan misalnya seperti Finite Difference Method (FDM) atau Finite Element Method (FEM) yang banyak digunakan. Namun, terdapat beberapa keterbatasan dalam penghitungannya. Misalnya seperti memerlukan diskritisasi mesh yang bisa mahal secara komputasi. Dan kurang efisien jika domainnya kompleks atau jika data eksperimen terbatas.
Karena alasan tersebut, PINN dipilih agar eksperimen dapat berjalan dengan atas. lancar walaupun dengan data yang terbatas. Selain itu, metode ini juga dapat diterapkan pada domain kompleks tanpa harus merancang skema numerik yang rumit.
4. Idealization
Pada pembuatan asumsi pada PINN, asumsi yang ada haruslah memiliki asumsi yang realistis agar implementasinya dapat lebih optimal. Selain itu, PINN juga harus mematuhi prinsip-prinsip dalam ilmu fisika sebagai bentuk realism untuk menyelesaikan berbagai permasalahan ilmiah baik dalam 1D atau 2D.
Karena PINN tidak mengandalkan mesh, namun hanya mengandalkan kondisi batas yang diberikan pada soal dan persamaan differensial dari hukum yang berhubungan sebagai panduan fisika. Nantinya, dalam proses pelatihannya, PINN akan menyesuaikan untuk meminimalisir total loss.

Physics Loss : Physics loss mengukur seberapa baik solusi yang diprediksi oleh jaringan saraf memenuhi persamaan diferensial fisika yang berlaku.
Boundary Loss : Boundary loss memastikan bahwa solusi yang diprediksi oleh PINN memenuhi kondisi batas yang telah ditentukan.
Total Loss : Total loss adalah jumlah dari physics loss dan boundary loss, yang berarti model tidak hanya belajar untuk memenuhi hukum fisika, tetapi juga untuk mematuhi kondisi batas.
5. Instruction Set
Langkah-langkah untuk mengimplementasi PINN pada kasus heat conduction 1D adalah sebagai berikut :
Definisi Arsitektur PINN
- Gunakan Multi-Layer Perceptron (MLP) dengan beberapa hidden layer.
- Input: x,tx, tx,t โ Output: u(x,t)u(x,t)u(x,t) (prediksi suhu).
- Gunakan fungsi aktivasi tanh untuk menangani fungsi kontinu dengan baik.
Formulasi Loss Function
- Formulasikan total loss dengan dua komponen utama.
- Physics Loss : Physics loss mengukur seberapa baik solusi yang diprediksi oleh jaringan saraf memenuhi persamaan diferensial fisika yang berlaku.
- Boundary Loss : Boundary loss memastikan bahwa solusi yang diprediksi oleh PINN memenuhi kondisi batas yang telah ditentukan.
Training Model
- Gunakan optimizer Adam untuk update bobot, lalu L-BFGS untuk konvergensi yang lebih baik.
- Gunakan metode sampling Latin Hypercube untuk memilih titik training yang lebih efektif.
Evaluasi Model
- Bandingkan solusi PINN dengan solusi numerik (FEM/FDM) untuk memastikan akurasi.
- Uji model pada berbagai kondisi batas dan variasi material untuk mengevaluasi performa.
Dengan instruction set yang ada, kita akan mencoba menggunakan python pada VSCode untuk mempelajari fenomena ini. Code yang digunakan adalah sebagai berikut
import torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt
import tkinter as tk
from tkinter import ttk
import tkinter.messagebox
# Define the 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)
# 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
# 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
# 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()
# GUI Application
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:
tk.messagebox.showerror("Error", "Please enter valid numerical values.")
# Run the GUI
if __name__ == "__main__":
root = tk.Tk()
app = PINNApp(root)
root.mainloop()
Berikut adalah hasil yang ada dengan menggunakan program tersebut:
1. Epoch 1000

2. Epoch 3000
Dengan T0 dan T1 sama dengan gambar di atas

3. Epoch 8000

4. Epoch 10000

Hasil observasi:
- Epoch 1000 : Deviasi dari solusi analitis masih sangat jauh danperbedaan gradien masih terlihat secara signifikan
- Epoch 3000 : Deviasi yang ada semakin sedikit, perbedaan graadien mulai terlihat makin sedikit.
- Epoch 8000 : Perbedaan antara grafik PINN dan solusi analitis mulai pudar, sudah terlihat membentuk persamaan yang seharusya.
- Epoch 10000 : Grafik solusi analitis dan PINN sudah memiliki perbedaan yang sangat kecil, sehingga dapat dikatakan grafiknya sama.
Maka, dari hasil observasi, didapat bahwa semakin banyak PINN dilatih, maka hasil yang didapat akan menjadi semakin akurat. Jadi, pendekatan secara data dan hukum fisika dapat secara efektif menyelesaikan permasalahan hukum fisika yang ingin diketahui dan dapat diselesaikan dengan metode numerik.
Kesimpulan
Physics Informed Neural Networks (PINN) adalah sebuah pendekatan machine learning yang memiliki kemiripan dengan sistem saraf manusia. PINN menggabungkan konsep ilmiah dan machine learning untuk menyelesaikan masalah. Selain itu, digunakan juga framework DAI5 untuk membantu memahami mengenai PINN.
PINN dapat mengatasi beberapa masalah yang dihadapi dalam menyelesaikan masalah numerik. Mulai dari perlu komputasi yang mahal hingga data yang kurang. Oleh karena itu, PINN dapat menjadi alternatif untuk penyelesaian masalah numerik yang memiliki masalah-masalah tersebut.
Semakin banyak training yang diberikan kepada model, maka akan semakin akurat hasil yang dihasilkan oleh PINN. Dengan membuat model mempelajari lebih banyak mengenai data yang ada dan dihasilkan serta mempelajari hukum fisika yang berhubungan, akan membuat hasil data semakin akurat.