MT 개발자를 위한 것이 아닙니다! INIT_PARAMETERS_INCORRECT를 대체하는 방법? - 페이지 4

 
fxsaber :

나는 매트에 대한 검증 어드바이저를 던졌다. 최적화 모드

이것은 믹싱 패스 없이 전체 열거 모드에서 병렬로 8개의 에이전트에서 최적화 그래프가 보이는 방식입니다(Rand = false).

여기서 에이전트가 일괄 작업을 수행하는 것을 명확하게 볼 수 있습니다.


매개변수에 대한 의존성을 보려면 디스플레이 모드를 전환하십시오.

여기에는 친애하는 포물선이 있습니다. 그 중 맨 위(하나)는 GA를 통해 찾을 것입니다.


셔플 모드(Rand = true)에서는 물론 무차별 대입으로 정점을 찾습니다.


 
fxsaber :

여기에는 친애하는 포물선이 있습니다. 그 중 맨 위(하나)는 GA를 통해 찾을 것입니다.

믹싱하지 않고 GA는 극값을 찾지 못했지만 그것에 가까워졌습니다.

Tester  Best result 0.9992924399999999 produced at generation 0 . Next generation 1
Tester  Best result 0.9992924399999999 produced at generation 0 . Next generation 2
Tester  Best result 0.9992924399999999 produced at generation 0 . Next generation 3
Tester  Best result 0.9992924399999999 produced at generation 0 . Next generation 4
Tester  Best result 0.9992924399999999 produced at generation 0 . Next generation 5
Tester  Best result 0.999424 produced at generation 5 . Next generation 6
Tester  Best result 0.99987456 produced at generation 6 . Next generation 7
Tester  Best result 0.99987456 produced at generation 6 . Next generation 8
Tester  Best result 0.99987456 produced at generation 6 . Next generation 9
Tester  Best result 0.99987456 produced at generation 6 . Next generation 10
Tester  Best result 0.99987456 produced at generation 6 . Next generation 11
Tester  Best result 0.99987456 produced at generation 6 . Next generation 12
Tester  Best result 0.99987456 produced at generation 6 . Next generation 13
Tester  Best result 0.99987456 produced at generation 6 . Next generation 14
Tester  Best result 0.99987456 produced at generation 6 . Next generation 15
Tester  Best result 0.99987456 produced at generation 6 . Next generation 16
Tester  genetic calculation is over
Tester  result cache used 973 times
Tester  genetic optimization finished on pass 1152 (of 10001 )
Statistics      optimization done in 0 minutes 00 seconds
Statistics      local 179 tasks ( 100 %), remote 0 tasks ( 0 %), cloud 0 tasks ( 0 %)

179번의 패스가 필요했습니다. 전체 작업 세트는 10001 패스임을 상기시켜 드리겠습니다. 예, 작업은 매우 간단하지만 여전히 그렇습니다.


이제 셔플 옵션을 사용해 보겠습니다(Rand = true).

Tester  Best result 0.99949824 produced at generation 0 . Next generation 1
Tester  Best result 0.99949824 produced at generation 0 . Next generation 2
Tester  Best result 0.99949824 produced at generation 0 . Next generation 3
Tester  Best result 0.99949824 produced at generation 0 . Next generation 4
Tester  Best result 0.99992256 produced at generation 4 . Next generation 5
Tester  Best result 0.99992256 produced at generation 4 . Next generation 6
Tester  Best result 0.99992256 produced at generation 4 . Next generation 7
Tester  Best result 0.99992256 produced at generation 4 . Next generation 8
Tester  Best result 0.99992256 produced at generation 4 . Next generation 9
Tester  Best result 0.99992256 produced at generation 4 . Next generation 10
Tester  Best result 0.99992256 produced at generation 4 . Next generation 11
Tester  Best result 0.99992256 produced at generation 4 . Next generation 12
Tester  Best result 0.99992256 produced at generation 4 . Next generation 13
Tester  Best result 0.99992256 produced at generation 4 . Next generation 14
Tester  Best result 0.99992256 produced at generation 4 . Next generation 15
Tester  Best result 0.99992256 produced at generation 4 . Next generation 16
Tester  genetic calculation is over
Tester  result cache used 970 times
Tester  genetic optimization finished on pass 1152 (of 10001 )
Statistics      optimization done in 0 minutes 01 seconds
Statistics      local 182 tasks ( 100 %), remote 0 tasks ( 0 %), cloud 0 tasks ( 0 %)

