Ana içeriğe geç

Python’da Optimizasyon: Teknikler, Paketler ve En İyi Uygulamalar

Bu makale, farklı teknikleri vurgulayarak sayısal optimizasyonu öğretir. SciPy, CVXPY ve Pyomo gibi Python paketlerini tartışır ve kod örneklerini çalıştırmak için pratik bir DataLab defteri sunar.
· 11 dk. oku

Yapay Zeka ile Keşfedin

Optimizasyon, makine öğrenmesindeki başlıca tekniklerden biridir. Öğrendiğim ilk konulardan biriydi ama kısa sürede kullanım alanının ML’in çok ötesine uzandığını fark ettim. 

Sayısal optimizasyon, çok çeşitli alanlarda karmaşık problemlerin çözümünde kritik bir rol oynar. Onsuz, veri bilimciler, ekonomistler ve mühendisler verimsiz, pahalı araçlar üretmek ve optimal olmayan kararlar almak zorunda kalırlardı.  

Bu nedenle bu yazıda Python’da optimizasyonu ele alıyor; en yaygın paketleri, teknikleri ve en iyi uygulamaları inceliyoruz. 

Kemerlerinizi bağlayın, yolculuğa hazır olun ve bu DataLab Çalışma Defteri ile birlikte ilerleyin.

Sayısal Optimizasyon Nedir?

Dünyadaki birçok problem için en iyi çözümü doğrudan belirlemek zordur.  Bu problemleri çözmek yinelemeli bir yaklaşım gerektirir; işte tam burada sayısal optimizasyon devreye girer. 

Sayısal optimizasyon, cebirsel işlemlerle türetilen analitik çözümler yerine, bir fonksiyonun en küçük veya en büyük değerini yinelemeli hesaplama yöntemleriyle bulma sürecidir. 

Kapalı formda tam çözümler sunabilen analitik yöntemlerin aksine, sayısal optimizasyon, birkaç yineleme boyunca tahminleri kademeli olarak iyileştirerek optimal çözüme yaklaşan algoritmalara dayanır. 

Bu yaklaşım özellikle aşağıdaki özelliklere sahip fonksiyonlarla uğraşırken kullanışlıdır: 

  • Karmaşık
  • Doğrusal olmayan 
  • Yüksek boyutlu 

Bu gibi durumlarda tam analitik çözüm elde etmek ya imkânsızdır ya da pratik değildir; bu yüzden yinelemeli yaklaşım tercih edilir.

Yaygın Optimizasyon Problemleri

Sayısal optimizasyonda problemler genellikle amaç fonksiyonunun doğasına ve kısıtların varlığına veya yokluğuna göre sınıflandırılır.

Dolayısıyla en yaygın problemler şu şekilde kategorize edilebilir: 

Kısıtsız optimizasyon

Bu, optimizasyonun en basit biçimidir. Değişkenlere herhangi bir sınırlama getirmeden bir amaç fonksiyonunun en küçük veya en büyük değerini bulmayı içerir. 

Amaç, yalnızca fonksiyonun matematiksel yapısına dayanarak fonksiyonun optimal değerine (minimum veya maksimum) ulaştığı noktayı belirlemektir. 

Gradyan inişi veya Newton yöntemi gibi teknikler, kısıtsız problemleri çözmek için yaygın olarak kullanılır (bunlara birazdan değineceğiz). Odak noktası, fonksiyonun türevlerini değerlendirerek çözümü yinelemeli olarak iyileştirmektir.

Örneğin, bir veya daha fazla x değişkenine bağlı olan bir maliyet fonksiyonunu f(x) minimize etmek ve x’in alabileceği değerlere bir sınırlama getirmemek tipik bir kısıtsız problemdir.

Kısıtlı optimizasyon

Öte yandan kısıtlı optimizasyon problemleri, değişkenler üzerinde bir veya daha fazla kısıt söz konusuyken amaç fonksiyonunun optimal değerini bulmayı içerir. Bu kısıtlar eşitlik ya da eşitsizlik biçiminde olabilir. 

Kısıtlı optimizasyondaki zorluk, fonksiyonu optimize ederken çözümün verilen kısıtları da sağlamasını temin etmektir.

Örneğin bir mühendislik tasarımında tipik bir kısıtlı optimizasyon problemi, belirli fiziksel sınırlamalara (dayanım veya ağırlık gibi) uyarak malzeme maliyetlerini (amaç fonksiyonu) minimize etmeyi içerebilir. 

Lagrange çarpanları, ceza fonksiyonları ve bariyer yöntemleri gibi yöntemler bu kısıtları optimizasyon sürecine dahil etmek için sıklıkla kullanılır.

Doğrusal vs. doğrusal olmayan optimizasyon

Doğrusal optimizasyonda hem amaç fonksiyonu hem de kısıtlar—tahmin ettiğiniz gibi—doğrusaldır.  Bu, değişkenler arasındaki ilişkilerin doğrusal denklem veya eşitsizliklerle ifade edildiği anlamına gelir. 

Doğrusal optimizasyon problemlerinin çözüm uzayı daha basit ve düzenli olma eğilimindedir; sıklıkla Simplex veya iç nokta gibi yöntemlerle verimli çözümler elde edilir.

Doğrusal optimizasyona klasik bir örnek, kârı (doğrusal bir fonksiyon) en üst düzeye çıkarmayı hedefleyen ve kaynak kısıtlarına (doğrusal eşitsizlikler) tabi olan doğrusal programlama problemidir.

Buna karşılık, doğrusal olmayan optimizasyon, doğrusal olmayan bir amaç fonksiyonu veya kısıtlar içerir ve problemi önemli ölçüde daha karmaşık hale getirir. 

Değişkenler arasındaki ilişkilerin düz olmadığının gözlendiği gerçek dünya uygulamalarında doğrusal olmayan optimizasyon problemleriyle sıkça karşılaşırız. Bu problemler birden fazla yerel optimuma sahip olabilir ve doğrusal problemlere kıyasla çözülmeleri daha zordur. 

Gradyan tabanlı yöntemler, Newton yöntemi ve evrimsel algoritmalar gibi teknikler doğrusal olmayan optimizasyonu ele almak için yaygın olarak kullanılır.

Doğrusal olmayan optimizasyona bir örnek, karmaşık fiziksel bağımlılıkları olan bir enerji fonksiyonunu minimize etmektir; örneğin, bir uçak kanadının aerodinamik verimlilik için şeklinin optimize edilmesi, tasarım değişkenleri ile performans metrikleri arasındaki doğrusal olmayan ilişkileri içerir.

Python’da Optimizasyon Teknikleri

Python, optimizasyon problemlerini çözmek için güçlü tekniklerin geniş bir yelpazesini sunar. Bu, basit gradyan tabanlı yöntemlerden daha karmaşık algoritmalara kadar uzanır. Bu teknikler, ister makine öğrenmesinde ister mühendislikte ister yöneylem araştırmasında olsun, fonksiyonların minimumlarını veya maksimumlarını verimli bir şekilde bulmanızı sağlar. 

Bu bölümde Python’da yaygın olarak uygulanan optimizasyon tekniklerini ele alacağız: gradyan inişi, Newton yöntemi, eşlenik gradyan yöntemi, yarı-Newton yöntemleri, Simplex yöntemi ve güven bölgesi yöntemleri. 

Not: Bu bölümdeki görselleştirmeleri üretmek için kullanılan tüm kodları görmek için şu DataLab’i inceleyin. 

Haydi başlayalım!

Gradyan inişi

Gradyan inişi, sayısal optimizasyondaki en temel tekniklerden biridir. Bir fonksiyonun minimumunu, fonksiyonun gradyanının (veya eğiminin) negatifini izleyerek bulan yinelemeli bir yöntemdir. 

Temel fikir, bir başlangıç tahminiyle başlamak ve yakınsamaya ulaşılana kadar en dik iniş yönüne doğru hareket ederek bu tahmini yinelemeli olarak güncellemektir. Amaç kayıp fonksiyonunu minimize etmek olduğundan, makine öğrenmesi modellerini eğitirken en yaygın kullanılan optimizasyon tekniklerinden biridir. 

Gradyan inişi eğrisi görseli   

Newton yöntemi

Newton yöntemi, minimumu bulmak için amaç fonksiyonunun hem gradyanını hem de ikinci türevini (Hessian matrisi) kullanan bir optimizasyon tekniğidir. Sadece birinci türevlere dayanan gradyan inişinin aksine, Newton yöntemi eğrilik bilgisinden yararlanır; özellikle dışbükey fonksiyonlar için daha hızlı yakınsama sağlar.

