전략 테스터의 최적화 - 페이지 7

 

간단히 말해서:

  • 64도까지 검색 필드 2를 충족하는 것이 합리적입니다.
  • 합리적인 행동은 모든 반복 변수를 최대로 비틀지 않고 검색 영역의 예비 추정치입니다.

Rashid, 거의 누구도 직접 열거를 결정하지 않을 것입니다. 2^64 유전자 최적화 프로그램은 쉽게 확인할 수 있지만, 그렇다고 해서 무제한 검색 영역을 설정해야 하는 것은 아닙니다. 결국 우리는 이 영역에 대한 유전자를 생성한 다음 조작해야 합니다.

 
Rosh :

좋아, 계산하자. 테스터의 한 패스에 1초가 걸리도록 한 다음 패스 수 2^64-1을 60으로 나누고 최적화 시간을 분 단위로 구합니다( 18 446 744 073 709 551 615/60).

또한 이 시간을 8(컴퓨터의 경우 8코어)로 나누고 8코어에서 이 패스 수로 최적화 시간을 얻습니다. 몇 시간 또는 며칠이 걸릴까요?

계산할 필요가 없습니다. 직접 열거를 말하는 것이 아닙니다. 유전자 알고리즘 이 필요한 양을 결정하게 하십시오.

과학자들에 따르면 인간의 뇌와 비교할 때 뇌에는 약 10^10개의 뉴런이 있고 각 뉴런에는 약 10^4개의 시놉틱 연결이 있습니다.

우리 모두가 추구하는 것, 점점 더 발전된 프로그램을 만드는 것.

클라우드 컴퓨팅은 무엇을 위한 것이었습니까? 덕분에 사용자는 한 대의 컴퓨터로 제한될 수 없으며 많은 감사를 드립니다.

Генетические алгоритмы - это просто!
Генетические алгоритмы - это просто!
  • 2010.05.25
  • Andrey Dik
  • www.mql5.com
В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.
 
Renat :

간단히 말해서:

  • 64도까지 검색 필드 2를 충족하는 것이 합리적입니다.
  • 합리적인 행동은 모든 반복 변수를 최대로 비틀지 않고 검색 영역의 예비 추정치입니다.

Rashid, 아무도 직접 열거를 결정할 것 같지 않습니다. 2^64 유전자 최적화 프로그램은 쉽게 확인할 수 있지만, 그렇다고 해서 무제한 검색 영역을 설정해야 하는 것은 아닙니다. 결국 우리는 이 영역에 대한 유전자를 생성한 다음 조작해야 합니다.

64분의 2라는 것은 고안된 문제입니다.

유전 알고리즘에서는 최악의 결과를 저장할 필요가 없습니까?

모든 변수를 최대한 풀지 못하게 하는 것은 무엇입니까?

유전자와 2^64의 관계가 뭔지 이해가 안가네요?

Генетические алгоритмы - это просто!
Генетические алгоритмы - это просто!
  • 2010.05.25
  • Andrey Dik
  • www.mql5.com
В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.
 

마찬가지로 많은 변수(예 : 신경망 )를 통해 정렬하는 것이 유용할 수 있으며 이 제한은 어떻게 든 그다지 좋지 않습니다.

그래서 우리는 제한으로부터의 자유를 희망합니다))

 

분명히 전략 테스터는 염색체의 이진 인코딩과 함께 GA를 사용합니다.

나는 인용 할 것이다:

" 그러나 염색체의 이진 표현은 고차원의 연속적인 공간에서 검색할 때 특정한 어려움을 수반하며 , 표현형 의 높은 정확도 가 요구되는 경우 허용 가능한 값의 전체 간격이 허용된다는 사실에 기초하여 특별한 기술이 사용됩니다 객체의 특징 [ai,bi]는 필요한 정확도로 섹션으로 나뉩니다. 지정된 정확도 p는 다음 식에 의해 결정됩니다 .


여기서 N은 비트 문자열을 인코딩할 비트 수입니다.

이 공식은 p가 N에 강하게 의존한다는 것을 보여줍니다. 표현 정확도는 하나의 염색체를 인코딩하는 데 사용되는 비트 수에 의해 결정됩니다. 따라서 N이 증가할수록 탐색 공간이 확장되어 거대해진다. 잘 알려진 책의 예: 100개의 변수가 간격 [-500; 500], 소수점 이하 여섯째 자리까지 극한값을 구해야 합니다. 이 경우 이진 인코딩으로 GA를 사용할 때 문자열의 길이는 3000개 요소가 되고 검색 공간은 약 10 1000 염색체가 됩니다.

