MQL5의 OOP에 대한 질문 - 페이지 94

 
Igor Makanu :

정면 솔루션을 사용하여 int에서 중요한 비트를 추출할 수 있지만 보편적인 솔루션을 만들 수는 있지만 ... 할 수 없습니다! (((

그가 내가 원하는 방법과 장소를 설명하지 않았을 가능성이 큽니다.

4 int / uint 바이트가 있고 옵티마이저에서 압축 을 풀고 싶은 데이터 세트가 있습니다.

다음과 같이 포장했다고 가정해 보겠습니다.

0-8 9-16 17-24 25-32
int_11 정수_9 int_12

어떤 유형이 필요합니까 int_XXX 아직 생각하지 못했습니다

그러나 나는 이와 같은 코드 형태로 유용성을 갖고 싶습니다.

일반적으로 예상대로 작동합니다.

 //+------------------------------------------------------------------+
// 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
}
//+------------------------------------------------------------------+

... 비트를 다시 세지 않으면 좋지 않습니다(((

 
Igor Makanu :

일반적으로 예상대로 작동합니다

... 비트를 다시 세지 않으면 좋지 않습니다(((

무분별한 질문, 우리는 무엇을 위해 비트를 쫓고 있습니까?

 
Alexandr Andreev :

무분별한 질문, 우리는 무엇을 위해 비트를 쫓고 있습니까?

이 연극의 첫 번째 메시지에 적힌

최적화할 매개변수의 수를 줄이는 것이 필요합니다. 중요하지 않습니다.

옵티마이저의 GA가 너무 빨리 수렴하지 않도록 그레이 코드를 새로운 "int" 최적화 매개변수에 적용하고 싶습니다. - Wiki

 
Igor Makanu :

일반적으로 예상대로 작동합니다

... 비트를 다시 세지 않으면 좋지 않습니다(((

5인 경우 32비트 int는 거의 의미가 없으며 거의 의미가 없습니다(루프 카운터 및 크기 단위로만, 그리고 습관적으로도 사용되지 않음).

그리고 64에서는 비트 시프트 없이 모든 것이 맞을 것입니다.

그건 그렇고, 그것이 4 인 경우에도 64 비트 값을 포장하는 데 여전히 비용이 듭니다. 예를 들어 이중으로 - 수요가 있습니다.

 
Maxim Kuznetsov :

그리고 64에서는 비트 시프트 없이 모든 것이 맞을 것입니다.

작동하지 않습니다. long은 테스터에서 최적화되지 않았습니다. 몇 달 전에 이유를 물었습니다. 답변을 제공하지 않았습니다.

uint - 또한 제 생각에는 뭔가 버그가 있었던 것 같습니다 ... 최적화 중에 최대 값을 사용할 수없는 것 같습니다.

따라서 int 및 this(대부분)만 새 빌드에서 잘못 작동하지 않습니다.

 
Igor Makanu :

작동하지 않습니다. long은 테스터에서 최적화되지 않았습니다. 몇 달 전에 이유를 물었습니다. 답변을 제공하지 않았습니다.

uint - 또한 제 생각에는 뭔가 버그가 있었던 것 같습니다 ... 최적화 중에 최대 값을 사용할 수없는 것 같습니다.

따라서 int 및 this(대부분)만 새 빌드에서 잘못 작동하지 않습니다.

long이 한 달이 아닌 빈 주기를 반복합니다.

그러면 처음 몇 비트가 크기이고 그 다음이 레코드인 고유한 형식을 만드는 것이 더 쉽습니다. 그리고 행의 모든 것을 바이트 배열에 씁니다.

바이트 배열은 다른 배열로 쉽게 복사됩니다.

 
Alexandr Andreev :

long이 한 달이 아닌 빈 주기를 반복합니다.

하지만 저는 오랫동안 이상적인 TS를 추구하지 않았습니다. 옵티마이저가 데이터베이스에서 찾은 내용을 작성하지만 문제는 매개변수 그룹을 중심으로 GA가 수렴된다는 것입니다. 그래서 저는 과학적 접근 방식으로 GA를 격려하십시오)))


알렉산드르 안드레예프 :

그러면 처음 몇 비트가 크기이고 그 다음이 레코드인 고유한 형식을 만드는 것이 더 쉽습니다. 그리고 행의 모든 것을 바이트 배열에 씁니다.

테스트가 필요하지만 지금은 Gray의 코드와 int의 최적화된 매개변수 그룹화를 사용한 조작이 GA 수렴 문제를 해결할 수 있기를 바랍니다. 모든 것이 원하는 만큼 빠르지는 않습니다.

 
Igor Makanu :

작동하지 않습니다. long은 테스터에서 최적화되지 않았습니다. 몇 달 전에 이유를 물었습니다. 답변을 제공하지 않았습니다.

uint - 또한 제 생각에는 뭔가 버그가 있었던 것 같습니다 ... 최적화 중에 최대 값을 사용할 수없는 것 같습니다.

따라서 int 및 this(대부분)만 새 빌드에서 잘못 작동하지 않습니다.

옵티마이저에 매개변수를 지정합니까?

한편으로 double을 설정할 수 있고 mantis 32가 더 많지만 프로필에서 double<->문자열 변환이 발생할 수 있습니다.

 
Maxim Kuznetsov :

옵티마이저에 매개변수를 지정합니까?

아니요

최적화된 매개변수가 10개 이상 있습니다. 최적화 제한을 설정했습니다. 모든 것이 원활하게 작동하지만 GA는 약 2개의 매개변수를 수렴할 수 있으며 그게 전부입니다. 더 이상 최적화할 의미가 없습니다.

매개변수를 그룹화하고 그룹으로 실행하거나 최적화를 다시 시작하고 캐시를 지워야 합니다.

일반적으로 나는 실험을 원하지만 Wiki가 GA에 대한 진실을 쓴다면

그레이 코드는 정수로 표현되는 유전 형질을 인코딩하기 위한 유전 알고리즘 이론[3]에서 널리 사용됩니다.

 
Igor Makanu :

아니요

최적화된 매개변수가 10개가 넘습니다. 최적화 한계를 설정했습니다. 모든 것이 잘 작동하지만 GA는 약 2개의 매개변수를 수렴할 수 있습니다. 더 이상 최적화할 의미가 없습니다.

매개변수를 그룹화하고 그룹으로 실행하거나 최적화를 다시 시작하고 캐시를 지워야 합니다.

일반적으로 나는 실험을 원하지만 Wiki가 GA에 대한 진실을 쓴다면

그레이 코드는 때때로 데이터 전송 프로토콜에 사용됩니다. 사실 그들은 그들을 위해 만들어졌습니다 :-)

"빨간 단어"보다는 GA에 대해. 그레이 코드가 수렴에 어떻게 도움이 될까요? 그건 그냥 이론상...

동일한 성공으로 무작위로 혼합 할 수 있습니다