Assalamualaikum Warahmatullahi Wabarakatuh,
Salam sejahtera bagi kita semua,
Perkenalkan nama saya Rafi Daffa Putra Hariza dengan NPM 2306222254. Pada blog ini saya akan memaparkan Prinsip & Algoritma PINN Heat Conduction 1D dengan Framework DAI5. Sebelum melanjutkan ke pembahasan, alangkah baiknya kita mengenal apa itu PINN terlebih dahulu.
PINN, singkatan dari Physics-Informed Neural Network, adalah algoritma machine learning yang dirancang khusus untuk menyelesaikan masalah berbasis fisika. Neural network ini mengintegrasikan hukum-hukum fisika yang dijelaskan oleh persamaan diferensial ke dalam fungsi loss-nya untuk membimbing proses learning menuju solusi yang lebih konsisten dengan hukum fisika yang mendasarinya. Physics-Informed Neural Network (PINN) mewujudkan pendekatan transformatif dalam scientific machine learning (SciML), memungkinkan perpaduan yang mulus antara data observasi dengan struktur intrinsik hukum-hukum fisika.
Neural network adalah program atau model machine learning yang membuat keputusan dengan cara yang mirip dengan otak manusia, menggunakan proses yang meniru cara kerja neuron biologis untuk mengidentifikasi fenomena, mempertimbangkan opsi, dan mencapai kesimpulan. Setiap neural network terdiri dari lapisan-lapisan node, yaitu input layer, hidden layer, dan output layer. Setiap node memiliki bobot dan threshold. Jika output suatu node melebihi threshold, node tersebut aktif dan mengirim data ke lapisan berikutnya; jika tidak, data tidak diteruskan.
Prinsip PINN untuk Heat Conduction 1D
PINN menggunakan jaringan saraf untuk mengaproksimasi solusi u(x,t) dengan meminimalkan residual dari PDE ini, bersama dengan kondisi awal dan batas yang diberikan. Prinsip utamanya melibatkan:
Initial and Boundary Conditions: Memastikan solusi konsisten dengan data yang diketahui pada batas domain dan waktu awal.
Automatic Differentiation: Menghitung turunan-turunan yang diperlukan dalam PDE secara langsung.
Loss Function: Didefinisikan untuk mencakup:
Residual PDE: Mengukur sejauh mana solusi memenuhi persamaan panas.
Penerapan Framework DAI5 pada PINN Heat Conduction 1D
I. Deep Awareness of I
Tahapan ini menekankan kesadaran mendalam akan diri dan hubungan dengan Sang Pencipta sebagai dasar analisis. Dalam penerapan PINN, kesadaran ini tercermin dalam pemahaman bahwa hukum fisika, seperti persamaan panas, adalah bagian dari ciptaan yang sedemikian rupa dan dapat dipelajari. Kriteria seperti Consciousness of Purpose mendorong kita untuk mempelajari heat conduction tidak hanya sebagai masalah teknis, tetapi juga sebagai cara kita untuk lebih dekat dengan Sang Pencipta (The Creator). Penekanan self-awareness dan self-consciousness dalam poin ini juga membantu kita untuk dapat memposisikan diri dan meminta bantuan Tuhan Yang Maha Esa agar dimudahkan dalam penggunaan PINN untuk Heat Conduction nantinya.
II. Intention
Pada tahapan ini niat yang jelas adalah hal yang ditekankan. Dalam PINN, kriteria seperti Clarity of Intent berarti menetapkan tujuan untuk memodelkan distribusi suhu secara akurat sembari memahami dan mempelajari hukum fisika. Dengan memiliki niat yang jelas, kita tidak akan mudah goyah dan terdistraksi. Selain itu dengan niat yang jelas, kita akan selalu tertuju pada niat yang baik dan bermanfaat baik untuk diri sendiri maupun orang lain.
III. Initial Thinking (about the problem)
Tahapan ini melibatkan pemahaman mendalam tentang masalah sebelum mencari solusi. Untuk heat conduction 1D, ini berarti mendefinisikan domain dan environment, mengidentifikasi boundary condition, serta memahami faktor-faktor yang memengaruhi distribusi suhu, seperti sifat material. Kriteria seperti Root Cause Analysis dapat digunakan untuk mengidentifikasi faktor-faktor yang memengaruhi distribusi suhu, seperti sumber panas atau variasi material. Dengan memahami betul masalah yang dihadapi, eksekusi dari solusi dapat berjalan dengan efisien dan maksimal.
IV. Idealization
Tahapan idealization melibatkan penyederhanaan masalah untuk membangun model yang realistis. Penyerdehanaan ini bisa dilakukan dengan melakukan asumsi terhadap beberapa aspek dari model yang kita buat. Dalam PINN, kriteria seperti Assumption Clarity berarti menyatakan asumsi kondisi model berada dalam keadaan steady-state. Tentunya asumsi-asumsi yang kita buat harus mematuhi kondisi alam sebenarnya agar kriteria Physical Realism tetap bisa dijalankan. Dengan asumsi yang realistis, solusi dapat mematuhi hukum fisika yang dijamin oleh penyertaan residual PDE dalam loss function. Dalam kasus yang akan dibuat, kondisi diasumsikan Steady-State.
V. Instruction-Set
Tahapan ini mengarahkan penerapan solusi melalui langkah-langkah terorganisasi. Dalam simulasi dengan PINN, ini berarti kita dapat mengintegrasikan semua tahapan DAI5 sehingga dapat menciptakan solusi yang maksimal dan efisien. Selain itu, solusi yang didapatkan juga dapat bermanfaat dan berkelanjutan sesuai dengan kriteria Sustainability Integration. Dalam tahapan ini, langkah-langkah yang jelas dan visualisasi yang mudah dipahami merupakan hal yang penting seperti pada kriteria Clarity of Steps dan Physical Interpretation untuk membuat proses simulasi berjalan dengan jelas dan baik.
Langkah-langkah tersebut mencakup:
1. Mengingat dan meminta pertolongan Sang Pencipta sebelum memulai pemodelan PINN.
2. Menentukan niat yang jelas dan baik agar dalam pengerjaan pemodelan PINN tidak mudah terdistraksi.
3. Memahami betul prinsip dasar Heat Conduction 1D agar dalam proses pembuatan pemodelan dapat lancar dan tidak ada kebingungan.
4. Membuat Pemodelan dengan Code Python.
a. Import Libraries
import torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt
import tkinter as tk
from tkinter import ttk
Mengimpor libraries yang digunakan dalam pemodelan.
torch
digunakan untuk membangun dan melatih model PINN (Physics-Informed Neural Network).numpy
digunakan untuk manipulasi array numerik.matplotlib.pyplot
digunakan untuk visualisasi grafik solusi.tkinter
danttk
digunakan untuk membangun antarmuka grafis (GUI).
Fungsi: Menggabungkan berbagai alat untuk membangun, melatih, memvisualisasikan, dan memungkinkan pengguna mengatur parameter melalui GUI.
b. Define PINN Class
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)
Define neural network yang menjadi inti PINN.
- Class ini adalah subclass dari
torch.nn.Module
. - Neural network terdiri dari 3 lapisan:
- 1 neuron di input (mengambil posisi xxx).
- Dua lapisan tersembunyi masing-masing 20 neuron dengan aktivasi
Tanh
. - 1 neuron output yang memprediksi suhu T(x).
- Fungsi
forward
menentukan bagaimana data melewati jaringan.
Fungsi: Memodelkan solusi persamaan diferensial dengan PINN.
c. Compute Loss Function
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
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
Menghitung fungsi kerugian (loss function) untuk pelatihan PINN.
physics_loss
: Memastikan PINN memenuhi persamaan d^2T/dx^2 = 0.bc_loss
: Memastikan PINN memenuhi boundary condition (temperatur di x=0 dan x=1).- Kerugian total adalah jumlah dari dua komponen tersebut.
Fungsi: Function ini digunakan dalam pelatihan untuk memandu jaringan menghasilkan solusi yang mematuhi hukum fisika dan kondisi batas.
d. Train PINN 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
Melatih model PINN untuk menyelesaikan persamaan diferensial.
- Model dibuat menggunakan kelas
PINN
. - Optimizer Adam digunakan untuk memperbarui bobot jaringan.
- Dataset adalah titik-titik x yang merentang dari 0 hingga 1.
- Pada setiap iterasi, fungsi kerugian dihitung, lalu dilakukan backpropagation untuk mengurangi kerugian.
- Status pelatihan dicetak setiap 100 epoch.
Fungsi: Melatih jaringan agar dapat mendekati solusi persamaan 1D steady-state heat conduction.
e. Plot Result Function
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()
Memvisualisasikan hasil prediksi PINN dibandingkan dengan solusi analitik.
โข Solusi analitik dihitung sebagai

