Assalamualaikum wr.wb
MESIN!!!
BERSYUKUR BERSYUKUR BERSYUKUR!!!
Selamat pagi siang sore pak Dai selaku dosen mata kuliah metode numerik departemen teknik mesin. Pada kesempatan kali ini, saya akan memaparkan sedikit tentang Prinsip dan Algoritma PINN Heat Conduction 1-D yang tentunya Menggunakan Framework DAI5. PINN itu sendiri adalah singkatan dari Physics-Informed Neural Networks yang merupakan pendekatan inovatif yang menggabungkanย neural networksย denganย hukum fisikaย untuk memecahkan masalah yang melibatkan persamaan diferensial parsial (PDE) dan sistem fisik kompleks.
Seperti biasa, saya akan menjelaskan terlebih dahulu apa itu Framework DAI5 beserta makna dan kaitannya dengan materi yang akan saya jelaskan berikut. Framework DAI5 terdiri dari Deep Awareness of I, Intentions, Initial Thinking, Idealization, dan Instruction Set. Berikut adalah kaitan dengan materi yang saya jelaskan :
- Deep Awareness of I : Sebelum memulai pemodelan, kita perlu menyadari bahwa masalah konduksi panas adalah bagian dari hukum alam yang diciptakan oleh Tuhan. Ini mengingatkan kita untuk mendekati masalah dengan rasa hormat dan keinginan untuk memahami kebenaran ilmiah yang mendasarinya
- Intention : Niat di sini adalah untuk memecahkan masalah konduksi panas dengan cara yang bermakna dan bermanfaat, misalnya untuk meningkatkan efisiensi energi atau memahami fenomena alam. Niat ini akan memandu kita dalam memilih pendekatan yang tepat, seperti menggunakan PINN untuk menggabungkan data observasi dengan hukum fisika (persamaan diferensial parsial/PDE).
- Initial Thinking : Analisis masalah konduksi panas 1-D, termasuk memahami persamaan panas (heat equation), kondisi batas (boundary conditions), dan kondisi awal (initial conditions). Identifikasi kondisi batas (misalnya, suhu tetap di ujung batang) dan kondisi awal (distribusi suhu awal), Memahami keterbatasan data dan kebutuhan untuk menggabungkan hukum fisika ke dalam model.
- Idealization : Membayangkan solusi ideal untuk masalah konduksi panas, seperti model yang dapat memprediksi distribusi suhu dengan akurasi tinggi bahkan dengan data terbatas. Contohnya dengan Mengintegrasikan persamaan panas ke dalam loss function untuk memastikan bahwa prediksi NN mematuhi hukum fisika.
- Instruction Set : Langkah-langkah konkret untuk mengimplementasikan PINN dalam masalah konduksi panas 1-D. Ini merupakan tahap yang berfungsi untuk menggabungkan seluruh langkah dalam kerangka DAI5, sehingga menghasilkan solusi yang optimal dan efisien.ย
Berikut merupakan contoh permodelan dengan python :
# Import Libraries
import torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt
# Define PINN Class
class PINN(nn.Module):
def __init__(self):
super(PINN, self).__init__()
self.net = nn.Sequential(
nn.Linear(1, 25), # Mengubah jumlah neuron pada layer pertama
nn.Tanh(),
nn.Linear(25, 25), # Mengubah jumlah neuron pada hidden layer
nn.Tanh(),
nn.Linear(25, 1)
)
def forward(self, x):
return self.net(x)
# 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
# Train PINN Function
def train_pinn(T0, T1, epochs=1000):
model = PINN()
optimizer = torch.optim.Adam(model.parameters(), lr=0.002) # Mengubah learning rate
x = torch.linspace(0, 1, 120).reshape(-1, 1) # Menambah jumlah titik diskritisasi
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
# Plot Result Function
def plot_results(model, T0, T1):
x = torch.linspace(0, 1, 120).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", linewidth=2)
plt.plot(x, T_analytical, "--", label="Analytical Solution", linewidth=2)
plt.xlabel("x")
plt.ylabel("Temperature")
plt.title("1D Steady-State Heat Conduction")
plt.legend()
plt.grid(True)
# Simpan grafik sebagai file jika tidak ada display
plt.savefig("heat_conduction_result_updated.png")
print("Grafik telah disimpan sebagai 'heat_conduction_result_updated.png'")
# Main Execution
if __name__ == "__main__":
# Parameter default
T0 = 100.0 # Suhu di x=0
T1 = 0.0 # Suhu di x=1
epochs = 1000
# Latih model dan tampilkan hasil
model = train_pinn(T0, T1, epochs)
plot_results(model, T0, T1)
Berikut merupakan hasil setelah code di run

Sekian materi yang bisa saya sampaikan pada pertemuan kali ini, kurang lebihnya mohon maaf
Wabillahi taufik wal hidayah
Wassalamualaikum Wr Wb
MESIN!!!
BERSYUKUR BERSYUKUR BERSYUKUR!!