library(optimization)
## Loading required package: Rcpp
library(lpSolve)

Mengoptimalkan Kinerja dengan Metode Optimasi Numerik

Optimasi numerik adalah cabang ilmu matematika dan komputer yang berkaitan dengan penemuan nilai optimum atau solusi terbaik dalam sebuah masalah, ketika solusi tersebut tidak dapat ditemukan secara analitis. Metode ini sangat penting dalam berbagai bidang, seperti ilmu komputer, ilmu ekonomi, ilmu rekayasa, dan masih banyak lagi. Dalam artikel ini, akan dibahas konsep dasar optimasi numerik dan beberapa contoh penerapannya.

Konsep Dasar Optimasi Numerik

Optimasi numerik berusaha untuk menemukan nilai yang meminimalkan atau memaksimalkan suatu fungsi objektif, yang umumnya diwakili sebagai:

\[f(x) \rightarrow \min \text{ atau } \max\]

di mana \(f(x)\) adalah fungsi objektif dan \(x\) adalah vektor variabel. Dalam beberapa kasus, fungsi objektif ini dikenal sebagai fungsi tujuan (objective function) dan bisa memiliki beberapa batasan atau kendala (constraints) yang harus dipenuhi.

Jenis-Jenis Optimasi Numerik

Ada dua jenis utama optimasi numerik:

  1. Unconstrained Optimization (Optimasi Tanpa Kendala): Dalam jenis ini, akan dicari nilai minimum atau maksimum fungsi objektif tanpa ada kendala. Contoh penerapannya adalah dalam optimasi parameter model statistik atau dalam permasalahan regresi linear.

Misalkan dalam permasalahan regresi linear, akan dicari nilai minimum dari fungsi f(x) = \(x^2\)

# Fungsi objektif
objective_function <- function(x) {
  return(x^2)
}

# Inisialisasi parameter awal
initial_values <- c(2, -3, 5)

# Optimasi parameter untuk setiap inisialisasi(Di sini, akan menggunakan fungsi optimize() dalam R)
results <- lapply(initial_values, function(initial_x) {
  result <- optimize(objective_function, interval = c(-10, 10), maximum = FALSE)
  return(result$minimum)
})

# Hasil optimasi
for (i in 1:length(initial_values)) {
  cat("Inisialisasi Awal:", initial_values[i], " - Nilai Minimum:", results[[i]], "\n")
}
## Inisialisasi Awal: 2  - Nilai Minimum: 0 
## Inisialisasi Awal: -3  - Nilai Minimum: 0 
## Inisialisasi Awal: 5  - Nilai Minimum: 0
  1. Constrained Optimization (Optimasi Dengan Kendala): Dalam jenis ini, akan dicari nilai minimum atau maksimum fungsi objektif dengan mempertimbangkan kendala-kendala yang harus dipenuhi. Contoh penerapannya adalah dalam perencanaan produksi, di mana produsen harus memaksimalkan profit sambil mematuhi batasan sumber daya.

Misalkan sebuah pabrik ingin memaksimalkan profit dari penjualan dua jenis produk (produk A dan produk B) dengan batasan waktu dan bahan baku yang terbatas.

Informasi dan batasan:

  • Profit per unit produk A adalah $10.
  • Profit per unit produk B adalah $15.
  • Produk A memerlukan waktu 2 jam untuk diproduksi, sementara produk B memerlukan waktu 3 jam.
  • Batasan waktu produksi adalah 50 jam.
  • Bahan baku yang tersedia adalah 80 unit.

Akan ditentukan jumlah produk A dan produk B yang harus diproduksi untuk memaksimalkan profit sambil memperhatikan kendala waktu dan bahan baku.

Berikut adalah penyelesaian masalah ini menggunakan optimasi linear:

# Koefisien profit per unit untuk masing-masing produk
profit_coef <- c(10, 15)

# Koefisien penggunaan waktu per unit untuk masing-masing produk
waktu_coef <- c(2, 3)

# Batasan waktu produksi
batasan_waktu <- 50

# Batasan bahan baku
batasan_bahan_baku <- 80

# Membuat model LP
lp <- lp(direction = "max",
         objective.in = profit_coef,
         const.mat = waktu_coef,
         const.dir = "<=",
         const.rhs = c(batasan_waktu, batasan_bahan_baku))

# Menyelesaikan model LP
solve(lp)

# Menampilkan hasil
cat("Jumlah Produk A yang diproduksi:", lp$solution[1], "\n")
cat("Jumlah Produk B yang diproduksi:", lp$solution[2], "\n")
cat("Profit maksimum: $", lp$objval, "\n")
Dalam contoh ini, pabrik mencari/menentukan jumlah produk A dan produk B yang harus diproduksi untuk memaksimalkan profit. Akan dihitung alokasi produksi yang akan menghasilkan profit maksimum dengan memperhatikan kendala waktu dan bahan baku yang tersedia. Hasilnya akan menunjukkan jumlah produk dari masing-masing jenis yang harus diproduksi dan profit maksimum yang dapat dicapai.

Metode Optimasi Numerik

Ada banyak metode optimasi numerik yang digunakan untuk menyelesaikan permasalahan optimasi. Beberapa di antaranya adalah:

  1. Metode Gradien: Metode ini memanfaatkan gradien atau turunan dari fungsi objektif untuk mencari titik minimum atau maksimum. Contoh penerapannya adalah Algoritma Gradient Descent dalam machine learning.

  2. Metode Newton-Raphson: Metode ini menggabungkan informasi gradien dan turunan kedua (Hessian) untuk mendekati akar atau titik optimum.

  3. Metode Evolutionary Algorithms: Metode ini terinspirasi dari evolusi biologis dan menciptakan populasi solusi yang berkembang seiring waktu.

  4. Metode Swarm Intelligence: Metode ini mengambil inspirasi dari perilaku kelompok hewan sosial, seperti lebah atau semut, untuk menemukan solusi optimum.

Referensi:
Kaplan, Daniel. 2022. MOSAIC Calculus. GitHub Pages. https://dtkaplan.github.io/MC2/