따라서 일반 옵티마이저에서 최대 64개의 최적화된 매개변수로 제한되는 비교적 작은 신경망도 훈련할 수 없습니다. 한 가지 더 불편한 점이 있습니다. 최적화된 변수의 매개변수를 수동으로 채우는 과정은 변수가 많으면 매우 힘들 것입니다. 따라서 프로그래밍 방식으로 최적화된 매개변수를 사용하여 배열을 지정할 수 있는 가능성을 이미 제안했습니다.

하지만 좋은 소식도 있습니다. 테스터와 터미널에서 누락된 모든 것은 표준 MQL5 언어 도구를 사용하여 구현할 수 있습니다. 조금 후에 테스터와 프로그래밍 방식으로 여러 테스트 최적화 문제의 결과를 게시할 것입니다.

 

하지만 테스터의 테스트 작업 결과는 기다리지 않았습니다(기다리는 게 게으르다는 의미에서).

그러나 누구나 스스로 테스트를 수행할 수 있습니다. 이를 위해 기사 의 첫 번째 예를 사용할 수 있습니다. 최적화 모드를 설정하는 것을 잊지 마십시오. 최대값을 검색합니다(최대화만 제공하는 표준 최적화 프로그램과 비교할 수 있음).

순무보다 훨씬 간단하고 아무 것도 하지 않고 사용자 정의 테스트 기능만 계산하는 가장 간단한 Expert Advisor를 작성해 보겠습니다.

 //+------------------------------------------------------------------+
//|                                                  Test expert.mq5 |
//|                                      Copyright 2010, JQS aka Joo |
//|                              https://www.mql5.com/ru/users/joo |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, JQS aka Joo"
#property link       "https://www.mql5.com/ru/users/joo"
#property version   "1.00"
//--- input parameters
input double    x1= 0.0 ;
input double    x2= 0.0 ;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---

//---
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {

  }
//+------------------------------------------------------------------+

double OnTester()
  {
   return
   (
     pow ( cos (( double )( 2 *x1*x1))- 0.11 e1, 0.2 e1)+
     pow ( sin ( 0.5 e0 *( double ) x1)- 0.12 e1, 0.2 e1) -
     pow ( cos (( double )( 2 *x2*x2))- 0.11 e1, 0.2 e1)+
     pow ( sin ( 0.5 e0 *( double ) x2)- 0.12 e1, 0.2 e1)
    );
  }
//+------------------------------------------------------------------+

테스터 창에서 다음과 같이 설정합니다.


"입력 매개변수" 탭에서 다음을 수행하십시오.


그리고 계속하십시오.

대략적인 결론은 다음과 같습니다.

1) 테스터의 옵티마이저는 10-100배 느리게 작동합니다(테스터의 최적화가 2개의 프로세서 코어에서 수행되고 소프트웨어가 1:1로 수행되었음에도 불구하고 저에게 효과적이었습니다). 아마도 이러한 엄청난 차이는 테스터가 직접적인 FF 계산 외에도 로그를 작성하고 화면에 정보를 표시해야 하는 등, 즉 "강제 브레이크"가 있다는 사실 때문일 가능성이 큽니다. 소프트웨어 최적화.

2) 테스터에서 64개 이상의 최적화된 매개변수를 사용하는 것은 불가능합니다(그리고 전문가 생성 마법사에서는 매개변수의 제한이 60개입니다). 따라서 어떤 크기의 신경망을 훈련하는 것도 불가능합니다.

반죽 대체물을 직접 작성하거나 (MQL5는 이것을 "물고기"가 아닌 우수한 "낚싯대"로 허용함) 테스터의 이진 유전자 알고리즘이 연속적인 것으로 대체될 때까지 기다려야 합니다. 최적화된 매개변수의 수가 제거됩니다. 두 번째는 건설적이지 않으므로 첫 번째는 남습니다. :)

전역 추론: MQL5 학습.


