🎯 optim - Optimizasyon Algoritmaları
Root Finding, Gradient Descent, BFGS, Nelder-Mead
68
Fonksiyon
897
Satır
26.6 KB
Boyut
🚀 Hızlı Başlangıç
içe_aktar optim
// f(x) = x² - 4 = 0 denkleminin kökünü bul
fonksiyon f(x: ondalık): ondalık yap
dön x * x - 4.0
son
// Bisection metodu
değişken kök = optim_bisection(f, 0.0, 3.0, 0.001, 100)
yazdır("Kök: " + kök) // ≈ 2.0
// Newton-Raphson (türev gerekli)
fonksiyon df(x: ondalık): ondalık yap
dön 2.0 * x
son
değişken kök2 = optim_newton_raphson(f, df, 1.0, 0.001, 100)
Tek Değişkenli Minimum
// f(x) = x² - 4x + 4 fonksiyonunun minimumunu bul
fonksiyon parabola(x: ondalık): ondalık yap
dön x * x - 4.0 * x + 4.0
son
// Golden section search
değişken min = optim_golden_section(parabola, 0.0, 5.0, 0.001)
yazdır("Minimum: x = " + min) // ≈ 2.0
Gradient Descent
kullan optim
kullan linalg
// f(x,y) = x² + y² fonksiyonunun minimumunu bul
fonksiyon gradyan(pos: [ondalık], n: tam_sayı): [ondalık] yap
dön [2.0 * pos[0], 2.0 * pos[1]]
son
değişken başlangıç = [5.0, 3.0]
değişken minimum = optim_gradient_descent(gradyan, başlangıç, 2, 0.1, 100, 0.001)
yazdır("Minimum: (" + minimum[0] + ", " + minimum[1] + ")") // ≈ (0, 0)
📚 API Kategorileri
1. Kök Bulma (Root Finding)
optim_bisection- İkiye bölme metoduoptim_newton_raphson- Newton-Raphson metoduoptim_secant- Secant metoduoptim_fixed_point- Sabit nokta iterasyonu
2. Line Search (Tek Değişkenli)
optim_golden_section- Altın oran aramasıoptim_brent- Brent metoduoptim_armijo_line_search- Armijo koşulu
3. Gradient-Based Optimization
optim_gradient_descent- Temel gradyan inişioptim_gradient_descent_momentum- Momentum ile GDoptim_adam- Adam optimizeroptim_bfgs_simple- BFGS quasi-Newton
4. Gradient-Free Optimization
optim_nelder_mead_2d- Nelder-Mead simplexoptim_coordinate_descent- Koordinat inişi
5. Constrained Optimization
optim_penalty_method- Penalty metoduoptim_augmented_lagrangian- Augmented Lagrangianoptim_gradient_projection- Gradient projection
6. Least Squares
optim_least_squares- Doğrusal en küçük kareleroptim_gauss_newton- Gauss-Newton metoduoptim_levenberg_marquardt- LM algoritması
7. Metaheuristics
optim_simulated_annealing- Benzetilmiş tavlamaoptim_genetic_algorithm_1d- Genetik algoritma
8. Utilities
optim_numerical_gradient- Sayısal gradyanoptim_numerical_hessian- Sayısal Hessian
🔬 Detaylı Örnekler
Örnek 1: Makine Öğrenmesi - Logistic Regression
kullan optim
// Logistic loss için gradient
fonksiyon logistic_gradient(w: [ondalık], X: [ondalık], y: [ondalık], n: tam_sayı): [ondalık] yap
// Gradient hesaplama
// ∇L = X^T (σ(Xw) - y)
// Basitleştirilmiş implementasyon
dön grad
son
// Adam optimizer ile optimize et
değişken w_init = [0.0, 0.0]
değişken w_opt = optim_adam(logistic_gradient, w_init, 2, 0.01, 0.9, 0.999, 1e-8, 1000)
Örnek 2: Mühendislik - Yapısal Optimizasyon
// Kiriş optimizasyonu: minimum ağırlık, maksimum dayanım
fonksiyon beam_cost(dimensions: [ondalık], n: tam_sayı): ondalık yap
değişken width = dimensions[0]
değişken height = dimensions[1]
// Maliyet = malzeme × alan
değişken cost = width * height
// Kısıt: moment of inertia > I_min
değişken I = (width * height * height * height) / 12.0
değişken penalty = 0.0
eğer (I < 1000.0) ise yap
penalty = 1000.0 * (1000.0 - I)
son
dön cost + penalty
son
değişken initial = [10.0, 20.0]
değişken optimal = optim_simulated_annealing(beam_cost, initial, 2, 100.0, 0.95, 1000, 42)
Örnek 3: Eğri Uydurma (Curve Fitting)
// y = a*exp(-b*x) + c modeline fit et
fonksiyon exponential_model(params: [ondalık], x: ondalık): ondalık yap
değişken a = params[0]
değişken b = params[1]
değişken c = params[2]
dön a * math_exp(-b * x) + c
son
fonksiyon residual(params: [ondalık], X: [ondalık], y: [ondalık], n: tam_sayı): [ondalık] yap
değişken r = yeni_dizi(n)
değişken i = 0
iken (i < n) yap
r[i] = y[i] - exponential_model(params, X[i])
i = i + 1
son
dön r
son
// Levenberg-Marquardt ile optimize et
değişken initial_guess = [1.0, 0.1, 0.0]
değişken fitted = optim_levenberg_marquardt(residual, jacobian, initial_guess, 3, n_data, 0.01, 100)
⚡ Algoritmalar ve Kompleksiteler
| Algoritma | Kompleksite | Gradyan Gerekli | Kullanım |
|---|---|---|---|
| Bisection | O(log(1/ε)) | Hayır | Kök bulma |
| Newton-Raphson | O(n) | Evet (1. ve 2. türev) | Hızlı yakınsama |
| Golden Section | O(log(1/ε)) | Hayır | 1D minimum |
| Gradient Descent | O(nk) | Evet | Genel optimizasyon |
| BFGS | O(n²k) | Evet | Quasi-Newton |
| Nelder-Mead | O(n²k) | Hayır | Derivative-free |
| Simulated Annealing | O(T) | Hayır | Global optimum |
Notlar:
- n: Boyut
- k: İterasyon sayısı
- ε: Tolerans
- T: Sıcaklık programı
🎓 Optimizasyon Stratejileri
Problem Türüne Göre Algoritma Seçimi
-
Smooth, Convex Problem:
- Gradyan var mı? → BFGS veya Gradient Descent
- Hessian var mı? → Newton metodu
-
Non-smooth, Non-convex:
- Simulated Annealing
- Genetic Algorithm
-
Kısıtlı Problem:
- Penalty Method
- Augmented Lagrangian
-
Büyük Ölçekli Problem:
- Stochastic Gradient Descent
- Coordinate Descent
-
Least Squares:
- Gauss-Newton
- Levenberg-Marquardt
🔗 İlgili Modüller
📖 Daha Fazla Bilgi
İleri okuma: Makine Öğrenmesi örnekleri