Optimizasyon Algoritmaları Şampiyonası. - sayfa 60

 
Yuri Evseenkov :
Yani, boş bir dizi geçirebilir ve tüm parametreler sıfıra eşit olduğunda FF'nin değerini öğrenebilirsiniz.

0.0, [-10.0;10.0] aralığında mı? - Evet öyle. Yani 0.0 değerleriyle dolu diziden parametrelerle FF'nin değerini öğrenebilirsiniz.

Genel olarak, hiç kimse FF'ye kesinlikle herhangi bir sayı göndermenizi yasaklamaz, ancak yalnızca [-10.0;10.0] aralığında yeterli bir yanıt alırsınız ve aralığın ötesinde sayılar bu sınırlara kesilir. Bunu dikkate almazsanız, o zaman algoritmanız düz bir yatay yüzeye indiğini düşünebilir, çünkü FF değerleri her zaman FF için minimum (herhangi bir, ancak değişmez) verilir ve sonsuzca dolaşırlar. gerçek sayıların uçsuz bucaksız genişlikleri üzerinde (işlemi doğrulayıcı tarafından durdurulana kadar).

 
Andrey Dik :

0.0, [-10.0;10.0] aralığında mı? - Evet öyle. Yani 0.0 değerleriyle dolu diziden parametrelerle FF'nin değerini öğrenebilirsiniz.

Genel olarak, hiç kimse FF'ye kesinlikle herhangi bir sayı göndermenizi yasaklamaz, ancak yalnızca [-10.0;10.0] aralığında yeterli bir yanıt alırsınız ve aralığın ötesinde sayılar bu sınırlara kesilir. Bunu dikkate almazsanız, o zaman algoritmanız düz bir yatay yüzeye indiğini düşünebilir, çünkü FF değerleri her zaman FF için minimum (herhangi bir, ancak değişmez) verilir ve sonsuzca dolaşırlar. gerçek sayıların uçsuz bucaksız genişlikleri üzerinde (işlemi doğrulayıcı tarafından durdurulana kadar).

Anladım. Teşekkür ederim. İlk 4 çağrıyı her biri -10.0, 0.0, 10.0 ve 2.7 ile dolu dizilerle planlıyorum. Hamam böceklerim için 2.718 istiyorum ama adım 0.1. Bunu yapamazsın.
 
Dmitry Fedoseev :

Lano, ben gidiyorum, sessiz ev dünyanda evde kal. Katılımcılardan silin.

Zırh delici toplarla burada olan herkese elbette açıklayacağım. İkinci seçeneğe göre komut dosyasında, üye işlevi de içe aktarıldığından FF()'yi içe aktarmak gereksizdir ve böyle bir içe aktarma ile FF() işlevi üye işlevinde görünmez. FF() işlevi, üyenin kitaplığına aktarılmalıdır. Bu tür banal saçmalıkların bir örneği bile yanlış sunulmaktadır. Biliyorum, biliyorum, diyorsunuz ki, Ne açık. Ancak her şey bu kadar açıksa, doğru örnek sağlanmamıştır. Burada aptalmışım gibi bir bakışla bile.

güle güle

Dim, en azından podyumdan yüksek sesle ilan etmeden önce ihracat fonksiyonlarının işleyişini kontrol ettin. Ve "Bakmadım ama kınıyorum" dizisinden çıkıyor. Örneğin, prototipi yayınlamadan önce doğal olarak performansını kontrol ettim . Ve elbette işe yarıyor, yani. işlev örneğinin herhangi biri, kullanıcı kitaplığı yüklenmez.

MT çalışma zamanı genellikle düşündüğünüzden farklı çalışır. Yalnızca bir değişken örneği içeren kitaplığın yalnızca bir örneği, denetleme komut dosyasının adres alanına yüklenir , yani. herkes, belirli parametreleriyle yalnızca bir belirli ff kullanacaktır. Bana inanmıyorsanız, örneğimi indirin ve kontrol edin.

 
Vasiliy Sokolov :

Dmitry, katılımcı için algoritma kitaplığı için iki seçenek olduğunu da görmedi. Ve ikincisinde FF işlevinin bir içe aktarımı var (dediği gibi). Ama ilki öyle değil.

 
Vasiliy Sokolov :

Dim, en azından podyumdan yüksek sesle ilan etmeden önce ihracat fonksiyonlarının işleyişini kontrol ettin. Ve "Bakmadım ama kınıyorum" dizisinden çıkıyor. Örneğin, prototipi yayınlamadan önce doğal olarak performansını kontrol ettim . Ve elbette işe yarıyor, yani. işlev örneğinin herhangi biri, kullanıcı kitaplığı yüklenmez.

