ccitonline.com

CCIT – Cara Cerdas Ingat Tuhan

| AI.DAI5 | DAI5 eBook Free Download | CFDSOF | VisualFOAM | PT CCIT Group Indonesia | 8N8 |

Memahami dan Mempelajari PINNs (Physics-Informed Neural Networks) dengan Pendekatan Framework DAI5 – Muhammad Firdaus Hidayat (2306155211)

Assalamuโ€™alaikum Warahmatullahi Wabarakatuh

Segala puji dan syukur kita panjatkan kepada Allah SWT, Rabb semesta alam, yang telah menciptakan hukum-hukum alam dengan keteraturan yang menakjubkan serta menganugerahkan akal kepada kita untuk mengkajinya. Shalawat serta salam senantiasa tercurah kepada junjungan kita, Nabi Muhammad SAW, yang telah mengajarkan pentingnya menuntut ilmu sebagai jalan menuju keimanan. Perkenalkan saya Muhammad Firdaus Hidayat dengan NPM 2306155211, dalam esai ini saya akan membahas tentang Physics-Informed Neural Networks (PINNs), sebuah metode modern dalam menyelesaikan persoalan konduksi panas satu dimensi (1D) pada kondisi steady-state. Untuk memperdalam pemahaman, saya akan menggunakan pendekatan Framework DAI5, yang mengintegrasikan ilmu pengetahuan dengan kesadaran akan kebesaran Allah SWT.

Physics-Informed Neural Networks

Physics-Informed Neural Networks (PINNs) adalah terobosan dalam dunia komputasi ilmiah yang memadukan kecerdasan buatan dengan hukum-hukum fisika. Dalam kasus konduksi panas 1D pada kondisi steady-state, PINNs berfungsi untuk mencari distribusi suhu di sepanjang suatu domain, misalnya dari x=0, x=0, x=0 hingga x=1, x=1, x=1. Persamaan yang mengatur fenomena ini adalah

yang menunjukkan turunan kedua suhu terhadap posisi sama dengan nol. Berbeda dengan metode tradisional seperti Finite Difference Method (FDM) atau Finite Element Method (FEM) yang memerlukan pembagian domain menjadi elemen kecil, PINNs menggunakan jaringan saraf tiruan yang dilatih untuk memenuhi persamaan fisika tersebut serta kondisi batas.

Keunikan PINNs terletak pada kemampuannya menyelesaikan masalah tanpa diskretisasi rumit, menjadikannya efisien dan fleksibel. Lebih dari itu, metode ini mengajak kita untuk merenungkan keindahan hukum alam ciptaan Allah SWT. Untuk mengeksplorasi hal ini lebih jauh, saya akan menerapkan Framework DAI5 untuk membantu memahami PINNs ini.

Framework DAI5

Framework DAI5 terdiri dari lima tahap: Intention, Deep Awareness of I, Initial Thinking, Idealization, dan Instruction Set. Pendekatan ini menekankan bahwa ilmu pengetahuan harus berjalan seiring dengan keimanan, sehingga setiap pengetahuan yang kita peroleh menjadi sarana untuk mengenal Allah SWT lebih dalam.

1. Intention (Niat yang Lurus)

Sebagai seorang Muslim, langkah pertama dalam menuntut ilmu adalah meluruskan niat. Sebagaimana Allah SWT berfirman, โ€œKatakanlah: โ€˜Inilah jalanku, aku mengajak kepada Allah dengan penuh keyakinan, aku dan orang-orang yang mengikutikuโ€™โ€ (QS. Yusuf: 108). Dalam mempelajari PINNs, niat saya adalah untuk memahami hukum alam yang telah Allah SWT ciptakan, sekaligus mencari solusi yang dapat memberi manfaat bagi saya dan orang lain. Lebih dari itu, saya ingin menjadikan ilmu ini sebagai jalan untuk mensyukuri kebesaran-Nya, sebagaimana Rasulullah SAW mengajarkan bahwa menuntut ilmu adalah kewajiban bagi setiap Muslim. Dengan niat yang ikhlas, saya memulai perjalanan ini dengan harapan mendapat ridha Allah SWT.

2. Deep Awareness of I (Kesadaran Diri yang Dalam)

Pada poin nomor 2 dalam framework DAI5 ini mengajak saya untuk merenungkan kelemahan diri sebagai hamba di hadapan keagungan Allah SWT. Fenomena konduksi panas 1D, meskipun sederhana, adalah cerminan dari keteraturan alam yang luar biasa. Hukum Fourier:

Menunjukkan bahwa panas mengalir dari suhu tinggi ke rendah dengan proporsionalitas yang terukur. Dalam kondisi steady-state, distribusi suhu menjadi linear. Allah SWT berfirman, โ€œDia-lah yang menjadikan bumi sebagai hamparan bagimu dan langit sebagai atap, dan Dia menurunkan air (hujan) dari langit, lalu Dia menghasilkan dengan hujan itu segala macam buah-buahan sebagai rezeki untukmuโ€ (QS. Al-Baqarah: 22). Ayat ini mengingatkan saya bahwa setiap hukum alam adalah tanda kekuasaan-Nya. PINNs, sebagai alat buatan manusia, hanyalah upaya kecil untuk menyingkap sebagian kecil dari keajaiban tersebut. Kesadaran ini menjaga hati saya tetap tawadhu dalam mengejar ilmu.

3. Initial Thinking (Pemikiran Awal)

Sebelum melangkah ke implementasi, saya harus memahami dasar-dasar konduksi panas 1D secara menyeluruh. Persamaan yang mengatur sistem ini adalah:

Dan solusi analitisnya adalah:

yang menunjukkan suhu berubah secara linearโ€‹. PINNs bekerja dengan cara yang berbeda: ia mengaproksimasi solusi ini melalui jaringan saraf yang dilatih berdasarkan hukum fisika dan kondisi batas. Tahap ini mengajarkan saya pentingnya membangun fondasi yang kuat sebelum bertindak, sebagaimana Islam mendorong kita untuk berpikir dan merenung sebelum beramal. Dengan pemahaman ini, saya siap melangkah ke tahap berikutnya.

4. Idealization (Idealisasi)

Dalam kehidupan nyata, konduksi panas sering kali melibatkan kompleksitas seperti bentuk tiga dimensi atau material yang bervariasi. Namun, untuk mempermudah analisis, saya menyederhanakan kasus menjadi sistem 1D dalam domain x dari 0 hingga 1, dengan kondisi batas

Penyederhanaan ini tidak menghilangkan esensi fisika, melainkan memungkinkan saya fokus pada prinsip dasar sebelum menangani kasus yang lebih rumit. PINNs mendukung pendekatan ini dengan tidak memerlukan pembagian domain seperti metode tradisional, ia hanya menggunakan titik-titik acak untuk mengevaluasi persamaan

5. Instruction Set (Set Instruksi)

Tahap ini adalah langkah-langkah untuk mengimplementasikan PINNs. Saya menggunakan kode Python dengan PyTorch dan Matplotlib

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)

Bagian code ini mendefinisikan arsitektur jaringan saraf dengan satu input (x), dua lapisan tersembunyi (20 neuron per lapisan) menggunakan aktivasi Tanh untuk kelancaran, dan satu output [T(x)]. Dalam DAI5, ini adalah bagian dari Instruction Set yang mencerminkan keteraturan dan ketelitian dalam merancang solusi, sebagaimana Allah SWT menciptakan alam dengan presisi yang sempurna.

# Function to compute the loss
def compute_loss(model, x, T0, T1):
    x = x.requires_grad_(True)
    T = model(x)
    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 = torch.mean(d2T_dx2**2)
    T_left = model(torch.tensor([[0.0]], dtype=torch.float32))
    T_right = model(torch.tensor([[1.0]], dtype=torch.float32))
    bc_loss = (T_left - T0)**2 + (T_right - T1)**2
    return physics_loss + bc_loss

Fungsi ini menghitung loss dengan dua komponen: physics loss memastikan persamaan

terpenuhi, dan boundary condition loss menjamin suhu di batas sesuai dengan nilai yang ditentukan. Turunan dihitung menggunakan automatic differentiation. Dalam DAI5, ini mencerminkan Instruction Set yang menjaga kepatuhan pada hukum fisika, sekaligus mengingatkan saya akan ketaatan pada aturan Allah SWT dalam setiap ciptaan-Nya.

# 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).float()
    T0, T1 = torch.tensor(T0, dtype=torch.float32), torch.tensor(T1, dtype=torch.float32)
    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

Fungsi ini melatih jaringan saraf selama 1000 epoch. Titik-titik x diambil secara merata untuk mengevaluasi persamaan. Dalam DAI5, ini adalah langkah Instruction Set yang menunjukkan kesabaran dan ketekunanโ€”sifat yang dianjurkan dalam Islam untuk mencapai hasil yang akurat.

# Function to plot results
def plot_results(model, T0, T1):
    x = torch.linspace(0, 1, 100).reshape(-1, 1).float()
    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()

Bagian ini memvisualisasikan hasil PINNs dan membandingkannya dengan solusi analitis

Dalam DAI5, ini adalah bagian Instruction Set untuk memverifikasi kebenaran solusi, sekaligus mengajak kita bersyukur atas kemampuan akal yang diberikan Allah SWT untuk memahami ciptaan-Nya.

# GUI Application
class PINNApp:
    def __init__(self, root):
        self.root = root
        self.root.title("PINN 1D Heat Conduction Solver")
        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")
        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.")

GUI (Graphical User Interface) ini mempermudah pengguna memasukkan parameter dan menjalankan simulasi. Dalam DAI5, ini adalah Instruction Set yang mencerminkan semangat Islam untuk berbagi ilmu dan manfaat kepada sesama.

# Run the GUI
if __name__ == "__main__":
    root = tk.Tk()
    app = PINNApp(root)
    root.mainloop()

Baris ini menjalankan aplikasi. Dalam DAI5, ini adalah langkah akhir Instruction Set yang menandakan penyelesaian dengan penuh tanggung jawab.

Visualisasi

Dapat dilihat bahwa semakin banyak Epochs nya maka hasilnya akan semakin akurat, ini menunjukkan bahwa semakin banyak PINNs dilatih maka akan lebih akurat hasilnya.

Kesimpulan

Physics-Informed Neural Networks (PINNs) adalah metode cerdas yang menyelesaikan konduksi panas 1D secara efisien menggunakan jaringan saraf dan hukum fisika, dilengkapi GUI untuk kemudahan penggunaan. Melalui Framework DAI5, saya belajar meluruskan niat, menyadari kebesaran Allah SWT dalam hukum alam, memahami dasar-dasar secara sistematis, menyederhanakan masalah, dan mengeksekusi solusi dengan teliti. Melalui esai ini, saya berharap dapat menyampaikan dan menjelaskan bahwa PINNs adalah metode yang tidak hanya cerdas secara teknis, tetapi juga penuh makna spiritual ketika dilihat melalui Framework DAI5. Semoga esai ini bisa bermanfaat bagi teman-teman, kurang lebihnya mohon maaf.

Wassalamuโ€™alaikum Warahmatullahi Wabarakatuh

Muhammad Firdaus Hidayat (2306155211) – Kelas Metode Numerik 02


Leave a Reply

Your email address will not be published. Required fields are marked *