기고글 토론 "유전 알고리즘-쉬워요" - 페이지 7

 
Graff:
여러분! 너무 어렵지 않다면 UGA 라이브러리를 사용한 몇 가지 예를 들어주세요.
어떤 예제(어떤 주제)에 관심이 있으신가요?
 
joo:
어떤 종류의 예시(어떤 주제에 대한)에 관심이 있으신가요?
기사에 있는 예제에서 어떻게 작동하는지 명확하지 않기 때문에 UGA를 사용하는 모든 예제. 기사에 지그재그 예제가 있는데 다른 지표(RSI, CCI....)를 사용한 예제가 있을 수 있나요?
 
Graff:
기사의 예제에서 어떻게 작동하는지 명확하지 않기 때문에 UGA를 사용하는 모든 것. 기사에는 지그재그가있는 예제가 있는데 다른 지표 (RSI, CCI....)를 사용한 예제를 가질 수 있습니까?

다음과 같은 스크립트를 작성하세요:

1) 지표를 계산하는 데 필요한 상품의 데이터 배열에 로드하기

2) 일부 매개 변수 세트를 사용하여 지표 계산(이러한 지표 매개 변수는 최적화되어야 함).

3) 지표 신호에 따른 진입/청산 포인트 결정

4) 관심 통계 지표 계산(스프레드, 드로다운 등을 고려하여 얻은 핍 수).


항목 2), 3), 4)는 개인에 대한 FF를 계산하는 GA의 한 반복 단계입니다. 그런 스크립트를 작성하면 차례로 UGA를 "조이는"데 도움을 드리겠습니다.


추신. 누군가가이 라이브러리 (또는 다른 유사한 라이브러리)를 사용하여 연구에 진지하게 참여하고 있다면 이러한 개발은 비공개 일 가능성이 높습니다 (거래와 직접 관련이없는 것을 연구하는 데 시간이 소요됨).

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
zsazsa:

좋은 기사입니다! 감사합니다.

1) 제가 알기로는 NN의 교육을 최적화하기 위해 UGA를 사용하려고 하셨던 것 같습니다. 성공했나요?

2) 이 경우 염색체의 유전자는 무엇이었나요?

3) 자체 NN 라이브러리도 개발했나요, 아니면 MT5 및 GA와의 통합을 지원하는 기존 NN 구현을 찾았나요?

1) 예.
2) 제가 염색체 유전자로 표현한 네트워크 뉴런의 가중치와 편향.
3) 신경망의 구현을 직접 작성했습니다.
 

안드레이, 안녕하세요. UGA에 감사드립니다. "과학적 방법"으로 라이브러리를 사용하는 방법을 배우려고합니다 (귀하가 제안한 UGA_script.mq5 및 skin.mqh의 예에서). 괜찮다면 특정 커널에 할당 (분류)해야하는 평면에 점 집합이있을 때 코호넨 네트워크 훈련 문제를 해결하기위한 입력 매개 변수를 올바르게 설정하는 방법을 추가로 소개해 주세요. 즉, 좌표 (x,y), M 개의 커널 (훈련 후 "이동"됨), FF 함수- "근접 측정"이있는 N 개의 점이 있습니다. 내가 이해했듯이 UGA_script.mq5 매개 변수는 다음과 같이 설정해야합니다 : ChromosomeCount_P = ???? (설정 방법을 이해하지 못함), GeneCount_P = 2 * M (각 핵에 대한 2 개의 좌표), Epoch_P = ???? (설정 방법을 모르겠습니다). 미리 감사드립니다.

 
kogriv:

안드레이, 안녕하세요. UGA에 감사드립니다. "과학적 방법"으로 라이브러리를 사용하는 방법을 배우려고합니다 (귀하가 제안한 UGA_script.mq5 및 skin.mqh의 예에서). 괜찮다면 특정 커널에 할당 (분류)해야하는 평면에 점 집합이있을 때 코호넨 네트워크 훈련 문제를 해결하기위한 입력 매개 변수를 올바르게 설정하는 방법을 추가로 소개해 주세요. 즉, 좌표 (x,y), M 개의 커널 (훈련 후 "이동"됨), FF 함수- "근접 측정"이있는 N 개의 점이 있습니다. UGA_script.mq5에서 이해했듯이 매개 변수는 다음과 같이 설정해야합니다:

1) 염색체 수_P = ???? (설정하는 방법을 이해하지 못합니다),

2) GeneCount_P = 2 * M (각 핵에 대한 2 개의 좌표),

3) Epoch_P= ???? (설정 방법을 모르겠습니다).

미리 감사드립니다.

1) 50으로 설정하고 충분하지 않은 경우 값을 늘리십시오 (과용하지 마십시오. 최대 200-300까지, 그렇지 않으면 결과를 기다리지 않을 위험이 있습니다).

2) 예.

3) 50-100으로 시작하고 충분하지 않으면 값을 늘리십시오 (너무 많지 않고 최대 200-1000까지, 그렇지 않으면 결과를 얻지 못할 위험이 있습니다).

숫자는 경험적이며 수렴 속도 또는 결과의 정확성에 초점을 맞춰 원하는대로 변경할 수 있습니다 (일반적으로 상호 배타적 인 요구 사항이며 중간은 중간 어딘가에 있습니다-말장난을 용서하십시오).

 

도서관을 뒤지고 있어요.

앤드류, 왜 모집단에서 중복을 제거하기 전에 적합도 함수를 계산해야 하는지 이해할 수 없어요. 비용이 많이 들거든요.

