ccitonline.com

CCIT – Cara Cerdas Ingat Tuhan

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

Memahami (Physics-Informed Neural Network) PINN Pada Heat Conduction 1-Dimensi dengan Pendekatan DAI5_Radiya Daniswara Apta Mahdi (2306207341)_Metnum 02

Assalamuโ€™alaikum Warahmatullahi Wabarakatuh

Puji syukur kehadirat Allah SWT atas segala rahmat dan karunia-Nya, saya dapat menyelesaikan tugas Metode Numerik ini dengan sebaik baik mungkin. Shalawat serta salam senantiasa tercurahkan kepada Nabi Muhammad SAW, sang pembawa cahaya ilmu pengetahuan, yang telah mengantarkan umat manusia dari kegelapan menuju jalan yang terang benderang.

Pada hari ini, saya menjelaskan mengenai (Physics-Informed Neural Network) PINN Pada Heat Conduction 1-Dimensi dengan Pendekatan DAI5

(Physics-Informed Neural Network) PINN

Physics-Informed Neural Networks (PINNs) adalah jenis jaringan saraf buatan yang mengintegrasikan persamaan fisika ke dalam proses pelatihannya. Tidak seperti jaringan saraf tradisional yang hanya belajar dari data, PINN menggabungkan hukum fisika dalam bentuk persamaan diferensial parsial (PDE) atau persamaan diferensial biasa (ODE) sebagai bagian dari fungsi kehilangan (loss function).

Konsep Dasar PINN

PINN dirancang untuk menyelesaikan masalah yang melibatkan sistem fisika, seperti dinamika fluida, mekanika padat, atau propagasi gelombang. Model ini bekerja dengan cara:

  1. Menggunakan Jaringan Saraf: Seperti model machine learning biasa, PINN menggunakan jaringan saraf dalam untuk belajar dari data input-output.
  2. Mengintegrasikan Hukum Fisika: PINN memastikan bahwa prediksi model mematuhi hukum fisika dengan memasukkan PDE/ODE dalam fungsi loss-nya.
  3. Menggunakan Diferensiasi Otomatis: Untuk menghitung turunan dari output jaringan, PINN memanfaatkan differentiable programming sehingga dapat menghitung gradien dengan presisi tinggi.

Keunggulan PINN

  1. Mampu Menyelesaikan Masalah dengan Data Terbatas โ€“ Karena PINN mengandalkan hukum fisika, model ini tidak selalu membutuhkan data dalam jumlah besar seperti model deep learning tradisional.
  2. Dapat Memperkirakan Solusi pada Domain Luas โ€“ Berbeda dengan metode numerik seperti metode elemen hingga (FEM) atau metode beda hingga (FDM), PINN lebih fleksibel dalam menangani domain kompleks.
  3. Dapat Digunakan untuk Inversi dan Optimasi โ€“ PINN bisa digunakan tidak hanya untuk menemukan solusi masalah fisika, tetapi juga untuk inferensi parameter tersembunyi dalam sistem.

Aplikasi PINN

  1. Simulasi Fluida โ€“ Untuk masalah dinamika fluida, seperti aliran udara di sekitar sayap pesawat atau turbulensi.
  2. Mekanika Struktur โ€“ Untuk analisis deformasi dan tegangan dalam material.
  3. Geofisika โ€“ Untuk pemodelan gempa bumi atau pergerakan tanah.
  4. Biomedical Engineering โ€“ Digunakan dalam simulasi aliran darah dan dinamika jaringan biologis.

PINN adalah pendekatan yang berkembang pesat dalam AI untuk sains dan teknik, menawarkan metode yang lebih efisien dan akurat untuk menyelesaikan masalah berbasis fisika.

berikut adalah Penerapan PINN (Physics-Informed Neural Network) Pada Heat Conduction 1-Dimensi dengan Pendekatan DAI5

1. Deep Awareness (of) I

  • Dalam konteks konduksi panas, langkah pertama adalah menyadari bahwa fenomena perpindahan panas adalah bagian dari keteraturan alam semesta.
  • Dalam sains, hukum-hukum seperti hukum Fourier tentang konduksi panas menunjukkan bagaimana energi berpindah sesuai dengan prinsip-prinsip fisika yang sudah ditetapkan di alam.
  • Dari perspektif DAI5, ini adalah tahap refleksi terhadap keteraturan dan kebijaksanaan dalam sistem fisika, serta bagaimana pemahaman ini dapat membawa manfaat lebih luas.

