Assalamualaikum Warahmatullahi Wabarakatuh
MESIN!
BERSYUKUR BERSYUKUR BERSYUKUR
Salam sejahtera untuk kita semua. Izin memperkenalkan diri saya Adam Zaki dengan NPM 2306155325 dari kelas Metode Numerik-03. Tak terasa kita telah ada di penghujung bulan yang penuh berkah ini yaitu bulan Ramadhan. Disini saya izin meminta maaf kepada Prof. DAI dan seluruh saudara rekan mahasiswa bila saya masih banyak kekurangan dan kekhilafan yang telah saya lakukan. Semoga seluruh amal ibadah kita di bulan yang mulia ini diterima dan seluruh dosa-dosa kita diampuni oleh-Nya. Saya doakan untuk kita semua senantiasa dilimpahkan kesehatan hingga kita bertemu bulan Ramadhan di tahun yang akan datang.
Menuntut ilmu bagi mahasiswa saat bulan Ramadhan bukanlah hal yang mudah. Banyak distraksi dan banyak pula godaan yang datang untuk kita meluruskan niat kita dalam menuntut ilmu. Metode Numerik merupakan diantaranya yang memiliki banyak godaan dari kita untuk absen mengikuti perkuliahan dan juga dalam mengerjakan tugas dengan tepat waktu. Sehingga disini saya ingin mengingatkan kepada seluruh rekan mahasiswa bahwasanya Niat kita harus diluruskan dalam menuntut ilmu bukan hanya saat di bulan Ramadhan saja, namun lepas dari bulan suci yang penuh berkah ini kita tetap berpegang teguh dan senantiasa melaksanakan Ibadah untuk menjaga keimanan diri kita.
Baik langsung saja ke tujuan utama saya, tujuan saya kali ini adalah saya akan sedikit menjelaskan tentang apa yang sudah saya telah pelajari dalam Memahami Prinsip & Algoritma PINN Heat Conduction 1D dengan Pendekatan Framework DAI5. Penting adanya framework ini karena sebagai tools untuk mempermudah kita dalam mengidentifikasi suatu permasalahan dan menemukan solusi konkret dari suatu permasalahan.
- Deep Awareness of Iย
Kesadaran diri sendiri akan menuntut ilmu merupakan komponen penting yang harus ada di dalam diri seorang mahasiswa. Kesadaran akan apa yang ingin kita pelajari dan dalami untuk diri kita dan kesadaran akan manfaat dari apa yang kita peroleh selama mempelajari suatu hal. Tanpa kesadaran diri sendiri, siapa lagi yang dapat merubah dan menyadarkan diri sendiri
- Intention
Niat yang baik tentu akan mempermudah kita dalam menentukan arah kita dalam berproses. Berproses tentu banyak sekali tantangan dan godaannya. Namun, dengan niat yang tulus dan ikhlas serta menganggap menuntut ilmu ini adalah ibadah kita sebagai seorang manusia tentunya Allah SWT akan senantiasa membantu Hamba-Nya yang sedang mengalami kesulitan sekalipun
- Initial Thinking About Problemย
Perumusan masalah yang sedang dihadapi sangatlah penting untuk kita pahami dengan cara berpikir yang terstruktur dan juga sistematis merupakan bare minimum kita sebagai mahasiswa dalam menghadapi suatu permasalahan.
- Idealization
Setelah merumuskan masalah kemudian kita tidak lupa untuk meng-idealisasi suatu permasalahan yang ada. Bagaimana suatu permasalahan itu dapat mencapai titik ideal sehingga masalah yang telah dianalisa tidak berhenti hanya sampai di tahap identifikasinya.
- Instruction Set
Tentu yang tak kalah penting adalah langkah-langkah apa yang akan diambil untuk menyelesaikan masalah sehingga bukan hanya kita sebut solusi apa yang tepat namun bagaimana cara kita mengimplementasikan ide-ide untuk menyelesaikan suatu permasalahan dengan tepat sesuai dengan analisa permasalahan utama.
Di era kecerdasan buatan, Physics-Informed Neural Networks (PINNs) hadir sebagai jembatan antara fisika klasik dan pembelajaran mesin. Namun, untuk memahami esensinya, kita perlu melampaui algoritma teknisโkita harus merenungkan proses berpikir yang mendasarinya. Framework DAI5 (Deep Awareness of I, Intention, Initial-Thinking, Idealization, Instruction-Set) membantu kita menafsirkan PINN bukan sekadar kode, tetapi sebagai perwujudan kesadaran, niat, dan kreativitas manusia. Mari kita jelajahi prinsip PINN 1D HC (Heat Conduction) melalui lensa filosofi DAI5.
1. Deep Awareness of I: Kesadaran yang Membumi
Bayangkan saya adalah seorang penjelajah yang berdiri di tepi sungai pengetahuan. Di depan saya, mengalir dua arus:ย dataย yang sporadis danย hukum fisikaย yang abadi.ย Deep Awareness of Iย adalah saat saya menyadari posisi saya di antara kedua arus ini. Saya bukan hanya pengamat, tetapiย jembatanย yang menghubungkannya.
Dalam konteks PINN 1D HC (Persamaan Panas 1 Dimensi), kesadaran ini dimulai dengan pertanyaan reflektif:
- “Apa peran saya sebagai neural network? Apakah saya sekadar alat hitung, atau bagian dari alam yang mematuhi hukum termodinamika?”
Neural network (NN) harus “tahu diri”: ia bukan penguasa data, melainkan murid yang rendah hati di hadapan persamaan panasย ut=ฮฑuxxutโ=ฮฑuxxโ. Setiap prediksi suhuย u^(x,t)u^(x,t)ย adalah upayanya untukย merasakanย aliran panas, seolah-olah ia sendiri adalah batang logam yang menyalurkan energi.
2. Intention: Niat yang Menuntun Langkah
Niat adalah nyala api yang menerangi labirin komputasi. Tanpa niat, algoritma hanyalah robot tak bernyawa. Dalamย PINN 1D HC, niat ini terbagi dua:
- Niat Primer:ย “Aku ingin memprediksi suhu di seluruh ruang-waktu, bahkan di mana data tak terjamah.”
- Niat Sekunder:ย “Aku juga ingin memahami rahasia material iniโberapa nilai difusivitas termalย ฮฑฮฑ-nya?”
Niat ini ibarat seorang penari yang tak hanya menghafal gerakan, tetapi juga ingin memahami irama musiknya. NN tak hanya mencari solusi PDE, tetapi juga berdialog dengan parameter fisika.
3. Initial-Thinking: Rencana di Atas Kertas Kosong
Sebelum menari, penari merencanakan setiap langkah.ย Initial-Thinkingย adalah tahap di atas kertas sketsa, di mana ilmuwan dan NN bersama-sama menggambar peta perjalanan.
Untuk PINN 1D HC, ini mencakup:
- Menggambar Batas Wilayah:
“Domain spasialย xxย adalah batang logam sepanjang 1 meter. Waktuย ttย adalah 10 detik. Di sini, aku akan bekerja.” - Menulis Syarat Awal/Batas:
“Di ujung kiri (x=0x=0), suhu tetapย 100โC100โC. Saatย t=0t=0, seluruh batang bersuhuย 25โC25โC.” - Merancang Arsitektur JST:
“Empat lapisan tersembunyi dengan 20 neuron masing-masing. Aktivasi Tanh, karena kurvanya halus seperti distribusi suhu.”
Dialog Batin NN:
“Jika aku terlalu dalam (banyak layer), aku mungkin overfit. Jika terlalu dangkal, aku tak bisa menangkap gradien panas. Ini tentang keseimbangan…”
4. Idealization: Menyulam Mimpi menjadi Persamaan
Idealization adalah saat mimpi bertemu matematika. Di sini, konsep abstrak dijahit menjadiย loss functionโjantung dari PINN.
Untuk PINN 1D HC, tiga benang disulam:
- Benang Dataย (LdataLdataโ):
“Di titik-titik ini, prediksiku harus mendekati data eksperimen. Kesalahanku di sini adalah dosa yang terukur.” - Benang Fisikaย (LPDELPDEโ):
“Di setiap titik kolokasi, hukum termodinamika tak boleh kulanggar. Residualย utโฮฑuxxutโโฮฑuxxโย harus mendekati nolโseperti bisikan alam yang kudengarkan.” - Benang Batasย (LBC/ICLBC/ICโ):
“Di tepi domain dan saat t=0, aku harus patuh. Ini bukan pilihan, tapi kewajiban.”
Metafora Bobot Loss:
Seperti seorang ibu yang membagi perhatian:
- Jika data melimpah,ย ฯdataฯdataโย besarโprioritas pada anak yang rewel.
- Jika data langka,ย ฯPDEฯPDEโย dominanโfisika menjadi pengasuh utama.
5. Instruction-Set: Tarian Kode dan Turunan
Instruksi adalah ritme yang mengubah ide menjadi gerakan. Dalamย PINN 1D HC, ini adalah koreografi terstruktur dariย forward passย hinggaย backward pass.
Instruksi adalah ritme yang mengubah ide menjadi gerakan. Dalamย PINN 1D HC, ini adalah koreografi terstruktur dariย forward passย hinggaย backward pass.
Langkah demi Langkah:
- Inisialisasi:
“Hai TensorFlow, bangunkan NN dengan 4 hidden layer. Sebarkan titik kolokasi secara acakโmereka adalah saksi bisu hukum fisika.” - Forward Pass:
- “Untuk setiapย (x,t)(x,t), prediksiย u^u^.”
- “Hitungย u^tu^tโย danย u^xxu^xxโย dengan autogradโseperti membedah jiwa prediksi.”
- Hitung Loss:
- “Loss data adalah tangisanku saat salah memprediksi titik eksperimen.”
- “Loss PDE adalah malu saat residual fisika membesar.”
- “Loss BC/IC adalah hukuman karena melanggar aturan.”
- Backward Pass:
“Adam, optimisermu, berbisik: ‘Turunkan learning rate, gradien terlalu kasar.’” - Iterasi:
“Ulangi 10.000 epochโsetiap langkah adalah meditasi, mendekati harmoni data dan fisika.”
Berikut adalah Kode Pemrograman yang saya jalankan di VSCODE :
# 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)
dan berikut adalah hasil dari kode pemrograman setelah saya RUN :
Sekian yang dapat saya sampaikan. Mohon maaf bila masih banyak kekurangannya dalam penyampaian oleh saya. Wajar karena manusia tak luput dari kesalahan dan kekhilafan. Terimakasih banyak atas perhatiannya
Wasssalamualaikum Warahmatullahi Wabarakatuh