Nama/Nim : Axel Dzakhwan AL Yushen/230605110124
Dosen Pengampu : Prof. Dr. Suhartono, M.Kom
Universitas : Universitas Islam Negeri Maulana Malik Ibrahim Malang
Fakultas : Sains dan Teknologi
Program Studi : Teknik Informatika

Graphical optimization adalah suatu pendekatan dalam pemecahan masalah optimasi yang menggunakan visualisasi grafis untuk menemukan solusi optimal. Metode ini sangat berguna untuk memahami dan memecahkan masalah optimasi dengan cara yang intuitif, terutama ketika jumlah variabel dan kendala relatif sedikit. Berikut adalah contoh kode R untuk melakukan graphical optimization menggunakan paket ggplot2 di RStudio. Dalam contoh ini, kita akan mempertimbangkan fungsi objektif sederhana dan dua variabel keputusan. Grafik akan menunjukkan wilayah feasible (berbatasan dengan kendala) dan garis kontur fungsi objektif.

# Install dan load paket ggplot2
if (!require(ggplot2)) {
  install.packages("ggplot2")
}
## Loading required package: ggplot2
library(ggplot2)

# Fungsi objektif dan kendala
objektif <- function(x, y) {
  return(2 * x + 3 * y)  # Misalnya, fungsi objektif 2x + 3y
}

kendala1 <- function(x) {
  return(2 * x - 4)  # Misalnya, kendala 1: 2x <= 4
}

kendala2 <- function(y) {
  return(y - 1)      # Misalnya, kendala 2: y >= 1
}

# Membuat grid titik-titik untuk visualisasi
x_values <- seq(0, 5, length.out = 100)
y_values <- seq(0, 5, length.out = 100)
grid <- expand.grid(x = x_values, y = y_values)

# Menambahkan kolom untuk nilai fungsi objektif dan kendala
grid$z <- objektif(grid$x, grid$y)
grid$k1 <- kendala1(grid$x)
grid$k2 <- kendala2(grid$y)

# Membuat plot
plot <- ggplot(grid, aes(x = x, y = y)) +
  geom_contour(aes(z = z), color = "blue") +
  geom_hline(yintercept = 1, linetype = "dashed", color = "red") +
  geom_ribbon(aes(ymin = 0, ymax = Inf), fill = "gray", alpha = 0.3, data = subset(grid, k1 >= 0)) +
  geom_ribbon(aes(ymax = 5, ymin = Inf), fill = "gray", alpha = 0.3, data = subset(grid, k2 <= 0)) +
  theme_minimal() +
  labs(title = "Graphical Optimization", x = "X-axis", y = "Y-axis") +
  theme(legend.position = "none")

# Menampilkan plot
print(plot)


  1. Fungsi objektif (objektif) dan kendala (kendala1 dan kendala2) didefinisikan.

  2. Grid titik-titik dihasilkan untuk nilai x dan y.

  3. Nilai fungsi objektif dan kendala dihitung untuk setiap titik grid.

  4. Plot dibuat dengan menggunakan ggplot2 dengan kontur fungsi objektif, garis kendala, dan wilayah feasible yang diwarnai.


Grafik ini membantu melihat bagaimana fungsi objektif berperilaku di dalam wilayah feasible dan di mana solusi optimal mungkin berada. Anda dapat mengganti fungsi objektif dan kendala sesuai dengan kebutuhan spesifik masalah optimasi yang sedang Anda hadapi.