MT çalışma zamanı genellikle düşündüğünüzden farklı çalışır. Yalnızca bir değişken örneği içeren kitaplığın yalnızca bir örneği, denetleme komut dosyasının adres alanına yüklenir , yani. herkes, belirli parametreleriyle yalnızca bir belirli ff kullanacaktır. Bana inanmıyorsanız, örneğimi indirin ve kontrol edin.

Çift içe aktarmalı bir kopya hakkında zaten konuştum (yazımı bulamadım, burada birçoğu var). Evet, bu nedenle FF aramalarını katılımcının algoritması ile kontrol etmek mümkündür. Komut dosyası ve algoritma kendi FF örneklerinden her birini çağırsaydı, şampiyonluk gerçekleşmeyecekti çünkü algoritmanın gerçekten FF'yi söylediği kadar çok çağırıp çağırmadığını kontrol etmek imkansız olurdu.

...

Algoritmada muhtemelen tek bir içe aktarma ile geçmek mümkün olsa da, * .ex5'i başlatma, boşaltma ve sayacı sıfırlamak için yeniden başlatma (katılımcının kurnaz planı), ancak daha sonra katılımcının kendisinin imkanı olmadığını düşünüyorum. sonuçları görüntülemek için tüm istatistikleri ve diğer olasılıkları dikkate almak zorunda kalacaktı ve bu, katılımcılar için ek bir karmaşıklıktır. FF'nin izin verilen sınırlar içinde kullanılıp kullanılmadığı hakkında gerekli tüm bilgileri istemek komut dosyası tarafında daha kolaydır.

Ancak yine de, her durumda, bizim durumumuzda çift ithalat bir hata olarak kabul edilemez.

 

Andrey Dik :

Bilmene gerek yok. [-10.0;10.0] aralığının ötesine geçmeyin ve herhangi bir sorun olmayacaktır.


0.0, [-10.0;10.0] aralığında mı? - Evet öyle. Yani 0.0 değerleriyle dolu diziden parametrelerle FF'nin değerini öğrenebilirsiniz.

Genel olarak, hiç kimse FF'ye kesinlikle herhangi bir sayı göndermenizi yasaklamaz, ancak yalnızca [-10.0;10.0] aralığında yeterli bir yanıt alırsınız ve aralığın ötesinde sayılar bu sınırlara kesilir. Bunu dikkate almazsanız, o zaman algoritmanız düz bir yatay yüzeye indiğini düşünebilir, çünkü FF değerleri her zaman FF için minimum (herhangi bir, ancak değişmez) verilir ve sonsuzca dolaşırlar. gerçek sayıların uçsuz bucaksız genişlikleri üzerinde (işlemi doğrulayıcı tarafından durdurulana kadar).

Sınırları kesmekle uğraşmamak ve algoritmayı sınırlamamak için FF'ye bir satır ekleyebilirsiniz:

 if (array[ ArrayMaximum (array)]> 10.0 || array[ ArrayMinimum (array)]<- 10.0 ) return ( 0.0 );
 
Sergey Chalyshev :

Sınırları kesmekle uğraşmamak ve algoritmayı sınırlamamak için FF'ye bir satır ekleyebilirsiniz:

neden dönüş ( 0.0 ); ?

tam olarak - neden 0.0?

 
Andrey Dik :

neden dönüş ( 0.0 ); ?

tam olarak - neden 0.0?

Sadece maksimumu arıyorsak, o zaman daha doğru olur.

 return (- DBL_MAX );
 
Sergey Chalyshev :

Sadece maksimumu arıyorsak, o zaman daha doğru olur.

gerçek şu ki, FF'nin tasarım aşamasında, tepe noktaları sonsuza (aşağı veya yukarı) olan süreksizlikleri olan "yüzeyler" elde edebilirsiniz, ancak FF çıktıda doğru değeri döndürmelidir, bu nedenle tüm sınır koşulları zaten alınmıştır FF'de hesaba katılmalıdır, böylece FF'nin hatasından kaynaklanan bir çökme olmaz.

Bu nedenle, parametreleri izin verilen sınırlara kadar kesmek ve FF'yi bu tür parametrelerle hesaplamak ve ne olduğunu açıkça vermekten daha iyi olduğunu düşünüyorum - DBL_MAX'i yanlış bir parametreyle.

Katılımcılar parametreler üzerindeki kısıtlamaları bilir ve bunlara uymak zorundadır, aksi takdirde algoritmaların her bir özel durumunda cevaplanması zor olan birçok soru ortaya çıkar. Ve böylece tüm algoritmaları eşit koşullara getiriyoruz.

not ....şimdi sorularla dolduracaklar "tasarım aşamasında nasıl?!! FF'yi kimse bilmeyecek dedin!!!".... böyle bir soru soracak olanlar için - önce konuyu oku.

 
Aralık sayıları neden kesirlidir? 0,1'lik artışlarla -10,0 ila 10 yerine, 1'lik artışlarla -100 ila 100 kullanabilirsiniz.
Neden: