Optimisasi cekung dengan kendala

Pengantar Optimasi di Python

Jasmin Ludolf

Content Developer

Optimisasi cekung dengan kendala

Fungsi cembung.

  • Kendala: batasan pada variabel
  • Kurva indiferen: mewakili kombinasi variabel
  • Temukan titik pada kurva indiferen yang meminimalkan atau memaksimalkan fungsi objektif
Pengantar Optimasi di Python

Kurva indiferen

Seorang perempuan muda berambut gelap bekerja di laptop

  • Software engineer lepas
  • Menghargai kerja ($w$) dan waktu luang ($l$)

 

Fungsi utilitas:

  • $U(w, l)=w^{0.4}l^{0.6}$
Pengantar Optimasi di Python

Memvisualisasi kurva indiferen

import numpy as np
import matplotlib.pyplot as plt


w = np.linspace(1, 30, 100) l = np.linspace(1, 30, 100)
W, L = np.meshgrid(w, l)
F = W**0.4 * L**0.6
plt.figure(figsize=(8, 6))
contours = plt.contour(W, L, F, levels=[5, 10, 15, 20])
plt.clabel(contours)
plt.title('Indifference Curves for the function: w**0.4 * l**0.6') plt.xlabel('w') plt.ylabel('l') plt.grid(True) plt.show()
Pengantar Optimasi di Python

Kurva indiferen

Memvisualisasikan kurva indiferen

  • Alexia tidak membedakan kombinasi spesifik $w$ dan $l$
Pengantar Optimasi di Python

Kendala waktu

  • 24 jam per hari
  • Kendala persamaan linear

$$ \max_{w,l} w^{0.4}l^{0.6}$$ $$s.t.\ \ \ w+l = 24$$

  • Tambahkan kendala ke grafik:
    • l = 24 - w
    • plt.plot(w, l, color='red')

Kurva indiferen dan kendala linear. Kurva indiferen pada tingkat optimal menyinggung kendala. Pada titik singgung, gradien tegak lurus terhadap kendala dan garis singgung.

Pengantar Optimasi di Python

Menyelesaikan dengan SciPy

def utility_function(vars):
    w, l = vars
    return -(w**0.4 * l**0.6)


def constraint(vars): return 24 - np.sum(vars)
initial_guess = [12, 12] constraint_definition = {'type': 'eq', 'fun': constraint} result = minimize(utility_function, initial_guess, constraints=constraint_definition) print(result.x)
[ 9.60001122 14.39998878]
Pengantar Optimasi di Python

Ayo berlatih!

Pengantar Optimasi di Python

Preparing Video For Download...