1. 피트니스 함수는 이중 유형의 매개변수 배열을 허용하고 숫자가 클수록 더 나은 매개변수를 선택하여 숫자를 반환합니다. 피트니스 함수 프로토타입은 다음과 같습니다.
double FF( double &array[]);
2. 피트니스 함수에는 FitnessParams 구조에 지정된 특정 매개변수가 있습니다. 구조에 대한 설명은 아래와 같습니다.
//+------------------------------------------------------------------+//| Параметры фитнес-функции (FF) |//+------------------------------------------------------------------+struct FitnessParams
{
int limit_runs; // Максимально допустимое количество вызовов FFint count_params; // Количество параметров, которое необходимо оптимизироватьint current_runs; // Текущее количество вызовов функцииdouble current_max_value; // Текущее найденное максимальное значениеdouble step_value; // Минимальный шаг изменения параметра. double max_value; // Максимальное значение, которое может принимать параметрdouble min_value; // Минимальное значение, которое может принимать параметр
FitnessParams( void );
};
//+------------------------------------------------------------------+//| Инициализация параметров фитнес-функции (FF) по-умолчанию |//+------------------------------------------------------------------+
FitnessParams::FitnessParams( void ) : limit_runs( 1000 ),
count_params( 2 ),
step_value( 0.1 ),
max_value( 10.0 ),
min_value(- 10.0 ),
current_runs( 0 )
{
current_max_value = min_value;
}
3. 피트니스 기능 및 해당 매개 변수는 외부 영향으로부터 보호되며 독립 라이브러리 에 있습니다..\\Scripts\\FF\\FF.ex5 누군가에 의해 변경됩니다.
4. 사용자 정의 최적화 알고리즘 및 검사 스크립트는 피트니스 기능 매개변수를 학습할 수 있습니다. Export.mqh 파일에 이 함수와 해당 매개변수의 필수 프로토타입이 포함된 이유는 무엇입니까? FF 매개변수를 얻으려면 ..\\Scripts\\FF\\FF.ex5에도 있는 매개변수 내보내기 기능을 사용하십시오.
void GetFitnessParams(FitnessParams& params);
5. 사용자 정의 최적화 알고리즘은 별도의 폐쇄된 사용자 라이브러리 ..\\Scripts\\FF\\UserFindExtremum.ex5 에 있으며 사용자 측에서 별도로 컴파일됩니다. FindExtremum함수는 사용자 라이브러리로 내 보내야 합니다. 이 함수는 검사 스크립트에 의해 호출됩니다. 다음은 완전한 함수 프로토타입입니다.
6. 검사 스크립트는 해당 주소 공간에 해당 매개변수와 함께 피트니스 함수 ..\\Scripts\\FF\\FF.ex5의 라이브러리와 극한 검색을 위한 구성원의 라이브러리를 로드합니다. ..\\스크립트\\FF\\UserFindExtremum.ex5. 그런 다음 FindExtremum 멤버 함수를 호출합니다.
7. 참가자 함수가 처리된 후 검사 스크립트는 참가자 함수에서 찾은 최대값과 이 최대값을 찾는 데 필요한 호출 수가 포함된 피트니스 함수의 매개변수를 요청합니다. 이러한 데이터를 기반으로 참가자 결과에 대한 보고서가 테이블 형식으로 생성됩니다.
결국 참가자들에게 가능한 한 삶을 어렵게 만들기 위해서가 아니라 나는 모든 것을했고 첫 번째 날이 아니라 두 번째 날까지 모든 것을 생각했습니다.
귀하의 예에서 검색 작업은 부분적으로 검사 스크립트에 위임되었습니다. 옳지 않다. 유효성 검사 스크립트는 검색을 호출하고 결과만 확인해야 합니다.
모든 FF 옵션을 사용할 수 있는 것은 아닙니다. 예를 들어, 매개변수 단계(값 0.1), 가능한 최대 및 최소를 얻는 방법은 무엇입니까? 모든 사용자가 이 포럼을 읽고 단계가 0.1, 최소 -10.0 및 최대 +10.0으로 판명되었음을 이해하고 이러한 상수를 코드에 입력하고 FF 함수가 같은 방식으로 생각하기를 바라는 것은 확실히 좋습니다. . 그러나 그것은 좋은 방법으로 수행되는 방법이 아닙니다.
ServiceFunc1과 같은 많은 내보내기 기능은 특정 검색 알고리즘에서만 사용됩니다. 예를 들어 임의 검색에서는 사용할 필요가 없습니다. 그렇다면 사용자 라이브러리는 왜 내보내야 합니까? 이 모든 복잡한 내보내기 기능 조합이 단순히 필요하지 않다는 것을 이해하려면 테스트 작업을 직접 검색 작업과 분리하는 것으로 충분합니다.
두 번째, 세 번째, 110 연결 유형이 필요하지 않습니다. 단 하나의 보편적인 연결 유형이 필요합니다. 불필요한 구문 구조를 사용하지 않고. 아무도 ServiceFunc1 함수의 신성한 의미를 의아해하고 싶어하지 않습니다. 대신 피트니스 함수와 해당 매개변수를 채우는 규칙을 제공해야 합니다. 그리고 더 이상 없습니다.
알고리즘의 첫 번째 버전에 대한 테스트 스크립트:
이러한 간단한 기능을 위해 인터페이스를 지나치게 복잡하게 만들었습니다. 불필요한 수출은 많지만 그에 반해 필요한 것은 부족하다. 나는 당신의 코드를 처음 이해한 것이 아니라 프로그래밍을 잘하지 못하는 사람들이 어떻게 느낄지 상상할 수 있습니다.
이제 나는 그것에 대해 생각하고 단순화된 내보내기 및 테스트 스크립트 작업의 나만의 버전을 제공할 것입니다.
FF 방정식의 매개변수 값을 찾는 "진화적" 접근 방식은 값 검색의 효율성을 높이는 것이 아니라 프로그래밍 방식으로 진화 과정을 시뮬레이션하기 위해 만들어졌을 가능성이 있습니다.
글쎄, 진화가 과학자들에 의해 표현되는 형태로 ...
고통스럽게도 접근 방식은 모든 진화론적 규범을 준수한다는 점에서 일관성이 있습니다...
제안:
1. 피트니스 함수는 이중 유형의 매개변수 배열을 허용하고 숫자가 클수록 더 나은 매개변수를 선택하여 숫자를 반환합니다. 피트니스 함수 프로토타입은 다음과 같습니다.
2. 피트니스 함수에는 FitnessParams 구조에 지정된 특정 매개변수가 있습니다. 구조에 대한 설명은 아래와 같습니다.
3. 피트니스 기능 및 해당 매개 변수는 외부 영향으로부터 보호되며 독립 라이브러리 에 있습니다..\\Scripts\\FF\\FF.ex5 누군가에 의해 변경됩니다.
4. 사용자 정의 최적화 알고리즘 및 검사 스크립트는 피트니스 기능 매개변수를 학습할 수 있습니다. Export.mqh 파일에 이 함수와 해당 매개변수의 필수 프로토타입이 포함된 이유는 무엇입니까? FF 매개변수를 얻으려면 ..\\Scripts\\FF\\FF.ex5에도 있는 매개변수 내보내기 기능을 사용하십시오.
void GetFitnessParams(FitnessParams& params);
5. 사용자 정의 최적화 알고리즘은 별도의 폐쇄된 사용자 라이브러리 ..\\Scripts\\FF\\ UserFindExtremum.ex5 에 있으며 사용자 측에서 별도로 컴파일됩니다. FindExtremum 함수는 사용자 라이브러리로 내 보내야 합니다. 이 함수는 검사 스크립트에 의해 호출됩니다. 다음은 완전한 함수 프로토타입입니다.
6. 검사 스크립트는 해당 주소 공간에 해당 매개변수와 함께 피트니스 함수 ..\\Scripts\\FF\\FF.ex5의 라이브러리와 극한 검색을 위한 구성원의 라이브러리를 로드합니다. ..\\스크립트\\FF\\UserFindExtremum.ex5. 그런 다음 FindExtremum 멤버 함수를 호출합니다.
7. 참가자 함수가 처리된 후 검사 스크립트는 참가자 함수에서 찾은 최대값과 이 최대값을 찾는 데 필요한 호출 수가 포함된 피트니스 함수의 매개변수를 요청합니다. 이러한 데이터를 기반으로 참가자 결과에 대한 보고서가 테이블 형식으로 생성됩니다.
다음 포스팅에서는 필요한 파일과 사용 예시를 첨부하겠습니다.
.mqh 파일 내보내기 - 모든 참가자에 대해 사용 가능한 기능 및 매개변수 구조의 공통 목록
FF.mq5 파일은 라이브러리 형태의 피트니스 함수의 예입니다.
파일 TestFF.mq5 - 스크립트 형태의 테스트 알고리즘
UserFindExtremum.mq5 파일은 라이브러리 형태로 극값을 찾기 위한 사용자 정의 함수입니다. 무작위 검색이 예로 사용됩니다.
File Export.mqh - 모든 참가자가 사용할 수 있는 기능의 공통 목록 및 매개변수 구조
FF.mq5 파일은 라이브러리 형태의 피트니스 함수의 예입니다.
파일 TestFF.mq5 - 스크립트 형태의 테스트 알고리즘
UserFindExtremum.mq5 파일은 라이브러리 형태의 사용자 정의 극한값 검색 기능입니다. 무작위 검색이 예로 사용됩니다.
이러한 간단한 기능을 위해 인터페이스를 지나치게 복잡하게 만들었습니다. 불필요한 수출은 많지만 그에 반해 필요한 것은 부족하다. 나는 당신의 코드를 처음 이해한 것이 아니라 프로그래밍을 잘하지 못하는 사람들이 어떻게 느낄지 상상할 수 있습니다.
이제 단순화된 내보내기 및 테스트 스크립트 작업 버전을 생각하고 제공합니다.
왜 필요하지 않습니까?
어떤 필수품이 빠져 있습니까?
결국 참가자들에게 가능한 한 삶을 어렵게 만들기 위해서가 아니라 나는 모든 것을했고 첫 번째 날이 아니라 두 번째 날까지 모든 것을 생각했습니다.
왜 필요하지 않습니까?
어떤 필수품이 빠져 있습니까?
결국 참가자들에게 가능한 한 삶을 어렵게 만들기 위해서가 아니라 나는 모든 것을했고 첫 번째 날이 아니라 두 번째 날까지 모든 것을 생각했습니다.
Andrei, 다른 사람은 모르지만 개인적으로 Vasily의 예가 더 좋았습니다. 범죄가 없습니다. 이건 제 주관적인 생각일뿐...
솔직히 말해서, 연결 인터페이스(귀하 또는 Vasily)를 선택하는 문제를 투표에 포함할 것을 제안합니다.
당신은 어떻게 생각하십니까?
Andrei, 다른 사람은 모르지만 개인적으로 Vasily의 예가 더 좋았습니다. 범죄가 없습니다. 이건 제 주관적인 생각일뿐...
솔직히 말해서, 연결 인터페이스(귀하 또는 Vasily)를 선택하는 문제를 투표에 포함할 것을 제안합니다.
당신은 어떻게 생각하십니까?
왜 필요하지 않습니까?
어떤 필수품이 빠져 있습니까?
결국 참가자들에게 가능한 한 삶을 어렵게 만들기 위해서가 아니라 나는 모든 것을했고 첫 번째 날이 아니라 두 번째 날까지 모든 것을 생각했습니다.
귀하의 예에서 검색 작업은 부분적으로 검사 스크립트에 위임되었습니다. 옳지 않다. 유효성 검사 스크립트는 검색을 호출하고 결과만 확인해야 합니다.
모든 FF 옵션을 사용할 수 있는 것은 아닙니다. 예를 들어, 매개변수 단계(값 0.1), 가능한 최대 및 최소를 얻는 방법은 무엇입니까? 모든 사용자가 이 포럼을 읽고 단계가 0.1, 최소 -10.0 및 최대 +10.0으로 판명되었음을 이해하고 이러한 상수를 코드에 입력하고 FF 함수가 같은 방식으로 생각하기를 바라는 것은 확실히 좋습니다. . 그러나 그것은 좋은 방법으로 수행되는 방법이 아닙니다.
ServiceFunc1과 같은 많은 내보내기 기능은 특정 검색 알고리즘에서만 사용됩니다. 예를 들어 임의 검색에서는 사용할 필요가 없습니다. 그렇다면 사용자 라이브러리는 왜 내보내야 합니까? 이 모든 복잡한 내보내기 기능 조합이 단순히 필요하지 않다는 것을 이해하려면 테스트 작업을 직접 검색 작업과 분리하는 것으로 충분합니다.
추가 기능이 필요하지 않은 항목이 더 많습니다.
구체적으로 무엇을 더 좋아합니까?