최적화 알고리즘 챔피언십. - 페이지 3

 
Andrey Dik :

*.ex 회원의 라이브러리는 기본적으로 알고리즘을 참조하는 통합된 방법이어야 합니다. 알고리즘은 이 표준 라이브러리에 꿰매어질 수 있거나 함수를 통해 이 라이브러리에서 자체 알고리즘을 자유롭게 호출할 수 있습니다.

그리고 참가자에게 어떤 기능을 제공합니까? 참가자가 그에게 무언가를 줄 것인가, 줄 것인가? 말장난, 나는 당신을 잘 이해하지 못했습니다.

참가자에게 조사된 기능(ff)을 제공합니다. 그는 최대 또는 최소를 찾을 것입니다. 그의 검색 알고리즘은 자연스럽게 그의 라이브러리에 있을 것입니다.

어떤 의미에서는 기능 자체를 제공하지 않고(코드 전송), 챔피언십 기간 동안 어떻게든 참가자의 코드로 전달합니다.

 

FF 알고리즘은 제공할 필요가 없습니다.

스크립트는 가져오기 를 통해 성경에서 최적화할 매개변수 배열을 요청합니다.

스크립트는 이 배열을 성경 FF에 전달하고 결과를 반환합니다.

스크립트는 참가자의 성경에 결과를 전달합니다

스크립트는 참가자의 서비스 기능을 호출합니다. 필요한 경우 알고리즘이 작업을 수행하거나 내부의 빈 기능일 뿐입니다.

모바일에서 작성, 죄송합니다

 
Andrey Dik :

FF 알고리즘은 제공할 필요가 없습니다.

스크립트는 가져오기를 통해 성경에서 최적화할 매개변수 배열을 요청합니다.

스크립트는 이 배열을 성경 FF에 전달하고 결과를 반환합니다.

스크립트는 참가자의 성경에 결과를 전달합니다

스크립트는 참가자의 서비스 기능을 호출합니다. 필요한 경우 알고리즘이 작업을 수행하거나 내부의 빈 기능일 뿐입니다.

모바일에서 작성, 죄송합니다

불명. 코드의 예를 기다려 보겠습니다.
 

부분적으로 명확하지만 특히 jo))를 통해 명확합니다.

멤버 함수가 호출 될 때 이 함수는 작업의 한 단계를 수행해야 합니다. 머리에 씌워야 합니다. 이것에 대해 생각하고 싶은 마음이 없습니다. 따라서 작업은 어렵고 인위적인 복잡성으로 인해 복잡해집니다.

두 가지 옵션:

1. 위에서 설명한 ff가 있는 클래스.

2. 자신의 라이브러리에 있는 참가자가 ff를 사용하여 라이브러리를 가져옵니다. 검사관이 자신의 것으로 교체합니다.

다른 옵션은 없습니다. 가능한 경우 함수에 대한 포인터를 전달하지 않는 한(하지만 지금까지 아무도 도움말을 볼 수 있는 위치를 제안하지 않았습니다). 참가자는 ff 함수를 호출할 수 있는 충분한 기회가 있어야 합니다.

 

일반적으로 이와 같은 것이며 물론 시간 카운터가 있을 것입니다. 스케치:

 #import "oa.ex5" // алгоритм оптимизации участника
void    ServiceFunc1 (); 
int     GetReplaysCount (); // запрос количества запусков ФФ (у участника может быть свой размер колонии или нечто подобное если это не ГА 
void    GetOptParam ( double &param []); 
void    ServiceFunc2 (); 
bool    StopAlgo ();         // этой функцией участник по желанию может остановить оптимизацию
int     GetEpochCount ();   // если участник желает использовать своё фиксированное значение "эпох"
void    SendFFvolue ( double &volue); 
double GetMaxFF (); 
#import

#import "ff.ex5" // тестовая фитнес функция чемпионата, не известна участникам 
double GetFFvolue ( double &param []); // передаём в ФФ оптимизируемые параметры, получаем результат ФФ 
#import

void OnStart () 
{ 
   bool    stopAlgo = false ; 
   int     epoch = GetEpochCount (); 
   int     maxEpochPossible = 1000 ; 
   double param []; 
   double volue; 
   int     epochCNT = 0 ; 
   int     ffCNT = 0 ; 
  
   double FFvolue = - DBL_MAX ; 
  
  ServiceFunc1 (); 
   while (!stopAlgo) 
  {
     for ( int i = 0 ; i < GetReplaysCount (); i++) 
    {
      GetOptParam (param); 
      volue = GetFFvolue (param); 
      ffCNT++; 
      SendFFvolue (volue);
    }
    ServiceFunc2 (); 
    
    epochCNT++; 
    
     if (epochCNT >= epoch) 
      stopAlgo = true ; 
    
     if (epochCNT >= maxEpochPossible) 
      stopAlgo = true ;
  }
  
   Print ( "Epoch: " + ( string )epochCNT + " ; FF starts: " + ( string )ffCNT + " ; MaxFF: " + ( string )GetMaxFF ());
} 
 
Dmitry Fedoseev :

참가자는 ff 함수를 호출할 수 있는 충분한 기회가 있어야 합니다.

아니, 그러면 안 된다. 그러나 그렇게 하지 않으면 일반 테스터의 Expert Advisors에서 내부 최적화를 사용할 수 있고 그렇게 하면 거래자를 위한 실용적인 응용 프로그램이 거의 없기 때문입니다.

내 기사는 알고리즘에서 FF가 호출되는 예를 보여줍니다. 이것은 범위를 좁힙니다. 누군가가 기사에서 알고리즘을 가져오면(규칙에 의해 금지되지 않음) 그러한 내부 FF 호출을 제거하기 위해 독창성을 사용해야 합니다.

 
Andrey Dik :

일반적으로 이와 같은 것이며 물론 시간 카운터가 있을 것입니다. 스케치:

아니요, 채널하지 않습니다)) 이러한 접근 방식입니다. 참가자는 사이클을 돌릴 수 있어야 합니다. 단일 작업은 ff에 대한 여러 호출을 전제로 합니다.
 
Andrey Dik :
아니, 그러면 안 된다. 하지만 그렇게 하지 않으면 표준 테스터의 전문 고문에서 내부 최적화를 사용할 수 있고, 그렇게 해야 한다면 트레이더를 위한 실용적인 응용 프로그램이 거의 없기 때문에 해서는 안 됩니다.
봐, 나는 위에서 보편적인 방법을 제시했다. 그리고 중개자를 통한 일회성 호출의 경우 검색 기능에 대한 매우 심각한 적응이 필요합니다. 이는 뇌를 뽑아내고 sn을 통해 제자리에 삽입해야 하기 때문에 아무도 하지 않을 것입니다.
 
Dmitry Fedoseev :
아니요, 채널하지 않습니다)) 이러한 접근 방식입니다. 참가자는 사이클을 돌릴 수 있어야 합니다. 단일 작업은 ff에 대한 여러 호출을 전제로 합니다.
죄송합니다. 외부에서 주기를 제어합니다. 모든 마늘. :)
 
Andrey Dik :
죄송합니다. 외부에서 주기를 제어합니다. 모든 마늘. :)
아니요. ff 함수는 호출을 계산해야 합니다.