Newton yöntemi hızla yakınsasa da Hessian matrisinin hesaplanmasını gerektirir; bu da büyük ölçekli problemler için hesaplama açısından maliyetli ve pratik olmayabilir. Ancak küçük, düzgün ve dışbükey problemler için son derece etkilidir.

Newton yönteminin eğri grafiği görseli

Eşlenik gradyan yöntemi

Eşlenik gradyan yöntemi, özellikle Hessian matrisini saklamanın pratik olmadığı büyük ölçekli problemler için verimli bir optimizasyon tekniğidir. Tüm Hessian’a ihtiyaç duymak yerine eşlenik yönler inşa eder ve bu yönler boyunca optimize eder; bu da büyük kuadratik fonksiyonların minimize edilmesi gibi problemler için uygundur.

Bu yöntem, sonlu eleman analizinde veya matris hesaplamalarının külfetli hâle geldiği büyük ölçekli makine öğrenmesi uygulamalarında faydalıdır.

Eşlenik gradyan yöntemi grafiği görseli

Yarı-Newton yöntemleri (BFGS)

Broyden–Fletcher–Goldfarb–Shanno (BFGS) algoritması gibi yarı-Newton yöntemleri, Hessian matrisini doğrudan hesaplamak yerine yaklaşıklar. Bu yöntemler, tam Hessian’ın hesaplanmasının getirdiği hesaplama yükü olmadan ikinci mertebe bilgiden yararlanarak, gradyan inişine kıyasla daha hızlı yakınsama sağlar.

BFGS yöntemi grafiği görseli

Simplex yöntemi

Simplex yöntemi, amaç fonksiyonu ve kısıtların doğrusal olduğu doğrusal programlama (LP) problemlerini çözmek için yaygın olarak kullanılan bir algoritmadır. Uygun bölgenin (bir çokyüzlü) köşelerini sistematik olarak inceler ve amaç fonksiyonunun maksimum veya minimum değerine ulaştığı optimal köşeye doğru ilerler.

Doğrusal fonksiyon üzerinde simplex yöntemi görseli

Güven bölgesi yöntemleri

Güven bölgesi yöntemleri, mevcut çözümün çevresinde bir “güven bölgesi” içinde amaç fonksiyonunun yerel bir modelini oluşturan optimizasyon algoritmalarıdır. 

(Gradyan inişinde olduğu gibi) önceden belirlenmiş bir yönde adım atmak yerine algoritma, güven bölgesi içinde daha basit bir alt problem tanımlar. Çözümü iyileştirmek için bu alt problemi yinelemeli olarak çözer. Bu yöntemler, karmaşık ve doğrusal olmayan problemlerin ele alınmasında özellikle etkilidir ve geleneksel gradyan tabanlı yöntemlere kıyasla daha iyi kararlılık sunar.

Rosenbrock fonksiyonu minimize edilirken güven bölgeleri ve yarıçaplar görseli

Rosenbrock’un fonksiyonunu minimize ederken güven bölgeleri ve yarıçaplar | Kaynak: Shivangi Khare, Trust Region Methods

Optimizasyon için Yaygın Python Paketleri

Sayısal optimizasyonu kolaylaştırmak için tasarlanmış çeşitli kütüphane ve paketler vardır. Her birinin güçlü yönleri ve kullanım alanları bulunur; ancak hangi optimizasyon problemiyle karşılaşırsanız karşılaşın, Python’da onu ele almanıza yardımcı olacak sağlam bir araç genellikle mevcuttur. 

İşte en yaygın dört optimizasyon paketi:  

SciPy optimization (scipy.optimize)

scipy.optimize modülü, hem kısıtsız hem de kısıtlı optimizasyon problemleri için geniş bir algoritma yelpazesi sunan, SciPy ekosistemindeki çok yönlü bir kütüphanedir. Skaler ve çok değişkenli fonksiyonların minimumlarını bulma, kök bulma problemlerini çözme ve verilere eğri uydurma işlevlerini içerir.

Bu modüldeki işlevlerden bazıları: 

  • minimize(): Bir veya daha fazla değişkenin skaler bir fonksiyonunu minimize etmek için kullanılan bir fonksiyon.
from scipy.optimize import minimize

def objective_function(x):
    return x[0]**2 + x[1]**2
result = minimize(objective_function, [1, 1], method='BFGS')
print(result.x)  # Optimal solution

# >>> [-1.07505143e-08 -1.07505143e-08]
  • root(): Vektör bir fonksiyonun kökünü bulur – doğrusal olmayan denklem sistemlerini çözmek için son derece kullanışlıdır.
from scipy.optimize import root

def equations(vars):
    x, y = vars
    return [x + 2*y - 3, x - y - 1]
result = root(equations, [0, 0])
print(result.x)

# >>> [1.66666667 0.66666667]
  • curve_fit(): Bu fonksiyon, bir veri nokta kümesine eğri uydurur ve veri uydurma ile parametre kestirimi için kullanışlıdır.
from scipy.optimize import curve_fit
import numpy as np

def model(x, a, b):
    return a * np.exp(b * x)
x_data = np.array([1, 2, 3])
y_data = np.array([2.7, 7.4, 20.1])
params, covariance = curve_fit(model, x_data, y_data)
print(params)  # Fitted parameters

# >>> [0.9981286  1.00089935]

CVXPY

CVXPY, dışbükey optimizasyon problemleri için tasarlanmış bir Python kütüphanesidir. Kullanıcıların bu problemleri üst düzey, bildirime dayalı bir sözdizimiyle tanımlayıp çözmelerini sağlar. Amaç fonksiyonu ve kısıtların doğal ve okunabilir bir biçimde belirtilmesine imkân tanıyarak karmaşık optimizasyon problemlerinin formülasyonunu basitleştirir.

CVXPY aşağıdaki özellikleri sunar:

  • Bildirimsel sözdizimi: CVXPY, Python’un matematiksel ifadelerini kullanarak optimizasyon problemlerini sezgisel biçimde modellemeyi sağlar.
  • En güncel çözücüler: ECOS, SCS ve OSQP gibi gelişmiş çözücülerle arayüz kurar ve dışbükey problemleri etkin biçimde ele alır.
import cvxpy as cp

# Define variables
x = cp.Variable()
y = cp.Variable()

# Define constraints
constraints = [x + y == 1, x - y >= 2]

# Define the objective function
objective = cp.Minimize(x**2 + y**2)

# Formulate the problem
prob = cp.Problem(objective, constraints)

# Solve the problem
result = prob.solve()
print(f"Optimal value: {result}")
print(f"x: {x.value}, y: {y.value}")

# >>> Optimal value: 2.5
# x: 1.5, y: -0.5000000000000001

Pyomo

Pyomo, doğrusal, doğrusal olmayan ve tamsayılı karışık programlamayı destekleyen esnek ve kapsamlı bir optimizasyon modelleme paketidir. GLPK, CBC ve CPLEX gibi çözücülerle sorunsuzca entegre olacak şekilde tasarlanmıştır.

Pyomo’nun özellikleri şunları içerir:

  • Modelleme esnekliği: Pyomo, karmaşık kısıtlar ve amaçlar dâhil olmak üzere yüksek düzeyde esneklikle optimizasyon problemlerinin tanımlanmasına imkân verir.
  • Çözücü entegrasyonu: Geniş bir çözücü yelpazesini destekler ve belirli bir problem için en uygun aracı seçme esnekliği sunar.

Gurobi ve CPLEX (Pyomo üzerinden veya doğrudan API ile)

Gurobi ve CPLEX, büyük ölçekli optimizasyon problemleri için yüksek performanslı çözücülerdir. Tedarik zinciri optimizasyonu, portföy yönetimi ve lojistik gibi görevlerde endüstride yaygın olarak kullanılırlar. 

Karmaşık ve büyük ölçekli problemleri verimli biçimde ele almak üzere tasarlanmış gelişmiş algoritmalar sunarlar.

  • Gurobi: Pyomo üzerinden veya kendi doğrudan API’siyle erişilebilir; doğrusal, tamsayılı ve kuadratik programlama problemlerini çözmedeki hızı ve güvenilirliğiyle bilinir.
  • CPLEX: Benzer şekilde güçlü optimizasyon yetenekleri sağlar ve çeşitli sektörlerde karmaşık operasyonel ve stratejik problemleri çözmek için kullanılır. Pyomo aracılığıyla veya doğrudan kendi API’siyle erişilebilir.

Bu çözücüler, hesaplama verimliliği ve sağlamlığın kritik önemde olduğu endüstri ölçekli problemler için sıklıkla tercih edilir.

