fadamsyah / icodes-intern-ms19

Repositori internship Mesin 19 di ICoDes
MIT License
0 stars 0 forks source link

1. General Description

Repositori internship Mesin 19 di ICoDes (Remote).

Advisor: Prof. Yul Yunazwin Nazaruddin

Mentor: Fadillah Adamsyah Ma'ani

Member: No. NIM Nama
1. 13119001 Muhammad Harza
2. 13119005 Fachriza Afif Ma'ani
3. 13119032 Muhammad Axel Dhiya
4. 13119043 Muhammad Akif Miftahun Najakhi
5. 13119049 Georgius Harry Setiawan Soetandyo

2. Table of Contents

3. Tutorial

3.1. Python

Sources:

  1. learnpython.org:

  2. DataCamp - Python Fundamentals

  3. Jupyter Notebook

    • The Basics of Jupyter Notebooks
    • Adding Descriptive Text to Your Notebook
  4. cs231 - python-numpy-tutorial

    • Numpy
    • Matplotlib

3.2. Installation

3.2.1. Miniconda

Why: Instalasi package Python pada conda relatif lebih mudah dibandingkan dengan pip.

Download

# Membuat environment pada conda. Disarankan menggunakan environment.
# Apabila ada error, tinggal delete environment nya, ga perlu reinstall conda.
# (-n myenv) --> Nama environment
# (python=3.9) --> Versi Python (3.9.x)
conda create -n myenv python=3.9

# Activate an environment
# (myenv) --> Nama environment
conda activate myenv

# Install package
conda install numpy # Install package numpy
conda install -c intel numpy # Install package numpy pada channel intel
                             # Pakai yang ini kalau CPU kalian Intel.
conda install jupyter # Untuk keperluan jupyter notebook & jupyter lab
conda install -c conda-forge pandas matplotlib # Bisa juga tanpa -c conda-forge

# Btw, di conda juga ada pip, jadi kalian juga bisa pakai
# pip install <package>
# Diutamakan pakai [conda install]. Conda otomatis install dependencies dari suatu package.

# Untuk belajar dan riset, kita bakal sering pakai jupyter notebook atau jupyter lab
jupyter notebook # Buka jupyter notebook

3.2.2. Visual Studio Code

Visual Studio Code adalah suatu code edittor yang di dalamnya terdapat tools yang mempermudah pengguna saat menulis kode, seperti autocompletion, auto indentation, code formatting, dan terminal. Visual studio code ini enak banget buat ngetik dan ngedit kode. Setelah selesai uji coba di Jupyter Notebook, biasanya kode akan dibuat kaya semacam library supaya bisa digunakan di pekerjaan selanjutnya. Oleh karena itu, kita bakal bikin kode tersebut di script (.py).

Download

3.3. Machine Learning

3.3.1. Basic Theory & Practice

Sources:

  1. DataCamp - Machine Learning Fundamentals with Python:
  2. Coursera - Deep Learning Specialization:

3.4. Git

4. Task

4.1. Homework #1

Buat simulasi state-space atau transfer-function dengan menggunakan, Python, dan numpy, lalu plot hasilnya menggunakan library matplotlib. Soalnya adalah sebagai berikut (reference):

Notes:

  1. Pake metode Euler
  2. Initial condition bebas (jangan zero-initial-condition)
  3. Input-nya adalah fungsi step, gain-nya bebas
  4. Sampling rate, $\Delta t=0.01 \, s$
  5. $t{initial}$ dan $t{final}$ bebas
  6. Format plot bebas

Yang bebas tolong diseragamin ya. Kode perlu disesuaikan dengan format:

def dynamics(t, x, u):
   '''
   DESC:
      Function untuk ngituing dynamics (x_dot)
   INPUT:
      t : numpy array (1,) atau float, waktu
      x : numpy array (3,), state
      u : numpy array (1,) atau float, input
   OUTPUT:
      x_dot : numpy array (3,), x_dot pada waktu t
   '''

   x_dot = ...

   return x_dot

class Euler():
   def __init__(self, dynamics):
      '''
      DESC:
         Class untuk simulasi dengan metode Euler
      INPUT:
         dynamics : Python function untuk ngitung x_dot
      '''

      self.dynamics = dynamics

   def simulate(self, t, x0, u):
      '''
      DESC:
         Method untuk simulasi
      INPUT:
         t : numpy array (N,), waktu simulasi
         x0 : numpy array (3,), initial state
         u: numpy array (N,), input
      OUTPUT:
         t : numpy array (N,), waktu simulasi
         x : numpy array (N, 3), state
         y : numpy array (N,), output
      '''

      return t, x, y

# Cara pakenya
sim = Euler(dynamics)
t, x, y = sim.simulate(t, x0, u)