void CycleOfOperators
(
...........
.......
)
{
 ................................
...............

  //자손 식민지 내 각 개체의 적합성 결정
  GetFitness(historyHromosomes);
................................
..........................
  //다음 번식을 위해 모집단을 준비합니다.
  RemovalDuplicates();
}// 함수 종료

저는 자손 생성 단계에서 클론의 존재를 제어할 것입니다. (실제로 그렇게 할 것입니다.)

 
MetaDriver:

1) Andrew, 모집단에서 중복을 제거하기 전에 적합도 함수를 계산해야 하는 이유를 이해할 수 없습니다. 비용이 많이 듭니다.

2) 저는 후손 생성 단계에서 클론의 존재를 제어 할 것입니다. (실제로 그렇게 할 것입니다.)

1) 과거 염색체 데이터베이스에서 확인이 수행되기 때문에 반복되는 FF 계산은 수행되지 않습니다. 해당 개인에 대해 이전에 FF가 한 번 이상 수행 된 경우 데이터베이스에서 값을 가져옵니다.

2) 새로운 식민지가 인구에 정착하는 데에는 한 가지 뉘앙스가 있습니다. 그러나 나는 그것에 대해 침묵을 지킬 것입니다. :) 더 정확하다고 생각하는 방식으로 수행하고 결과에 대해 알려주세요-그 후에 뉘앙스에 대해 알려 드리겠습니다.


추신 일반적으로이 의견과 관련이없는 무작위 GA 검색의 다양한 전략을 따를 수 있으며 각 변형은 어느 정도 주목할 가치가 있습니다. 결과 (수렴 속도, 검색 정확도, 로컬 극한에 갇힘)는 사용 된 검색 전략에 거의 직접적으로 의존합니다.

 
joo:

1) 과거 염색체 데이터베이스를 확인하기 때문에 FF를 반복적으로 계산하지 않습니다. 해당 개체에 대해 이전에 한 번 이상 FF를 수행한 적이 있는 경우 데이터베이스에서 값을 가져옵니다.

2) 새로운 식민지가 인구에 정착하는 데에는 한 가지 뉘앙스가 있습니다. 그러나 나는 그것에 대해 침묵을 지킬 것입니다. :) 더 정확하다고 생각되는 것을하고 결과에 대해 알려주세요-그 후에 뉘앙스에 대해 말씀 드리겠습니다.

1) 글쎄, 글쎄, 글쎄. 스토리 텔러. :) 거기에 적어도 한 가지 실수가 있습니다.

이것이 실수를 비교하는 방법입니다... 음... 수학자들에 의해서만... 네, 그렇습니다.

        if (Colony[Ge][chromos]!=historyHromosomes[Ge][Ch1])
          break;

그런 비교에서 부동 소수점 뒤에 15 자리의 차이는 유전자를 다른 것으로 인식합니다. 그리고 그것은 운명이기 때문에 항상 차이가있을 것입니다. ;)

적어도 이런 식이어야 합니다:

        if (fabs(Colony[Ge][chromos]-historyHromosomes[Ge][Ch1]) > delta)  // 예: 0.00001 < 델타 < 0.00000000001
          break;

유전자 알고리즘과 별도로 이중 제거를 테스트 했으므로이 조각이 작동한다는 착각이있을 것입니다.


2) 모든 것이 얼마나 신비로운 지... 얇은 것이 얇은 곳에서 찢어진 것이 찢어집니다. :)

뉘앙스가 있든 없든 모든 것을 해결할 수 있습니다. 좋아요, 제가 어떻게했는지 보여 드리겠습니다.

 
MetaDriver:

1) 이런, 이런, 이런. 스토리텔러. :)

2) 적어도 한 가지 실수가 있습니다. 그것이 실수를 비교하는 방법입니다... 음... 수학자들에 의해서만... 네, 그렇습니다. 이러한 비교에서 부동 소수점 이후 15 자리의 차이는 유전자를 다른 것으로 인식합니다. 그리고 그것은 운명이기 때문에 항상 차이가있을 것입니다. ;)

적어도 이런 식이어야 합니다:

3) 그리고 중복을 제거 할 때도 똑같은 일이 있습니다. 유전자 알고리즘과 별도로 중복 제거를 테스트 했으므로이 조각이 작동한다는 착각이있을 것입니다.

4) 모든 것이 얼마나 신비로운 지... 얇은 것이 얇은 곳에서 찢어진 것이 찢어집니다. :) 뉘앙스가 있든 없든 모든 것을 해결할 수 있습니다. 좋아요, 제가 어떻게했는지 보여 드리겠습니다.

1) 스토리텔러? 흠, 불행히도 저는 유머를 이해하지 못했습니다. 데이터베이스 확인은 GetFitness(historyHromosomes) 에서 호출되는 CheckHistoryChromosomes(chromos,historyHromosomes ) 함수에서 이루어집니다. 그렇기 때문에 FF를 반복적으로 실행하지 않는다고 정확하게 말한 것입니다.

2) 데이터베이스와의 조정은 유전자별 확인을 통해 이루어집니다. 그리고 각 유전자는 새로운 염색체가 나타나면 SelectInDiscreteSpace(temp,RangeMinimum,RangeMaximum,Precision,3) 로 정규화됩니다. 따라서 여기에도 "동화"는 없습니다.

3) 2) 참조

4) 미스터리가 없습니다. 코드는 개방적이고 투명합니다. 실제로 뉘앙스가 있습니다 (구현 문제가 아니라 융합의 품질과 관련이 있습니다).