İki genetik algoritmanın karşılaştırılması


9

Eşit davranması gereken iki genetik algoritma uygulamam var. Ancak çözülemeyen teknik kısıtlamalar nedeniyle çıktıları aynı girdi göz önüne alındığında tam olarak aynı değildir.

Yine de önemli bir performans farkı olmadığını göstermek istiyorum.

Ben farklı ilk rastgele sayı tohumları kullanarak, iki algoritma her biri için aynı yapılandırma ile 20 çalışır var. Her çalıştırmak için ve kuşak asgari hata popülasyonunda en iyi bireyin spor kaydedildi. Algoritma seçkin bir koruma mekanizması kullanır, bu nedenle en iyi bireyin uygunluğu monoton olarak azalır. Bir çalışma 1000 nesildir, bu yüzden çalışma başına 1000 değerim var. Hesaplamalar çok pahalı olduğu için daha fazla veri alamıyorum.

Hangi testi yapmalıyım? Kolay bir yol muhtemelen sadece son nesillerdeki hatayı karşılaştırmak olacaktır (yine, burada hangi testi kullanacağım)? Ancak genel olarak yakınsama davranışını karşılaştırmak da düşünülebilir.


Bir açıklama olarak: herhangi bir çalışmanın ilk segmentinin değerli bir çözüm üretmesi pek mümkün olmayacak şekilde genetik bir algoritmanın rastgele bir çözüm araması değil mi? Ayrıca, "popülasyondaki minimum hata" ile tam olarak ne demek istiyorsun? Bilinen bir gerçek değer ile bir çalışmadaki 1000 değerden herhangi bir çözüm arasındaki minimum farkı kastediyorsanız, bu, çalışmanın sonucunun taraflı bir göstergesi değil midir? Sonuçta, pratikte her çalışmada son çözümü kabul edip ondan önce gelen her şeyi reddedersiniz, değil mi?
whuber

Yanlışlıkla temelde 1 / fitness demek, bu yüzden bir nesil en iyi kişinin değeri hakkında konuşuyorum. Her nesil için en iyi bireyin fitness değerini kaydettim. Bu yüzden, her biri belirli bir koşunun belirli bir neslindeki en iyi bireyin "uygunluğuna" karşılık gelen 1000 * 20 * 2 sayılarım var.
nisc

Sanırım ilk soru kötü poz verdi, bazı açıklamalar ekledim ..
nisc

Yanıtlar:


9

Stokastik algoritmaları test etmek oldukça zor olabilir!

Sistem biyolojisinde çalışıyorum ve bir modeli simüle etmek için kullanılabilecek birçok stokastik simülatör var. Bu simülatörlerin test edilmesi zordur, çünkü tek bir modelden herhangi iki gerçekleşme tipik olarak farklı olacaktır.

Gelen dsmts Belirli bir modelin (analitik) beklenen değeri ve varyansı hesapladık. Daha sonra, bir simülatörün gerçeklerden farklı olup olmadığını belirlemek için bir hipotez testi yaparız. Kullanıcı kılavuzunun 3. Bölümü detayları vermektedir. Esasen ortalama değerler için bir t testi ve varyanslar için ki kare testi yapıyoruz.

Sizin durumunuzda, iki simülatörü karşılaştırıyorsunuz, bunun yerine iki örnekli bir t testi kullanmanız gerekiyor.


Tüm nesillerden gelen bilgileri nasıl kullanırım?
nisc

En kolay yol çoklu testler yapmak, yani her nesilde test yapmak, sonra bir Bonferroni veya fdr düzeltmesi kullanmaktır.
csgillespie

Her nesilde karşılaştırırken, 1/1000 * 0.05 anlamlılık düzeyinde test yapmak zorunda kalır mıyım? Bu biraz sert değil mi?
nisc

Doğru, ama aynı zamanda çok fazla test yapıyorsunuz - her şeye sahip olamazsınız;) P değerlerini sıralayabilir, olası hataların nerede olabileceğini görmek için bunları bir kılavuz olarak kullanabilirsiniz.
csgillespie

1
Bonferroni düzeltmesi yerine, her zaman daha güçlü bonferroni holm kullanabilirsiniz. Anyswer'ımı burada görebilirsiniz: stats.stackexchange.com/questions/575/…
Henrik

4

Belki aynı algoritmanın iki çalışması arasındaki ortalama farkı, farklı algoritmalardaki iki çalışma arasındaki ortalama farkı ölçebilirsiniz. Bu farkın nasıl ölçüleceği sorununu çözmez, ancak daha izlenebilir bir sorun olabilir. Ve zaman serisinin bireysel değerleri, birbirlerine karşı değerlendirilecek bireysel veri noktaları olarak ele alınmak yerine fark hesaplamasına beslenir (n. Adımdaki belirli farkın gerçekten istediğiniz şey olduğunu da düşünmüyorum) hakkında açıklama yapmak).

Güncellemeyle ilgili ayrıntılar - son hatanın ötesinde, zaman serisinin hangi özellikleriyle ilgileniyorsunuz? Aslında çözmek için üç farklı sorunuz var:

  1. Sizin için benzerlik nedir, yani iki yöntemin farklı olduğuna inanmadığınızı söylediğinizde ne demek istiyorsunuz?
  2. Bunu nasıl ölçersiniz - 1'den sonra cevaplanabilir ve
  3. İki yönteminiz arasındaki önemli farklılıkları nasıl test edebilirsiniz?

İlk yazıda söylediğim tek şey, (1) 'in cevabının muhtemelen 1000 neslin her birindeki bireysel farklılıkları dikkate almamasıydı. Ve her zaman dizisi için ya da en azından zaman serileri arasındaki benzerlik için bir skaler değer bulmanızı öneririm. Ancak o zaman gerçek istatistik sorusuna ulaşırsınız (ki bu üç noktanın en azını da bilirim, ancak her soru için skaler bir değere sahipken sorduğum benzer bir soruda eşleştirilmiş bir t testi kullanmam tavsiye edildi).


Kulağa makul geliyor, daha fazla ayrıntı?
nisc
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.