โข matplotlib
digunakan untuk membuat grafik perbandingan.
Fungsi: Memvalidasi dan membandingkan hasil prediksi model dengan solusi sebenarnya.
f. GUI Class (PINNApp
)
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.")
Membuat aplikasi GUI yang memungkinkan pengguna untuk memasukkan parameter pelatihan dan memvisualisasikan hasilnya.
- GUI menampilkan entry fields untuk T0, T1โ, dan jumlah epoch.
- Tombol “Solve & Plot” melatih model dan menampilkan grafik.
Fungsi: Mempermudah interaksi pengguna dengan program tanpa harus memodifikasi kode.
g. Run GUI
if _name_ == "_main_":
root = tk.Tk()
app = PINNApp(root)
root.mainloop()
Memulai antarmuka grafis (GUI).
- Membuat objek
Tk()
sebagai root window untuk GUI. - Kelas
PINNApp
diinstansiasi dan dijalankan.
Fungsi: Membuat program interaktif dengan GUI yang mudah digunakan.
Output Plot Coding PINN dengan Python
Epoch: 1000

Epoch: 10000

Kesimpulan
PINN untuk heat conduction 1D menawarkan solusi cerdas yang menggabungkan machine learning dengan hukum fisika, sementara framework DAI5 memberikan panduan yang memastikan prosesnya bermakna dan sistematis. Dengan mengintegritaskan PINN dengan Framework DAI5, kita dapat menciptakan pendekatan yang tidak hanya advanced tetapi juga mendalam secara filosofis dan terarah secara praktis dalam menyelesaikan masalah heat conduction 1D.