ccitonline.com

CCIT – Cara Cerdas Ingat Tuhan

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

Prinsip dan Algoritma PINN Heat Conduction 1-D dengan Menggunakan Framework DAI5 _Raihan Zafio S_2306247313

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 :

  1. 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
  2. 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).
  3. 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.
  4. 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.
  5. 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!!


Leave a Reply

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