2. Intention (Niat yang Benar)

    • Dalam penggunaan PINN untuk konduksi panas, niat utama adalah mengembangkan metode yang lebih efisien, akurat, dan membutuhkan lebih sedikit data dibandingkan metode numerik tradisional.
    • Dengan pendekatan DAI5, niat ini juga bisa dikaitkan dengan pemanfaatan ilmu pengetahuan untuk kesejahteraan umat manusia, misalnya dalam optimalisasi sistem pendingin atau efisiensi energi dalam industri.

    3. Initial Thinking

    • Dalam metode numerik konvensional (misalnya metode beda hingga), solusi diperoleh dengan diskretisasi domain spasial dan waktu.
    • Dengan PINN, solusi dapat ditemukan tanpa diskretisasi eksplisit, melainkan dengan memasukkan persamaan diferensial ke dalam fungsi loss neural network, sehingga lebih fleksibel dan lebih efisien untuk domain yang kompleks.

    4. Idealization

    • PINN memungkinkan pendekatan berbasis fungsi aproksimasi kontinu untuk memodelkan distribusi suhu tanpa bergantung pada metode grid diskret.
    • Asumsi yang dibuat dalam PINN untuk konduksi panas 1D bisa mencakup:
      • Material homogen dengan konduktivitas termal konstan.
      • Sumber panas tetap atau bervariasi sebagai kondisi batas.
      • Steady-state atau transient tergantung pada kebutuhan analisis.
    • Dari perspektif DAI5, idealisasi ini harus tetap realistis dan bermakna, agar hasil yang diperoleh memiliki interpretasi yang sesuai dengan sistem fisik sesungguhnya.

    5. Instruction Set

    Langkah-langkah implementasi PINN dalam simulasi heat conduction 1D

    Definisi Arsitektur PINN

    • Gunakanย Multi-Layer Perceptron (MLP)ย dengan beberapa hidden layer.
    • Input: x,tx, tx,t โ†’ย Output: u(x,t)u(x,t)u(x,t) (prediksi suhu).
    • Gunakan fungsi aktivasiย tanhย untuk menangani fungsi kontinu dengan baik.

    Formulasi Loss Function

    • Formulasikan total loss dengan dua komponen utama.
    • Physics Loss : Physics loss mengukur seberapa baik solusi yang diprediksi oleh jaringan saraf memenuhi persamaan diferensial fisika yang berlaku.
    • Boundary Loss : Boundary loss memastikan bahwa solusi yang diprediksi oleh PINN memenuhi kondisi batas yang telah ditentukan.

    Training Model

    • Gunakanย optimizer Adamย untuk update bobot, laluย L-BFGSย untuk konvergensi yang lebih baik.
    • Gunakanย metode sampling Latin Hypercubeย untuk memilih titik training yang lebih efektif.

    Evaluasi Model

    • Bandingkan solusi PINN dengan solusi numerik (FEM/FDM) untuk memastikan akurasi.
    • Uji model pada berbagai kondisi batas dan variasi material untuk mengevaluasi performa.

    Dengan instruction set yang ada, kita akan mencoba menggunakan python pada VSCode untuk mempelajari fenomena ini. Code yang digunakan adalah sebagai berikut

    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)
    
    
    # Function to compute the loss
    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 (d^2T/dx^2 = 0)
        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
    
    
    # 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)
        
        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
    
    
    # Function to plot results
    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()
    
    
    # GUI Application
    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.")
    
    
    # Run the GUI
    if __name__ == "__main__":
        root = tk.Tk()
        app = PINNApp(root)
        root.mainloop()

    Hasil Visualisasi

    Epoch 1000

    Epoch 3000

    Epoch 8000

    Epoch 10000

    Hasil Pengamatan PINN pada epoch yang berbeda akan menunjukkan peningkatan akurasi. Misalnya

    • Epoch 1000 : Deviasi dari solusi analitis masih sangat jauh danperbedaan gradien masih terlihat secara signifikan
    • Epoch 3000 : Deviasi yang ada semakin sedikit, perbedaan graadien mulai terlihat makin sedikit.
    • Epoch 8000 : Perbedaan antara grafik PINN dan solusi analitis mulai pudar, sudah terlihat membentuk persamaan yang seharusya.
    • Epoch 10000 : Grafik solusi analitis dan PINN sudah memiliki perbedaan yang sangat kecil, sehingga dapat dikatakan grafiknya sama.

    Hasil ini menunjukan bahwa semakin banyak PINN dilatih, maka hasil yang didapat akan menjadi semakin akurat. Jadi, pendekatan secara data dan hukum fisika dapat secara efektif menyelesaikan permasalahan hukum fisika yang ingin diketahui dan dapat diselesaikan dengan metode numerik.

    Kesimpulan

    Physics-Informed Neural Networks (PINN) merupakan metode machine learning yang terinspirasi dari cara kerja jaringan saraf manusia. Pendekatan ini memadukan prinsip-prinsip ilmiah dan machine learning untuk mencari solusi berbagai persoalan. Untuk mempermudah pemahaman tentang PINN, digunakan pula kerangka kerja DAI5.

    PINN mampu mengatasi berbagai kendala dalam penyelesaian masalah numerik, seperti kebutuhan komputasi tinggi dan keterbatasan data. Hal ini menjadikan PINN sebagai solusi potensial untuk problem numerik yang menghadapi tantangan semacam itu.

    Akurasi hasil PINN meningkat seiring dengan banyaknyaย trainingย yang diberikan pada model. Dengan memperbanyak pembelajaran terhadap data serta hukum fisika yang relevan, model dapat menghasilkan prediksi yang semakin presisi.

    Sekian penjelasan dari saya, semoga bermanfaat, jika ada kesalahan mohon maaf. Terimakasih

    Wassalamuโ€™alaikum Warahmatullahi Wabarakatuh


    Leave a Reply

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