2014-09-04 3 views
2

질문 게시 이유 : 내 프로그래밍 경험은 아마추어와 보통 사람 사이의 어딘가에 있습니다 (그러나이 시점에서는 꽤 녹슬니다). 아마도 C++로 작업 할 것이지만 파이썬으로 전환 할 의향이 있습니다. 바이너리, M, A * 등과 같은 기본 정렬/검색 알고리즘에 대한 경험이 있습니다. A *는 매우 효율적인 검색 알고리즘이 될 수 있다고 들었지만 여러 검색 대상이 큰 손실을 원할 때 다른 알고리즘과 비교하여 A *의 효율성. 다차원 문제 공간에 대한 여러 검색/최적화 문제를 조사 중이므로 효율성은 실제로 중요하게 시작될 것입니다.효과적인 다중 검색 알고리즘

내가 본 대부분의 다중 검색 알고리즘을 문자열 검색 알고리즘이라고합니다. 이 알고리즘이 다른 유형의 문제에서 얼마나 잘 작동하는지, 또는 내가 제공하고있는 시나리오에 대해 다른보다 효과적인 알고리즘에 대한 권장 사항을 제공받을 수 있는지에 대한 문의가 필요했습니다. 필자는 최적화 알고리즘과 다중 검색 알고리즘의 차이점을 이해하기 위해 더 많은 연구를해야한다고 인정하지만, 현재 가지고있는 아이디어는 다중 검색 알고리즘과 잘 작동하는 것 같습니다. 나는 잠재적 인 에너지 표면을 조사하고 국부적 인 최소치의 거친 근사를 발견하고있다.

언덕이 많은 표면을 상상해보십시오. 이제 두 위치 좌표의 함수로 임의의 x 및 y 위치에서 대상의 잠재적 에너지의 3D 그래프를 채 웁니다. 나는이 표면의 정의 된 범위 내에서 모든 지역 최소치를 찾는 것에 관심이있다. 나는 어떤 해상도에서 표면을 샘플링 할 수있게 해주는 알고리듬이 필요하다. 그런 다음 로컬 미니 마의 최저점을 찾기 시작한다. 본질적으로 나는 일종의 제약 된 너비 우선 검색을 사용하여 저해상도 메쉬를 만든 다음 낮은 값의 점에서 메쉬의 해상도를 높이기 위해 다른 스마트 알고리즘을 사용하려고 생각했습니다. 이상적으로 알고리즘은 멀티 스레드로 사용되지만 임의의 차원 PES를 지원할 수 있어야합니다. 나는 잠재적 인 에너지를 제공하는 블랙 박스 평가 기능을 가지고있다. 아래에 2 + 1 차원 그림이 있습니다.

enter image description here

구상 떨어지면 초기 샘플링 메쉬의 크기 1이고, 실제로 로컬 최소값 근방 건너 하였다. 그러면 알고리즘은 해당 지역에서 가장 낮은 값을 선택하기 전에 계단 주위의 메시 분해능을 몇 단계 동안 증가시키기 시작합니다. 그런 다음 다른 낮은 지점으로 이동합니다.

+0

"다차원 검색"이라는 용어를 사용하는 것이 좋습니다. 표면이 볼록면 전역 최적화가 단일 일 것이고 간단한 등산 접근법을 사용하여 찾을 수는 있지만 그렇지 않은 것처럼 보입니다. 매끄러운면 Newton의 방법은 빠르게 * 최적의 값을 찾습니다. 전체 재시작 가능성을 높이기 위해 여러 번의 재시작을 시도 할 수 있습니다. Nelder-Mead와 같은 일반적인 검색 방법을 시도해 볼 수는 있지만 최적 성을 보장하지는 않습니다. –

답변

2

전역 최적화 문제를 해결하려고합니다.

http://en.wikipedia.org/wiki/Global_optimization은이 문제를 해결하는 데 사용 된 방법에 대한 여러 링크가있는 참조 정보입니다. Simulated Annealing을 성공적으로 사용했지만 문제점에 맞는 솔루션이 문제 공간의 크기와 복잡성을 줄입니다.