Python’da Sayısal Optimizasyonun Gerçek Dünya Uygulamaları

Girişte bahsettiğim gibi, sayısal optimizasyon çeşitli alanlarda hayati bir rol oynar. Karmaşık problemleri çözmek ve veriye dayalı kararlar almak için gerekli teknikleri sağlar.

Örneğin:  

  • Makine öğrenmesi: Modeller özünde sayısal optimizasyonla eğitilir. Bu, kayıp fonksiyonunu minimize eden optimal parametreleri bulmayı ve modelin hedef değişkeni ne kadar iyi tahmin ettiğini ölçmeyi içerir. 
  • Yöneylem araştırması: Optimizasyon teknikleri, çeşitli operasyonel metrikleri en üst düzeye çıkarmak veya en aza indirmek için stratejik kararların alınmasına yardımcı olur. Kısıtlara tabi amaç fonksiyonlarını optimize ederek tedarik zinciri yönetimi, iş gücü çizelgeleme ve üretim planlama gibi süreçlerde verimlilik artırılabilir. 
  • Finans: Portföy optimizasyonu gibi görevler için kritik önemdedir. Getiriyi maksimize etmek veya riski minimize etmek üzere en iyi varlık dağılımını belirlemeye yardımcı olur.
  • Mühendislik tasarımı: Belirli performans kriterlerini karşılarken maliyetleri minimize eden sistem ve yapıların tasarlanmasında kullanılır. Bu süreç, köprülerden uçaklara; üretim süreçlerinden enerji sistemlerine kadar verimli tasarımlar elde etmeyi sağlar.

Python’da Sayısal Optimizasyon için En İyi Uygulamalar

Python’da optimizasyondan en iyi sonuçları almak için birkaç faktörün dikkate alınması gerekir. Aşağıdaki en iyi uygulamaları izlediğinizden emin olun: 

Doğru algoritmayı seçmek

Optimal sonuçlara ulaşmak için doğru optimizasyon algoritmasını seçmek kritik önemdedir. Algoritma seçimi, problemin doğasına bağlıdır:

  • Doğrusal vs. doğrusal olmayan: Doğrusal problemler için Simplex veya iç nokta gibi doğrusal programlama teknikleri uygundur. Doğrusal olmayan problemler için gradyan inişi, Newton yöntemi veya yarı-Newton yöntemleri (ör. BFGS) daha uygun olabilir.
  • Kısıtlı vs. kısıtsız: Kısıtları olan problemler için Sıralı Kuadratik Programlama (SQP) gibi algoritmalar veya kısıtları yerel olarak ele alan (ör. iç nokta) yöntemler gerekir. Kısıtsız problemler ise gradyan inişi veya Newton yöntemiyle verimli biçimde çözülebilir.

Problemin özelliklerine göre doğru algoritmanın seçilmesi, daha hızlı yakınsama ve daha doğru çözümler sağlar.

Kısıtların ele alınması

Optimizasyon problemlerindeki kısıtlar, algoritma ve çözüm stratejisi seçimini önemli ölçüde etkileyebilir. Kısıtları ele almak için çeşitli yaklaşımlar kullanılabilir:

  • Ceza yöntemleri: Kısıt ihlalleri için bir ceza terimi ekleyerek kısıtları amaç fonksiyonuna dahil edin. Bu yaklaşım, kısıtlı bir problemi kısıtsız bir probleme dönüştürerek kısıtsız optimizasyon yöntemlerinin kullanılmasını sağlar.
  • Bariyer yöntemleri: Kısıtların ihlal edilmemesini sağlamak için bariyer fonksiyonları kullanın. Bariyer yöntemleri, kısıtlara yaklaşıldıkça sonsuza giden bir bariyer terimini amaç fonksiyonuna dahil ederek çalışır.
  • Yerel destek: Kısıtları doğal olarak destekleyen çözücüleri kullanın. scipy.optimize veya CVXPY gibi modern optimizasyon çözücülerinin pek çoğu kısıtları doğrudan ve verimli şekilde ele almak üzere tasarlanmıştır.

Kısıtların ele alınması için uygun yöntemi seçmek, çözümlerin uygulanabilir olmasını ve belirtilen tüm gereksinimleri karşılamasını sağlar.

Ölçekleme ve ön işleme