다시 닫습니다. 로그는 182개의 패스가 완전히 계산되었고 970개가 캐시에서 가져온 것으로 명확하게 표시됩니다.


좋은 결과를 얻었으니 간격의 포인트 수를 늘리도록 합시다.

 
fxsaber :

좋은 결과를 얻었으니 간격의 포인트 수를 늘리도록 합시다.

구간의 포인트 수는 백만입니다.


랜드=거짓

Tester  Best result 0.9999999424 produced at generation 3 . Next generation 32
Tester  genetic calculation is over
Tester  result cache used 7533 times
Tester  genetic optimization finished on pass 8704 (of 1000001 )
Statistics      optimization done in 0 minutes 04 seconds
Statistics      local 1171 tasks ( 100 %), remote 0 tasks ( 0 %), cloud 0 tasks ( 0 %)


Rand = true(백만 포인트 중 무작위로 선택된 쌍이 1억 번 교환됨)

Tester  Best result 0.999998294364 produced at generation 10 . Next generation 32
Tester  genetic calculation is over
Tester  result cache used 7452 times
Tester  genetic optimization finished on pass 8704 (of 1000001 )
Statistics      optimization done in 0 minutes 04 seconds
Statistics      local 1252 tasks ( 100 %), remote 0 tasks ( 0 %), cloud 0 tasks ( 0 %)


결과는 내 자신있는 진술이

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MT 개발자를 위한 것이 아닙니다! INIT_PARAMETERS_INCORRECT를 대체하는 방법?

fxsaber , 2018.07.10 16:27

분명히, 철저한 검색을 따른다면 y = x^2입니다. 그런 다음 최적화 문자열을 무작위로 섞고 섞기를 기반으로 새 집합을 만듭니다. 그러면 GA는 포물선의 꼭짓점을 찾지 않습니다.

사실보다 거짓.


한편, 포물선으로 피트니스 함수를 선택한 것은 처음부터 극히 근시안적이었습니다. 1에 가까운 포인트의 수가 롤오버됩니다.


GA에 대한 질문은 단 하나였습니다. 선택한 함수가 이에 이상적이기 때문에 정확한 극값을 혼합하지 않고는 찾을 수 없는 이유는 무엇입니까?

 
fxsaber :

한편, 포물선으로 피트니스 함수를 선택한 것은 처음부터 극히 근시안적이었습니다. 1에 가까운 포인트의 수가 롤오버됩니다.

날카로운 피크가 있는 기능을 선택하면 혼합 후 GA가 여전히 끊어질 것이라고 가정합니다. 그리고 그러한 기능은 차량에 훨씬 더 가깝습니다.

 
fxsaber :

나는 매트에 대한 검증 어드바이저를 던졌다. 최적화 모드

불행히도, 내 지식은 이 모든 것을 이해하기에 충분하지 않습니다)))

나는 더 빨리 결정했다. 일반적으로 EA에 합법적인 체인 파일에 항목을 추가했습니다. 117649 옵션 중 1953개가 허용되는 것으로 밝혀졌다.참고로 3일 간격으로 전체 검색을 해보니 시가와 0거래가

Tester	optimization finished, total passes 117649 ( successful 114123 passes )
Statistics      optimization done in 2 hours 36 minutes 36 seconds

이제 파일이 있습니다. 최적화를 위해 전송하는 방법은 아직 모르겠습니다. 나는 내일을 생각할 것이다...

그리고 왜 성공률이 낮습니까? 반복해야 합니까?
 
fxsaber :

날카로운 피크가 있는 기능을 선택하면 혼합 후 GA가 여전히 끊어질 것이라고 가정합니다. 그리고 그러한 기능은 차량에 훨씬 더 가깝습니다.

따라서 유전학은 정점을 잡기 위해 날카롭게 되지 않습니다. 목표는 TS에 정확히 필요한 안정적인 영역을 찾는 것입니다. 그리고 피크는 원칙적으로 노이즈입니다.

매개변수의 잘못된 조합은 인구 형성 단계에서 제거되어야 합니다. 저것들. 유전자 교환이나 돌연변이의 결과 잘못된 개체가 얻어지면 올바른 개체를 얻을 때까지 해당 개체의 생성을 다시 반복해야 합니다. 그러면 모든 것이 괜찮을 것입니다.

반면에 INIT_PARAMETERS_INCORRECT 선별 이 집단이 형성된 후에 발생하여 이 집단의 크기를 줄이면 이는 자연적으로 유전 선택의 정상적인 메커니즘을 위반하는 것입니다. 분명히 MQ는 이 옵션에 따라 구현됩니다. 그리고이 상황에서 토픽 스타터의 작업은 거의 해결할 수 없으며 (일반적으로) 탬버린으로 춤을 추는 것은 도움이되지 않습니다.

 
Сергей Таболин :

의견 감사합니다. 여기서는 프로그램의 아키텍처만 논의하지 않습니다. 눈치채지 못했다면...

맞아, 틀렸어.

이제 귀하의 문제가 프로그램의 잘못된 아키텍처에 있다는 데 동의합니다. 철저하게 검색해야만 최대치를 얻을 수 있다고 생각하며 매우 불안정합니다.

 
음, 5센트를 더 넣겠습니다.
대부분의 경우 각 틱 에 철저한 검색이 사용됩니다. 그리고 그것은 그 자체로 직장에서 브레이크를 제공합니다. 그렇다면 전문가/바 열기가 시작될 때만 완전한 열거 방향으로 살펴본 다음 순수하게 최신 데이터를 확인하는 것이 좋습니다. 이러한 최적화는 항상 리소스 소비를 10배 정도 줄입니다.
 
Alexey Navoykov :

따라서 유전학은 정점을 잡기 위해 날카롭게 되지 않습니다. 목표는 TS에 정확히 필요한 안정적인 영역을 찾는 것입니다. 그리고 피크는 원칙적으로 노이즈입니다.

확실히 그런 방식은 아닙니다. 또한 최적화 공간의 안정적인 영역조차도 여전히 딥과 피크가 있는 영역이므로 FF는 매끄럽지 않은 것으로 나타났습니다.

유전학은 보편적인 도구이므로 찢어진 FF를 최적화하기 위해 날카롭게 할 수 있지만 부드러운 FF를 최적화하는 데 시간이 더 오래 걸립니다. 결국 유전학은 적응할 수 있습니다.

IMHO, 일반 유전학은 아무 생각 없이 INIT_PARAMETERS_INCORRECT 세트와 절반을 소화해야 합니다. 또한 이러한 영역은 일반적으로 잘 클러스터링되어 있습니다.

그러나 일반적으로 가장 정확한 솔루션은 입력 매개변수의 공간을 변환하는 것입니다.

 
Georgiy Merts :

맞아, 틀렸어.

이제 귀하의 문제가 프로그램의 잘못된 아키텍처에 있다는 데 동의합니다. 철저하게 검색해야만 최대치를 얻을 수 있다고 생각하며 매우 불안정합니다.

건축에 관한 것이 아닙니다. 요점은 기능 집합과 적용 순서입니다. 사실, 처음에는 이러한 함수에 단일 상수 시퀀스가 있었습니다. 그런 다음 나는 그들을 부르고 일부를 부르지 않는 순서를 실험해 볼 가치가 있다고 결정했습니다. INIT_PARAMETERS_INCORRECT를 통해 이것을 구현했습니다. 진행 상황이 가시적입니다. 그러나 여기에 유전자 최적화의 문제가 있습니다 ...

이제 요점으로. 합법적인 체인이 있는 파일을 만들었습니다. 지금 그것을 사용하는 방법? onTester, frames 을 통해 필요한 것 같은데... 설명서를 보니 뭔가 뭉클해 지는군요. 나는 그것을 처리하는 방법을 알아낼 수 없습니다.

배열로 읽고 데이터를 가져오는 아이디어가 있습니다 ...