질문 게시 이유 : 내 프로그래밍 경험은 아마추어와 보통 사람 사이의 어딘가에 있습니다 (그러나이 시점에서는 꽤 녹슬니다). 아마도 C++로 작업 할 것이지만 파이썬으로 전환 할 의향이 있습니다. 바이너리, M, A * 등과 같은 기본 정렬/검색 알고리즘에 대한 경험이 있습니다. A *는 매우 효율적인 검색 알고리즘이 될 수 있다고 들었지만 여러 검색 대상이 큰 손실을 원할 때 다른 알고리즘과 비교하여 A *의 효율성. 다차원 문제 공간에 대한 여러 검색/최적화 문제를 조사 중이므로 효율성은 실제로 중요하게 시작될 것입니다.효과적인 다중 검색 알고리즘
내가 본 대부분의 다중 검색 알고리즘을 문자열 검색 알고리즘이라고합니다. 이 알고리즘이 다른 유형의 문제에서 얼마나 잘 작동하는지, 또는 내가 제공하고있는 시나리오에 대해 다른보다 효과적인 알고리즘에 대한 권장 사항을 제공받을 수 있는지에 대한 문의가 필요했습니다. 필자는 최적화 알고리즘과 다중 검색 알고리즘의 차이점을 이해하기 위해 더 많은 연구를해야한다고 인정하지만, 현재 가지고있는 아이디어는 다중 검색 알고리즘과 잘 작동하는 것 같습니다. 나는 잠재적 인 에너지 표면을 조사하고 국부적 인 최소치의 거친 근사를 발견하고있다.
언덕이 많은 표면을 상상해보십시오. 이제 두 위치 좌표의 함수로 임의의 x 및 y 위치에서 대상의 잠재적 에너지의 3D 그래프를 채 웁니다. 나는이 표면의 정의 된 범위 내에서 모든 지역 최소치를 찾는 것에 관심이있다. 나는 어떤 해상도에서 표면을 샘플링 할 수있게 해주는 알고리듬이 필요하다. 그런 다음 로컬 미니 마의 최저점을 찾기 시작한다. 본질적으로 나는 일종의 제약 된 너비 우선 검색을 사용하여 저해상도 메쉬를 만든 다음 낮은 값의 점에서 메쉬의 해상도를 높이기 위해 다른 스마트 알고리즘을 사용하려고 생각했습니다. 이상적으로 알고리즘은 멀티 스레드로 사용되지만 임의의 차원 PES를 지원할 수 있어야합니다. 나는 잠재적 인 에너지를 제공하는 블랙 박스 평가 기능을 가지고있다. 아래에 2 + 1 차원 그림이 있습니다.
구상 떨어지면 초기 샘플링 메쉬의 크기 1이고, 실제로 로컬 최소값 근방 건너 하였다. 그러면 알고리즘은 해당 지역에서 가장 낮은 값을 선택하기 전에 계단 주위의 메시 분해능을 몇 단계 동안 증가시키기 시작합니다. 그런 다음 다른 낮은 지점으로 이동합니다.
"다차원 검색"이라는 용어를 사용하는 것이 좋습니다. 표면이 볼록면 전역 최적화가 단일 일 것이고 간단한 등산 접근법을 사용하여 찾을 수는 있지만 그렇지 않은 것처럼 보입니다. 매끄러운면 Newton의 방법은 빠르게 * 최적의 값을 찾습니다. 전체 재시작 가능성을 높이기 위해 여러 번의 재시작을 시도 할 수 있습니다. Nelder-Mead와 같은 일반적인 검색 방법을 시도해 볼 수는 있지만 최적 성을 보장하지는 않습니다. –