Optimasi adalah proses mencari solusi optimal (minimum atau maksimum) dengan memperhatikan batasan yang ada. optimasi memaksimalkan atau meminimalkan beberapa fungsi relative terhadap beberapa set, sering mewakili berbagai pilihan yang tersedia dalam situasi tertentu. Fungsinya memungkinkan perbandingan pilihan yang berbeda untuk menentukan mana yang bias dijadikan pilihan yang terbaik.

Optimasi juga ada 2 yaitu optimasi terbatas, dan optimasi tanpa kendala

  1. Optimasi Terbatas Optimasi terbatas adalah masalah optimasi yang memiliki syarat atau memiliki batasan - batasan yang merupakan masalah pemodelan matematika dalam optimasi fungsi yang mensyaratkan beberapa kondisi atau syarat untuk diperoleh solusi optimal yaitu syarat yang mengoptimumkan fungsi tujuan.

Contoh :

seorang produsen sendal membuat 2 model sendal menggunakan 2 bahan yang berbeda. komposisi model pertama terdiri dari 200 gr bahan pertama dan 150gr bahan kedua. sedangkan komposisi model kedua terdiri dari 180 gr bahan pertama dan 170gr bahan kedua. persediaan di gudang bahan oertama 72kg dan bahan kedua 64kg. harga model pertama adalah Rp 500.000,00 dan model kedua Rp 400.000,00. berapa banyak sendal model pertama dan kedua harus diproduksi agar bisa mencapai keuntungan maksimal?

  1. Optimasi Tanpa Kendala ptimasi tanpa kendala adalah optimasi suatu fungsi tanpa adanya syarat-syarat tertentu yang membatasinya.

Contoh :

Tentukan ekstrim mutlak dari fungsi f(x)=x2−4x+5 pada selang [1,4]

Jadi di dalam optimasi ini metode algoritma yang sering digunakan ada 6 yaitu :

  1. Optimasi Satu Dimensi Optimasi satu dimensi di R, kita dapat menggunakan algoritma optimize().
f <- function(x) {sin(x) + sin(2 * x) + cos(3 * x)}
optimize(f, interval = c(0, 2 * pi))
## $minimum
## [1] 3.033129
## 
## $objective
## [1] -1.054505
  1. Optimasi Multidimensi Optimasi Multidimensi, kita dapat menggunakan algoritma optim().
f <- function(x) 2*(x[1]-1)^2+5*(x[2]-3)^2+10
optim(c(1,1),f)
## $par
## [1] 1.000168 3.000232
## 
## $value
## [1] 10
## 
## $counts
## function gradient 
##       75       NA 
## 
## $convergence
## [1] 0
## 
## $message
## NULL
  1. Model Optimasi Sederhana Model optimasi sederahana menggunakan metode addVariable

  2. Pemrograman Linier

library(lpSolve)
objective.in  <- c(25, 20)
const.mat     <- matrix(c(20, 12, 1/15, 1/15), nrow=2, byrow=TRUE)
const.rhs     <- c(1800, 8)
const.dir     <- c("<=", "<=")
optimum       <- lp(direction="max", objective.in, const.mat, const.dir, const.rhs)

# Optimal values of x1 and x2
optimum$solution
## [1] 45 75
#objective at minimum
optimum$objval
## [1] 2625
  1. Pemrograman Kuadrat
library(quadprog)
Dmat <- matrix(c(356.25808, 12.31581, 261.88302, 12.31581, 27.24840, 18.50515, 261.88302, 18.50515,535.45960), nrow=3, ncol=3)
dvec <- matrix(c(9.33, 3.33, 9.07), nrow=3, ncol=1)
A.Equality <- matrix(c(1,1,1), ncol=1)
Amat <- cbind(A.Equality, dvec, diag(3), -diag(3))
bvec <- c(1, 5.2, rep(0, 3), rep(-0.5, 3))
qp <- solve.QP(Dmat, dvec, Amat, bvec, meq=1)
qp$solution
## [1] 0.3808733 0.5000000 0.1191267

6.Pemrograman Nonlinier