Nama : Muhamad Fran Dahlan Gibran
NIM : 230605110127
Dosen Pengampu : Prof. Dr. Suhartono, M.Kom
Universitas : Universitas Islam Negeri Maulana Malik Ibrahim Malang
Fakultas : Sains dan Teknologi
Program Studi : Teknik Informatika

Optimasi dalam konteks kalkulus adalah proses mencari nilai maksimum atau minimum dari suatu fungsi. Tujuan utamanya adalah menemukan nilai input yang membuat fungsi objektif mencapai ekstremum (maksimum atau minimum). Beberapa metode umum untuk optimasi melibatkan konsep-konsep dasar kalkulus, seperti turunan dan titik stasioner.

Metode Gradien Metode gradien adalah pendekatan umum untuk optimasi di mana kita menggunakan gradien (turunan parsial) dari fungsi objektif untuk mencari arah di mana nilai fungsi berubah paling cepat. Langkah-langkahnya termasuk mengambil turunan parsial fungsi objektif dan menggerakkan nilai variabel input ke arah yang berlawanan dengan gradien untuk mencapai minimum atau searah gradien untuk mencapai maksimum.

Metode Mosaic dalam R Paket’mosaic’di R menyediakan fungsi-fungsi bawaan untuk optimasi, seperti’maximize()’. Dengan paket ini, kita dapat mengoptimalkan fungsi objektif tanpa harus mengimplementasikan metode secara manual. Namun, dalam beberapa kasus, implementasi manual dengan kalkulus dasar atau metode gradien mungkin dibutuhkan tergantung pada kebutuhan dan kompleksitas fungsi objektif.

# Fungsi yang akan dioptimalkan
fungsi_objektif <- function(x) {
  return(-(x^2 - 4*x + 4))  # Misal, fungsi ini akan dioptimalkan
}

# Turunan fungsi objektif (gradien)
gradien <- function(x) {
  return(-2*x + 4)  # Turunan dari fungsi di atas
}

# Metode gradien untuk optimasi
gradient_descent <- function(fungsi_obj, gradien, x0, learning_rate, iterasi) {
  x <- x0
  for (i in 1:iterasi) {
    x <- x - learning_rate * gradien(x)
  }
  return(x)
}

# Inisialisasi nilai awal dan parameter metode gradien
x_awal <- 0
learning_rate <- 0.1
iterasi <- 100

# Melakukan optimasi
hasil_optimasi <- gradient_descent(fungsi_objektif, gradien, x_awal, learning_rate, iterasi)

# Menampilkan hasil optimasi
cat("Nilai optimal ditemukan pada x =", hasil_optimasi, "\n")
## Nilai optimal ditemukan pada x = -165635947
cat("Nilai maksimum fungsi objektif =", -fungsi_objektif(hasil_optimasi), "\n")
## Nilai maksimum fungsi objektif = 2.743527e+16