Verilerin uygun şekilde ölçeklenmesi ve ön işlenmesi, optimizasyon algoritmalarının performansını önemli ölçüde iyileştirebilir:

  • Ölçekleme: Özelliklerin amaç fonksiyonuna eşit düzeyde katkı yapmasını sağlamak için girdi verilerini normalize edin veya standartlaştırın. Bu, sayısal kararlılıkla ilgili sorunların önüne geçebilir ve yakınsama hızlarını artırabilir.
  • Ön işleme: Problemi basitleştirmek için özellik mühendisliği veya boyut indirgeme gibi teknikleri uygulayın. Doğru ön işleme, optimizasyon probleminin karmaşıklığını azaltır ve çözüm sürecini hızlandırır.

Sonuçların yorumlanması

Optimizasyon algoritmalarının sonuçlarını yorumlamak birkaç yönün anlaşılmasını gerektirir:

  • Çözüm kalitesi: Optimal koşulların ve kısıtların sağlanıp sağlanmadığını kontrol ederek çözümün kalitesini değerlendirin. Sonuçları bilinen kıyaslarla karşılaştırın veya çapraz doğrulama teknikleriyle doğrulayın.
  • Yakınsama ölçütleri: Yakınsama iletilerini, yineleme sayılarını veya amaç fonksiyonu değerindeki değişimleri kontrol ederek algoritmanın yakınsayip yakınsamadığını değerlendirin. Algoritmanın gerçek optimuma yakın bir çözüme ulaştığından emin olun.
  • Sayısal hassasiyet: Sayısal hassasiyetin sonuçlar üzerindeki etkisini göz önünde bulundurun. Küçük sayısal hatalar birikerek özellikle büyük ölçekli problemlerde veya toleransların sıkı olduğu durumlarda nihai çözümü etkileyebilir.

Sonuç

Sayısal optimizasyon, modern problem çözmenin temel taşlarından biridir. Makine öğrenmesi, mühendislik, finans ve yöneylem araştırması gibi alanlardaki karmaşık zorlukları ele almak için güçlü araçlar sunar. 

Python’un SciPy, CVXPY ve Pyomo gibi zengin optimizasyon kütüphanesi ekosistemi, bu ileri teknikleri daha erişilebilir kılarak araştırmacıların, mühendislerin ve veri bilimcilerinin verimli sistemler tasarlamasına, modelleri optimize etmesine ve daha akıllı, veriye dayalı kararlar almasına olanak tanır. 

Doğru teknikler ve en iyi uygulamalarla donanmış olarak, artık Python’da en zorlu optimizasyon problemlerine bile yaklaşmaya ve çözmeye hazırsınız. Öğrenmeye devam etmek için bu kaynaklara göz atın:

FAQs

Optimizasyon nedir?

Optimizasyon, analitik çözümler yerine yinelemeli hesaplama yöntemleri kullanarak bir fonksiyonun minimumunu veya maksimumunu bulma sürecidir.

Optimizasyon neden önemlidir?

Optimizasyon, makine öğrenmesi, mühendislik ve finans gibi alanlardaki karmaşık, gerçek dünya problemlerinde doğrudan çözümler pratik olmadığında veya imkânsız olduğunda çözüm üretmeye yardımcı olduğu için önemlidir.

Sayısal optimizasyon için en iyi Python paketleri hangileridir?

Sayısal optimizasyon için popüler Python paketleri arasında genel amaçlı optimizasyon için SciPy, dışbükey optimizasyon için CVXPY, esnek modelleme için Pyomo ve büyük ölçekli endüstriyel uygulamalara uygun güçlü çözücüler olan Gurobi ve CPLEX bulunur.

Sayısal optimizasyon makine öğrenmesinde nasıl kullanılır?

Makine öğrenmesinde sayısal optimizasyon, modelin hedef değişkenleri ne kadar iyi tahmin ettiğini ölçen kayıp fonksiyonunu minimize etmek için kullanılır.

Kısıtlı ve kısıtsız optimizasyon arasındaki fark nedir?

Kısıtsız optimizasyon, değişkenler üzerinde herhangi bir kısıtlama olmadan bir amaç fonksiyonunun optimal değerini bulmayı içerir. Buna karşılık kısıtlı optimizasyon, eşitlik veya eşitsizlik gibi kısıtlar getirir ve fonksiyon optimize edilirken optimal çözümün bu kısıtları da sağlamasını gerektirir.

Kurtis Pykes

Yazar

Kurtis Pykes

Konular

İlgili