Optimizasyon

Matematikte **matematiksel programlama**, **eniyileme** ya da **optimizasyon** terimi; bir gerçel fonksiyonu minimize ya da maksimize etmek amacı ile gerçek ya da tam sayı değerlerini tanımlı bir aralıkta seçip fonksiyona yerleştirerek sistematik olarak bir problemi incelemek ya da çözmek işlemlerini ifade eder. Örneğin bu problem şöyle olabilir:

*Verilen*: f fonksiyonu: A'dan R ye tanımlı. (R:Reel Sayılar)

*Aranan* : A'da öyle bir x0 var mı ki; tüm x değerleri için f(x0)≤ f(x)ifadesini sağlasın ("minimizasyon") veya f(x0)≥ f(x) ifadesini sağlasın ("maksimizasyon").

Böylesi bir formulasyona optimizasyon problemi ya da **matematiksel programlama problemi** denir (terimin bilgisayar programlama ile direkt bir ilgisi yoktur, ama yine de lineer programlamada kullanılan bir ifadedir). Pek çok gerçek ve teorik problemler bu genel çerçevede modellenebilir.Bu teknik kullanılarak formüle edilen problemlere fizik bilminin ilgi alanından bir örnek verilecek olursa, bilgisayar monitörlerinin enerji minimizasyonundan söz edilebilir. O halde, yukarıdaki f fonksiyonu modellenen sistemdeki enerjiyi temsil edecekti.

Bu tür problemlerde "A kümesi" genellikle, bir takım daraltıcı kısıtlar, eşitlikler ve eşitsizlikler ile yerine verilecek(denenecek) değerleri sağlayan öklidyen uzayın (Rn) bir alt kümesidir. f fonksiyonundaki A'nın tanım aralığına "arama uzayı", A'nın alacağı değerlerin kümesine ise *[[çözüm adayları]]* ya da *olası çözümler* denir.

f fonksiyouna objektif (nesnel) ya da paha(maliyet) fonksiyonu denir. İstenilen objeyi minimize ya da maksimize eden(amaca göre) olası A çözümüne ise "optimal çözüm" denir.

Genellikle, problemin olası çözümü ve objektif fonksiyonu dışbükeylik göstermez, birden çok yerel "minimum" ve "maksimum" noktalarına rastlanabilir.

x* da bulunan ve tüm x'ler için δ > 0 iken

:\|\mathbf{x}-\mathbf{x}^*\|\leq\delta;\, epsilon

ifadesi ile

:f(\mathbf{x}^*)\leq f(\mathbf{x})

sağlanıyorsa; x* civarında bir yerlerde fonksiyonun tüm değerlerinin, bu noktadaki değerden büyük veya o'na eşit olduğu söylenebilir, o halde bu nokta bir "Yerel Minimum" noktasıdır. (Yerel Maksimum da benzer şekilde ifade edilebilir).

Dışbükey olmayan problemlerin çözümünde pek çok algoritma kullanılmasına rağmen (çoğunlukla ticari amaca yönelik çözüm üreten algoritmalar) yine de yerel optimal noktalar ve gerçek optimal noktaral arasındaki farkların ayırt ve tespit edilmesinde yetersiz kalınmakta ve orijinal probleme bir adım geriden yaklaşılmaktadır. Deterministik algoritmaların gelişimi ile ilgilenip, yakınsayan ve dışbükey olmayan ifadeleri -sınırlı bir zamanda- gerçek bir optimal ifadeye ayrıştırabilen uygulamalı matematik ve nümerik analiz branşlarına **global optimizasyon** denir.

## Başlıca alt dalları
* Doğrusal Programlama : *f* objektif fonksiyonun doğrusal olduğu ve A kümesinin yalnızca doğrusal eşitlik veya eşitsizlikler ile ulaşılabilir olduğu durumlarda bu isim kullanılır. Böylesi bir A kümesine, sınırlandırılmamış ise polihedron, sınırlı ile politop denir.
* Tamsayı Programlama : Doğrusal programların bir ya da daha çok değişkeni tam sayı ile ifade edildiği durumlarda kullanılır. 
* Kuadratik Programlama: A değeri doğrusal eşitlik veya eşitsizlikler ile gösterilmek kaidesi ile; objektif fonksiyonun kuadratik değerler almasına müsaade eder.
* Doğrusal olmayan Programlama: Objektif fonksiyon ya da kısıtların doğrusal olmadığı genel durumları inceler.
* Konveks Programlama objektif fonksiyon ve kısıtın bükey bir fonksiyon biçiminde ifade edilebileceği durumları inceler. Non-Lineer programlaman özel bir hâli olarak düşünülebilir.
* İkinci Derece Koni Programlama (SOCP).
* Yarı-Belirli Programlama (SDP) Değişkenleri yarı tanımlı olacak şekilde, Bükey optimizasyonun bir alt dalıdır. Lineer ve Konveks Kuadratik programlaman genel bir hâlidir.
* Stokastik Programlama: Kısıt ve parametrelerin rastgele değişkenler'e bağlı olduğu durumları inceler.
* Robust Optimizasyonu/Programlama: Optimizasyon problemindeki belirsiz bilgiyi yakalamaya çalışan bir tür stokastik programlamatır.Stokastik programlama gibi, belirsiz bilgiye dayalı olarak çalışmaz ancak problemi girilen bilginin rastgele etkinliği ve şans temelinden kopmadan çözemez.
* Tümleşik optimizasyon : Olası çözüm kümesi içeren problemlerin mümkün ise daha kolay çözülebilir bir şekle indirgenmesi esasına dayanır.
* Sonsuz-boyutlu optimizasyon : Olası çözüm kümesinin (Fonksiyonlar kümesi gibi) sonsuz boyutlu bir uzaya ait olup, olmadığını araştırır. 
* Kısıt Sağlaması *f* fonskiyonun sabit olup, olamayacağını araştırır (Bu metot yapay zekâ alanında kullanılır, özellikle de otomatikleşmiş ilişkilendirme konusunda yardımcı olur).Ayırıcı Programlama kullanularak, seçilen ve önem adledilen (en az) bir kısıtın sağlanması temin edilmesi esasına dayanır.
* Yörünge optimizasyonu: Hava ve uzay araçları için kullanılan özel bir optimizasyon türüdür.

Altdallara göre farklılık gösterecek şekilde, çeşitli teknikler dizayn edilmiştir:

* Değişkenler hesabı Objektif fonksiyonun zaman aralıklarından seçilen değişik noktalara nasıl reaksiyon verdiğinin incelenmesi ile kullanılan yöntemdir.
* Optimal Kontrol Teorisi değişkenler hesabının çeşitli genellemelerinin toplanmış halidir.
* Dinamik programlama Büyük parçaların daha küçük boyutlara indirgenmesi optimizasyon stratejisini yöneten metottur.Bu tür alt problemler ile ilgili olan eşitliklere Bellman eşitliği denir.

## Teknikler
İki kez diferansiyeli alınabilen fonksiyonlar için, kısıt bulundurmayan problemler objektif fonksiyonun gradyan'ının sıfır'a eşit olduğu noktaların (istasyon noktaların) yeri tespit edilip, Hesse matrisi ile her noktanın sınıfı belirlenerek çözülebilir.Eğer Hesse pozitif tanımlı ise bu nokta "Yerel Minimum", negatif tanımlı ise "Yerel Maksimum"'dur.Şayet tanımsız ise de bir tür saddle point olduğu söylenebilir.

Ancak, her zaman türev almak olası değildir.Objektif fonksiyonun düzgünlüğüne göre metotların ana sınıflandırması şöyle yapılabilir:

* Tümleşik metotlar
* Türeve-serbest metotlar
* Birinci derece metotlar
* İkinci derece metotlar

Bazı metotlar özel isimleri ile de yukarıdaki dört gruptan birine denk gelecek şekilde listenebilir:

* Gradyan iniş ya da Dik iniş metodu.
* Nelder-Mead metodu ya da the Amoeba metodu.
* Alt-gradyan metodu - Gradyan metodunun, gradyan bulunmayan durumlar için kullanılan hali.
* Tekyönlü metot
* Elipsoid metot
* Yığın metodu
* Newton metodu
* Kazi-Newton metodu
* Birleşik gradyan metodu
* Hat araması - tek boyulu optimizasyon için kullanılan bir teknik, genellikle başka bir tekniğe yardımcı olması için kullanılır.

Kısıt problemleri genellikle Lagrange Çarpanı ile kısıttan bağımsız bir forma getirilir.

Birkaç popüler metot daha:

* Tepe tırmanışı
* Benzetimli tavlama
* Kuantum benzetimli tavlama
* Tabu araması
* Kiriş araması
* Genetik algoritmalar
* Karınca sürüsü optimizasyonu
* Evrim stratejisi
* Stokastik tünel
* Diferansiyel evrim
* Sürü parçacıkları
* Armoni araması
* Arı algoritması

## Kullanım alanları
Yapı-Araç İskeleti dinamiği'ne ilişkin problemler sıklık ile matematiksel programlama teknikleri gerektirmektedir.Yapı-Araç İskeleti, manifold ile kısıtlanmış bir basit diferansiyel denklem'in çözümüne ihtiyaç duyan bir yönelim olarak değerlendirilebilir.Bu durumda kısıtlar non-lineer olmayan gemotetrik çeşitliliktedir, öneğin "bu iki nokta daima temas etmeli", "bu alan diğerine etki etmemeli" ya da "bu nokta her zaman bu eğri üzerinde olmalı" gibi.Ayrıca temas halindeki kuvvetlere ilişkin problemler de lineer uyumluluk çatısı altında çözüldüğünden, buna da bir tür QP (Kuadratir Programlama) Problemi gözüyle bakılabilir.

Pek çok dizayn problemi de optimizasyon programları ile çözülmektedir.Bu tür uygulamalara dizayn optimizasyonu denir.Bu alanda bilinen ve büyümekte olan bir alt kol çok disiplinli dizayn optimizasyonu'dur.Bu tür, pek çok problemde kullanışlı olduğu gibi aynı zamanda da uzay mühendisliği sahasına uyarlanabilmektedir.

Ekonomi de matematiksel programlamaya ağır bir bağımlılık duyar.Mikroiktisat'da sık karşılaşılan bir problem olan marjinal fayda ve bundan kaynaklanan ikilik olan harcamaları minimize etme problemi iktisadî bir optimizasyon problemidir. 
Tüketiciler ve firmalar fayda/kar oranlarını maksimize etmek durumundadırlar.Ticaret teorisi de milletler arası ticari ortaklığın izahında optimizasyona sık sık başvurur.

Sabit genel giderli zaman maliyet problemleride önemli bir optimizasyon problemidir. Özellikle inşaat ve endüstri mühendisliğinde bu problemle sıkça karşılaşılır. Doğrusal programlama, sezgisel ve üst sezgisel yöntemler bu problem türünün optimizasyonu için kullanılmaktadır.

Optimizasyon tekniklerinin sıkça kullanıldığı bir diğer alan da operasyon araştırması'dır.

## Tarihçe
**Dik İniş** adıyla bilinen ilk optimizasyon tekniğinin tarihi Gauss'a dek uzanır.
Tarihi olarak, 1940'larda George Dantzig tarafından ortaya atılan lineer programlama kuramı en yaşlı optimizasyon terimidir. *Programlama* terimi bu bağlamda Bilgisayar Programcılığı'nı ifade etmez.**Program** teriminin kullanımı ABD Ordusunun, kendi içtimai ve lojistik takvimini belirlemede konteyner kullandığı "program" terimi ile ilişkilidir. (Daha sonra ise "program" terimi devlet bütçesinin düzenlenmesinde kullanılmış ve günümüzde de yüksek teknolojik araştırmaların sahasına da geçmiştir.)

Optimizasyon Alanına Katkı Sağlayan Diğer Önemli Matematikçiler:
* John von Neumann
* Leonid Vitalyevich Kantorovich
* Naum Z. Shor
* Leonid Khachian
* Boris Polyak
* Yurii Nesterov
* Arkadii Nemirovskii
* Michael J. Todd
* Richard Bellman
* Hoang Tuy

## Ayrıca bakınız
* Oyun teorisi
* Yöneylem araştırması
* Bulanık mantık
* Dinamik programlama

### Problem Çözücüler
* NAG Numerical Libraries-NAG kütüphanesi çeşitli problem ve durumlardan oluşan optimizasyona dair geniş bir arşiv sunuyor.http://www.nag.co.uk/optimization/index.asp
* NPSOL - Non-Lineer progralama problemlerinin çözümü için geliştirilmiş bir Fortran paketi.http://www.sbsi-sol-optimize.com/asp/sol_product_npsol.htm
* OpenOpt - Pyhton dilinde yazılmış ücretsiz çözücüleri sağlayan bir araç-kutusu
* IPOPT - Açık kaynak kodlu ilkel-ikincil dahli metotlar ile çalışan bir NLP çözücü.
* KNITRO - Non-Lineet problemler için bir çözücü.
* Mathematica
* OpenSolver - Açık kaynaklı MS Excel eklentisi olarak çalışan bir çözücü

## Kaynakça

* Mordecai Avriel (2003).* Nonlinear Programming: Analysis and Methods.* Dover Publishing. ISBN 0-486-43227-0.
* Stephen Boyd and Lieven Vandenberghe (2004). Convex Optimization, Cambridge University Press. ISBN 0-521-83378-7.
* Panos Y. Papalambros and Douglass J. Wilde (2000). Principles of Optimal Design : Modeling and Computation, Cambridge University Press. ISBN 0-521-62727-3.
* Jorge Nocedal and Stephen J. Wright (2006). Numerical Optimization, Springer. ISBN 0-387-30303-0.

## Dış bağlantılar
* NEOS Guide şu anda yerine NEOS Wiki gelmiş durumda.
* Mathematical Programming Society
* COIN-OR 
* Mathematical Programming Glossary
* Mathematical optimization
* Global optimization
* Optimization Related Links
* Decision Tree for Optimization Software Optimizasyon kaynak kodlarına linkler içeriyor.
* Optimization Online 
**Modeling languages:**
* AIMMS
* AMPL
* GAMS
* OPL
**Solvers:**
* CONOPT
* JOpt
* Moocho - Çok esnek ve açık-kaynak kodlu bir NLP çözücü.
* SAS OR
* http://www.stanford.edu/group/SOL/software.html Stanford Üniversitesi'nin Sistem Optimizasyon Labarotuarı tarafından sunulan ücretsiz optimizasyon yazılımı.
* TANGO Project Genel Non-Lineer algoritmalar için güvenilir bir yazılım.
* SmartDO - Mühendislik ile ilgili global optimizasyon yazılımı (ticari)

**Kütüphaneler:**
* OOL (Open Optimization library) - 
* IOptLib (Investigative Optimization Library) - (ANSI C).
* ALGLIB Optimizasyon kaynakları. C++, C#, Delphi, Visual Basic.