Algoritmaların optimizasyonu. - sayfa 3

 
joo :

Sektörlerin genişliği dizideki değerlerle eşleşemez, aksi takdirde algoritma hiçbir sayı için çalışmayacaktır.

Rakamların birbirleri arasındaki mesafe önemlidir. Tüm sayılar ilkinden ne kadar uzaksa, düşme olasılıkları o kadar az olur. Aslında, 0,01 faktörüyle ayarlanmış sayılar arasındaki mesafelerle orantılı sayısal bir düz çizgi parçaları ayırdık, böylece son sayının düşme olasılığı ilkinden en uzak olan 0'a eşit değil. Katsayı ne kadar yüksek olursa, sektörler o kadar eşit olur. Ekli excel dosyası, deneme.

1. Teorik olasılıkların hesaplanması Excel'de verilmiştir. İlk sayı en yüksek olasılıktır, son sayı en düşük olasılıktır ancak 0'a eşit değildir.

2. Kümenin azalan düzende sıralanması koşuluyla, hiçbir sayı kümesi için negatif sektör boyutları asla olmaz - ilk sayı en büyüktür (kümedeki en büyük sayıyla ancak negatif bir sayıyla çalışır).

Anlamadım, ancak olasılık teorisine yaklaşımınızı zaten beğeniyorum, şu anahtar cümlede ifade ediliyor: "Sayıların aralarındaki mesafe önemlidir. Tüm sayılar birinciden ne kadar uzaksa, o kadar az olasıdırlar. düşmek ...” ve çift iki (kontrol çekimi): " Dizinin bir öğesini rastgele seçmeyi mi öneriyorsunuz? - bu şekilde dizinin sayıları arasındaki mesafe dikkate alınmaz ve bu nedenle seçenek işe yaramaz.".! Mantıklı bir soru: Beyin çıkarma, program yazma mantığını geliştirmek için zorunlu bir egzersiz mi? Belki amatör bir kodlayıcı olarak daha iyi kalırım, sağlık için daha faydalıdır.

Ve olasılık teorisi ile arkadaşsanız, o zaman ruletin mantığı 0 ila 36 aralığında rastgele bir sayı üretecidir (rulet sıradan ise, Avrupa, çift sıfır gibi Amerikan sorunları olmadan vb. .. .).

 
Wangelys :

Anlamadım, ancak olasılık teorisine yaklaşımınızı zaten beğeniyorum, şu anahtar cümlede ifade ediliyor: "Sayıların aralarındaki mesafe önemlidir. Tüm sayılar birinciden ne kadar uzaksa, o kadar az olasıdırlar. düşmek ...” ve çift iki (kontrol çekimi): " Dizinin bir öğesini rastgele seçmeyi mi öneriyorsunuz? - bu şekilde dizinin sayıları arasındaki mesafe dikkate alınmaz ve bu nedenle seçenek işe yaramaz.".! Mantıklı bir soru: Beyin çıkarma, program yazma mantığını geliştirmek için zorunlu bir egzersiz mi? Belki amatör bir kodlayıcı olarak daha iyi kalırım, sağlık için daha faydalıdır.

Ve olasılık teorisi ile arkadaşsanız, o zaman ruletin mantığı 0 ila 36 aralığında rastgele bir sayı üretecidir (rulet sıradan ise, Avrupa, çift sıfır gibi Amerikan sorunları olmadan vb. .. .).

Aslında kumarhane ruleti, bu başlıktaki en az üç kişinin zaten aşık olduğu bir metafordan başka bir şey değildir.

 
joo :

Aslında kumarhane ruleti, bu başlıktaki en az üç kişinin zaten aşık olduğu bir metafordan başka bir şey değildir.

- Evet, evet, her şeyi anlıyorum! Ezop dili!

Pardon, nerede duymadım?

 
Wangelys :

- Evet, evet, her şeyi anlıyorum! Ezop dili!

Pardon, nerede duymadım?

Robert Sheckley mi?
 
joo :

Sektörlerin genişliği dizideki değerlerle eşleşemez, aksi takdirde algoritma hiçbir sayı için çalışmayacaktır.

Rakamların birbirleri arasındaki mesafe önemlidir. Tüm sayılar ilkinden ne kadar uzaksa, düşme olasılıkları o kadar az olur. Aslında, 0,01 faktörüyle ayarlanmış sayılar arasındaki mesafelerle orantılı sayısal bir düz çizgi parçaları ayırdık, böylece son sayının düşme olasılığı ilkinden en uzak olan 0'a eşit değil. Katsayı ne kadar yüksek olursa, sektörler o kadar eşit olur. Ekli excel dosyası, deneme.

1. Teorik olasılıkların hesaplanması Excel'de verilmiştir. İlk sayı en yüksek olasılıktır, son sayı en düşük olasılıktır ancak 0'a eşit değildir.

2. Kümenin azalan düzende sıralanması koşuluyla, hiçbir sayı kümesi için negatif sektör boyutları asla olmaz - ilk sayı en büyüktür (kümedeki en büyük sayıyla ancak negatif bir sayıyla çalışır).

Bu, IMHO'nun gerçek bir ifadesi değil.

имеем массив
 double a[ 10 ]={ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 };
какова вероятность выпадения каждого?
 55 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 ;
 double b[ 10 ]={ 1 / 55 , 2 / 55 , 3 / 55 , 4 / 55 , 5 / 55 , 6 / 55 , 7 / 55 , 8 / 55 , 9 / 55 , 10 / 55 };
те вероятность выпадения [ 0 ] в 10 раз меньше чем [ 9 ].
теперь разметим массив где эти вероятности будут отображены
 double с[ 10 ]={ 1 , 3 , 6 , 10 , 15 , 21 , 28 , 36 , 45 , 55 };
теперь при выпадении чисел от 1 до 55 , если ранд 55 <= c[x], то имеем нужный индекс.
для того чтоб работало и для отрицательных чисел нужно сдвинуть значения на 1 -с[ 0 ].

теперь посмотрим изменяться ли вероятности при изменении чисел...
 double a[ 10 ]={ 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 };
какова вероятность выпадения каждого?
 110 = 2 + 4 + 6 + 8 + 10 + 12 + 14 + 16 + 18 + 20 ;
 2 / 110 == 1 / 55
 double b[ 10 ]={ 1 / 55 , 2 / 55 , 3 / 55 , 4 / 55 , 5 / 55 , 6 / 55 , 7 / 55 , 8 / 55 , 9 / 55 , 10 / 55 };
те вероятность выпадения [ 0 ] в 10 раз меньше чем [ 9 ], 
вероятность выпадения не изменилась, 
т.к. она измеряется относительно среднего рассчитанного по всему массиву.

 

İkinci olarak, [] ile olasılık dizisinin hesaplanması epoch başına bir kez gereklidir, bu da fonksiyonun RoletEpoh() ve RoletRand()'a bölünmesi gerektiği anlamına gelir.

Joo başlangıçta bundan bahsetmiş olsa da.

ancak ivmenin kendisi yalnızca c[] dizisinde bırakılan değer aranarak elde edilebilir.

Standart İncil burada yardımcı olabilir, yani hızlı arama yöntemleri.

Ve yeniden işlenmiş yöntemlerini MQL5'teki Elektronik Tablolar makalesinden almak daha iyidir.

ZY, makalenin, azalan düzende sıralanmış dizilerde arama yapma yöntemlerinin bir uyarlamasına sahipken, standart olanda yalnızca artan düzende (belki de uzun zamandır yanılıyorum, standart İncil'e tırmanmadım) .

 
joo :
Robert Sheckley mi?
Hayır, biraz daha kolay - Odessa'da Privoz, Sheckley'i de sevmeme rağmen (neredeyse şekel yazıyordum). Ancak bu konudaki tüm katılımcılar bir sonraki metaforunuzu "yakaladı":
joo :
Burada algoritma mantığının optimal inşası problemlerini tartışmayı öneriyorum.
-çünkü burada olanların "algoritma mantığının optimal inşası" görevinin formülasyonu kapsamına girme olasılığı düşük - bu daha çok kodlama yöntem ve tekniklerini geliştirmeye benziyor ... yoksa yanılıyor muyum?
 
Wangelys :
"algoritma mantığının en uygun şekilde yapılandırılması" görevleri - daha çok kodlama yöntem ve tekniklerini geliştirmeye benziyor ... yoksa yanılıyor muyum?

Genel iş parçacığı:

"Birisi algoritmasının hız (veya görünürlük) açısından optimal bir mantığa sahip olduğundan şüphe ederse, hoş geldiniz."

Spesifik olarak, görevim "... lütfen daha hızlı bir seçenek önerin ..." idi. Daha hızlı! Algoritmamın doğru görüp görmediğini sormadım, bu durumda sadece daha hızlı olması gerekiyor, yani birisi algoritmanın başka bir versiyonunu sunuyorsa, sonucu tam olarak benimki gibi vermeli, başka bir şey değil. Ve nedense herkes kendine ait bir şey düşünmeye başladı.


Tamam, hızlanma sorunum çözüldü. :)

 
Wangelys :

- Evet, evet, her şeyi anlıyorum! Ezop dili!

Pardon, nerede duymadım?

Genetik algoritmalardan geliyor.
Генетические алгоритмы - это просто!
Генетические алгоритмы - это просто!
  • 2010.05.25
  • Andrey Dik
  • www.mql5.com
В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.
 
Şimdi bir sorunum var. Kopyalama öğelerinin (yani öğeleri hacimli, "ağır" yapılar, sınıf nesneleri , uzun dizeler vb. olan) "maliyeti" olan dizilerin verimli bir şekilde sıralanması gerekir. Sağduyu, onları yerinde bırakmanız ve yerine bir tür işaretçi ile sıralamanız gerektiğini belirtir - orijinal konumlarının hücre dizinleri. Buradan daha fazla alıntı: https://www.mql5.com/en/forum/6476#comment_178318
Если прямо тут перевести в подобие "техзадания" , то нужна функция, на вход берущая массив и возвращающая 
второй массив ( int ), элементы которого являются индексами элементов входного массива, расположенными 
по убыванию (возрастанию).

В идеальном случае сделать перегрузки для всех стандартных типов + CObject (при обязательном требовании
к реализации функции Compare() у наследников CObject).  Хотелось бы и для структур, но похоже на стороне
разработчика никак не решаемо - виртуальных функций у структур нет (и не надо!), т.е. юзерскую функцию
Compare() не пришить, а "стандартное" отношение порядка для структур, естественно, не определено.  
Şimdilik saygın terminal geliştiricilerini sayısız güncel görevleriyle bırakalım ve mql5'te uygulayalım.