MQL5'te OOP hakkında sorular - sayfa 94

 
Igor Makanu :

Kafa kafaya bir çözümle int'den önemli bitleri çıkarabilirim, ancak evrensel bir çözüm yapabilirim ... ama yapamam! ((((

nasıl ve nerede istediğimi açıklamamış olma ihtimali yüksek

4 int / uint bayt var ve optimize edicide paketlemek istediğim veri kümem var

Diyelim ki bu şekilde paketlemeyi başardım:

0-8 9-16 17-24 25-32
int_11 int_9 int_12

ne türlere ihtiyacım var int_XXX Henüz düşünmedim

ama bunun gibi bir kod biçiminde kullanılabilirliğe sahip olmak istiyorum

genel olarak, beklendiği gibi çalışıyor

 //+------------------------------------------------------------------+
// value - значение
// pos - бит начала числа
// cnt_bits - общее количество занимаемых бит
//+------------------------------------------------------------------+
int BitsToInt( const uint value , const uint pos, const uint cnt_bits)
{
   uint mask_value = ( 0x7FFFFFFF >> ( sizeof ( uint ) * 8 - cnt_bits)) << pos;
   uint mask_sign = 1 << (pos + cnt_bits - 1 );
   int sign = ( bool )( value & mask_sign) ? - 1 : 1 ;
   return (sign * ( int )(( value & mask_value) >> pos));
}
//+------------------------------------------------------------------+
void OnStart()
{
   uint v = 0x7F << 12 ;
   Print(BitsToInt(v, 12 , 8 ));   // 127
   v = 0xFF << 12 ;
   Print(BitsToInt(v, 12 , 8 ));   // -127
}
//+------------------------------------------------------------------+

... bitleri tekrar saymasan kötü olur (((

 
Igor Makanu :

genel olarak, beklendiği gibi çalışıyor

... bitleri tekrar saymasan kötü olur (((

Müstehcen soru, hangi amaçla ritimleri kovalıyoruz?

 
Alexandr Andreev :

Müstehcen soru, hangi amaçla ritimleri kovalıyoruz?

bu oyundan ilk mesajda yazdı

optimize edilecek parametre sayısını azaltmak gereklidir - kritik değil

ve optimize edicinin GA'sının çok hızlı bir şekilde birleşmemesi için Gray kodunu yeni "int" optimize edilmiş parametreye uygulamak istiyorum - Wiki

 
Igor Makanu :

genel olarak, beklendiği gibi çalışıyor

... bitleri tekrar saymasan kötü olur (((

5 ise, 32-bit int'ler nadiren mantıklıdır, neredeyse hiçbir zaman (yalnızca döngü sayaçları ve boyut birimleri olarak ve hatta o zaman alışkanlık dışı olarak)

Ve 64'te her şey bit kayması olmadan sığacak ..

Bu arada, 4 olsa bile, 64 bitlik değerlerde, örneğin çift olarak paketlemenin maliyeti hala var - talep var

 
Maxim Kuznetsov :

Ve 64'te her şey bit kayması olmadan sığacak ..

işe yaramaz, uzunlar test cihazında optimize edilmemiş, birkaç ay önce nedenini sordum - cevap vermediler

uint - ayrıca, bence, bir sorun vardı ... optimizasyon sırasında maksimum değerin kullanılmasına izin verilmedi gibi görünüyor

bu nedenle yalnızca int ve bu (büyük olasılıkla) yeni yapılarda yanlış çalışmayacaktır

 
Igor Makanu :

işe yaramaz, uzunlar test cihazında optimize edilmemiş, birkaç ay önce nedenini sordum - cevap vermediler

uint - ayrıca, bence, bir sorun vardı ... optimizasyon sırasında maksimum değerin kullanılmasına izin verilmedi gibi görünüyor

bu nedenle yalnızca int ve bu (büyük olasılıkla) yeni yapılarda yanlış çalışmayacaktır

uzun bir ay değil boş bir döngü üzerinde yineleme

ilk birkaç bitin boyut, ardından kayıt olduğu kendi formatınızı oluşturmanız sizin için daha kolay. Ve bir satırdaki her şeyi bir bayt dizisine yazın.

Bayt dizisi diğer dizilere kolayca kopyalanır.

 
Alexandr Andreev :

uzun bir ay değil boş bir döngü üzerinde yineleme

öyle, ama uzun zamandır ideal TS arayışının peşinde değilim - Optimizer'ın veritabanında ne bulduğunu yazıyorum, ancak sorun GA'nın bir grup parametre etrafında yakınsaması, bu yüzden karar verdim. GA'yı bilimsel bir yaklaşımla neşelendirmeye çalışın)))


Alexandr Andreev :

ilk birkaç bitin boyut, ardından kayıt olduğu kendi formatınızı oluşturmanız sizin için daha kolay. Ve bir satırdaki her şeyi bir bayt dizisine yazın.

Test etmem gerekiyor, ama şimdilik Gray'in kodunun ve optimize edilmiş parametrelerin int içinde gruplandırılmasıyla yaptığım manipülasyonların GA yakınsama sorununu çözeceğini umuyorum... Göreceğiz, her şey istediğimiz kadar hızlı değil

 
Igor Makanu :

işe yaramaz, uzunlar test cihazında optimize edilmemiş, birkaç ay önce nedenini sordum - cevap vermediler

uint - ayrıca, bence, bir sorun vardı ... optimizasyon sırasında maksimum değerin kullanılmasına izin verilmedi gibi görünüyor

bu nedenle yalnızca int ve bu (büyük olasılıkla) yeni yapılarda yanlış çalışmayacaktır

Optimize ediciye parametre koyarsanız, böyle koyabilirsiniz?

bir yandan, double ayarlayabilirsiniz, daha fazla mantis 32'ye sahiptir, ancak profilde double<->string dönüşümleriyle karşılaşabilirsiniz.

 
Maxim Kuznetsov :

Optimize ediciye parametre olarak koyduğunuz gibi olsun?

Numara

10'dan fazla optimize edilmiş parametre var, optimizasyon sınırlarını ben belirliyorum - her şey akıllıca çalışıyor, ancak GA 2 parametre etrafında birleşebilir ve bu kadar - daha fazla optimizasyon yapmanın bir anlamı yok

parametreleri gruplamanız ve gruplar halinde çalıştırmanız veya optimizasyonu yeniden başlatmanız ve önbellekleri temizlemeniz gerekir.

genel olarak, bir deney istiyorum, ama ya Wiki GA hakkında gerçeği yazarsa?

Gri kodlar, tamsayılarla temsil edilen genetik özellikleri kodlamak için genetik algoritmalar teorisinde [3] yaygın olarak kullanılmaktadır.

 
Igor Makanu :

Numara

10'dan fazla optimize edilmiş parametre var, optimizasyon sınırlarını ben belirliyorum - her şey akıllıca çalışıyor, ancak GA 2 parametre etrafında birleşebilir ve bu kadar - daha fazla optimizasyon yapmanın bir anlamı yok

parametreleri gruplamanız ve gruplar halinde çalıştırmanız veya optimizasyonu yeniden başlatmanız ve önbellekleri temizlemeniz gerekir.

genel olarak, bir deney istiyorum, ama ya Wiki GA hakkında gerçeği yazarsa?

Gri kodlar bazen veri aktarım protokollerinde kullanılır, çünkü. Aslında onlar için yapılmışlar :-)

GA hakkında daha çok "kırmızı bir kelime için". Peki, Gray kodu yakınsamaya nasıl yardımcı olabilir? bu sadece teorik...

aynı başarı ile rastgele karıştırabilirsiniz