@Barron dolaylı olarak aynı şeyi tartışmış olsa da, diğer cevaplara kıyasla biraz farklı bir yaklaşım önermek istiyorum.
Bunun yerine bir dizi nokta adresinden değerlendirerek yani doğrudan fonksiyonunu optimize bir (yerel) optimuma (umarım) yakınsama, sen kavramını kullanabileceği puan vekil modelleme olan tarif ettiğiniz tipteki problemler için çok uygundur (yüksek maliyet, pürüzsüz, sınırlı, düşük boyutlu yani 20'den az bilinmeyen).x1,x2,…,xksurrogate modelling
Özellikle, vekil modelleme bir model işlevi kurarak çalışır gerçek fonksiyonunun f ∈ R d → R . Anahtar, c'nin f'yi mükemmel bir şekilde temsil etmemesine rağmen, değerlendirmenin çok daha ucuz olmasıdır.c∈Rd→Rf∈Rd→Rcf
Dolayısıyla, tipik bir optimizasyon süreci aşağıdaki gibi olacaktır:
- Değerlendirmede bir set j başlangıç noktaları x 1 , x 2 , ... , x j . Türevlere gerek olmadığını unutmayın. Ayrıca, bu noktaların Latin Latin Hiperküp Örneklemesi veya benzer bir boşluk doldurma tasarımı gibi arama alanı boyunca eşit olarak dağıtılması gerektiğini unutmayın.fjx1,x2,…,xj
- Bu orijinal veri kümesini temel alarak bir model işlevi oluşturun . Modelinizi doğrulamak için çapraz doğrulamayı kullanabilirsiniz (yani c oluşturmak için orijinal j noktalarının yalnızca bir alt kümesini kullanın ve sonra c'nin bu değerleri ne kadar iyi tahmin ettiğini kontrol etmek için veri kümesinin geri kalanını kullanın )cjcc
- Öğrenmek için bu Beklenen İyileşme (El) kriter olarak bir kriter kullanım olup, daha fazla örnekleri 'dolum' yapmak için 'için örnekleyerek daha doğru f . Bu aslında teorik olarak göründüğünden çok daha iyi incelenmiştir ve EI kriteri çok iyi araştırılmıştır. EI kriteri de açgözlü bir kriter değildir, bu nedenle her ikisi de modelin doğruluğunu genel olarak iyi bir şekilde iyileştirirken, potansiyel optima'nın yakınında doğruluğa öncelik verirsiniz.cf
- Modeliniz yeterince doğru değilse, 3. adımı tekrarlayın, aksi takdirde değerlendirmek için çok ucuz olacak optimumunu bulmak için favori optimizasyon rutininizi kullanın (böylece istediğiniz herhangi bir rutini, hatta türev gerektirenleri bile kullanabilirsiniz işlevi ince bir ağda değerlendirir).c
Genel olarak, @barron'un önerdiği gibi, EGO, Efficient Global Optimization (EGO) tarafından kastedilen budur. Uygulamanız için bunun mükemmel bir şekilde uygun olduğunu vurgulamak isterim - nispeten az değerlendirmesine dayanan şaşırtıcı derecede doğru bir model elde edersiniz ve daha sonra istediğiniz herhangi bir optimizasyon algoritmasını kullanabilirsiniz. Sıklıkla ilginç olan şey, şimdi c'yi bir kafes üzerinde değerlendirip çizebileceğiniz ve böylece f'nin genel görünümü hakkında fikir edinebilmenizdir . Bir başka ilginç nokta, çoğu vekil modelleme tekniğinin istatistiksel hata tahminleri sağlaması ve böylece belirsizlik tahminine izin vermesidir.fcf
Nasıl inşa etmek kursu açık bir soru, ama çoğu zaman Kriging veya sözde uzay-haritalama modelleri kullanılmaktadır.c
Tabii ki, bunların hepsi biraz kodlama işi, ancak birçok insan çok iyi uygulamalar yaptı. Matlab'da sadece DACE yazılım araç kutusunun ücretsiz olduğunu biliyorum . TOMLAB ayrıca bir Matlab paketi de sunabilir, ancak maliyetlidir - ancak, C ++ ile de çalıştığına ve DACE'nin sahip olacağından çok daha fazla yeteneğe sahip olduğuna inanıyorum. (Not: Yakında piyasaya sürülecek olan ve EGO için ek destek sunacak olan yeni DACE sürümünün geliştiricilerinden biriyim.)
Bu kaba genel bakışın size yardımcı olduğunu umuyoruz, daha net hale getirilebilecek noktalar veya kaçırdığım şeyler varsa veya konuyla ilgili daha fazla materyal istiyorsanız lütfen soru sorun.