추신: 좋은 솔루션은 최적화에 대한 정보(로그, 최적화 그래프) 출력을 비활성화하는 기능을 도입하는 것입니다. 더 나아가 테스터의 성능을 향상시키기 위해 출력 정보의 세부 사항을 사용자 정의하는 기능을 도입하는 것입니다.

 
joo , 그런 작은 계산을 위한 테스터와 옵티마이저를 작성하는 것 외에도 모든 프로세서 코어를 사용하도록 계산 분배기를 만들어야 하고 원격 에이전트를 연결할 수 있어야 합니다(집합 계산을 수행하는 경우). 첫째, 속도 면에서 표준 테스터와 비교할 수 없습니다. 모든 것이 훨씬 느리게 작동하고 둘째, 이 모든 것을 작성하는 데 많은 시간과 수백 킬로바이트의 코드를 소비해야 합니다. 실제로 뭔가?
 
Mr.FreeMan :
joo , 그런 작은 계산을 위한 테스터와 옵티마이저를 작성하는 것 외에도 모든 프로세서 코어를 사용하도록 계산 분배기를 만들어야 하고 원격 에이전트를 연결할 수 있어야 합니다(집합 계산을 수행하는 경우). 첫째, 속도 면에서 표준 테스터와 비교할 수 없습니다. 모든 것이 훨씬 느리게 작동하고 둘째, 이 모든 것을 작성하는 데 많은 시간과 수백 킬로바이트의 코드를 소비해야 합니다. 실제로 뭔가?
joo의 GA는 이미 표준보다 빠르게 작동하며 10번째 스튜디오(멀티코어 프로세서에 맞게 조정됨)에서 코드를 CPP로 전송하면 가속이 6배 더 빨라집니다.
 
Mr.FreeMan :
joo , 그런 작은 계산을 위한 테스터와 옵티마이저를 작성하는 것 외에도 모든 프로세서 코어를 사용하도록 계산 분배기를 만들어야 하고 원격 에이전트를 연결할 수 있어야 합니다(집합 계산을 수행하는 경우). 첫째, 속도 면에서 표준 테스터와 비교할 수 없습니다. 모든 것이 훨씬 느리게 작동 하고 둘째, 이 모든 것을 작성하는 데 많은 시간과 수백 킬로바이트의 코드를 소비해야 합니다. 뭔가 실제로 ?

red Urain 에 대해 답변했습니다.

그리고 환경을 희생시키면서 - 물론 돈 때문입니다. 시간은 돈이다. 나는 일반적으로 천천히 사용하지만, 그 다음에는 빠르게 이동하고(GA를 개발하고 디버깅하는 데 1년 이상을 보냈습니다.) 이제 기사가 게시된 후에도 계속해서 개인적으로 감사 메시지를 받습니다. :)

나는 정규 테스터를 비난하지 않는다. 저는 특별한 주의가 필요한 부분에만 개발자의 관심을 집중시킵니다. 결국 옵티마이저가 아무리 훌륭해도(즉, 테스터가 아니라 옵티마이저), 너무 느리면 모든 이점이 무효가 됩니다.

 

과감한 생각이 떠올랐습니다. 사실, 돼지 고기는 pa하지 않습니까?

MetaQuotes Software Corp 을 사용하게 되어 영광입니다. MetaTrader 5 옵티마이저의 UGA. 물론 프리미엄을 거부하지는 않겠지만 절대적으로 무료입니다.

UGA는 간단하고 효과적입니다. 설정이 매우 유연합니다. 테스터에 "Coarse", "Medium" 및 "Fine"의 3가지 설정 템플릿을 입력할 수 있을 뿐만 아니라 "무엇이 필요한지 정확히 모르는 경우에는 사용하지 마십시오."라는 표시와 함께 고급 설정을 별도로 표시할 수 있습니다. 이 설정에서 아무 것도 변경하지 마십시오." . 그러면 매우 빠른 추정에서 최적의 차량 설정을 위한 정확한 최종 검색에 이르기까지 필요한 수준의 검색 세부 정보로 최적화를 수행할 수 있습니다. 현재 일반 옵티마이저는 자체 구성을 허용하지 않습니다.

Торговая платформа MetaTrader 5 для организации брокерского обслуживания / MetaQuotes Software Corp.
  • www.metaquotes.net
Торговая платформа MetaTrader 5 предназначена для проведения торговых операций на различных финансовый рынках. Терминал обладает большой базой аналитических возможностей и поддерживает более 70 различных инструментов для выполнения технического анализа
사유: