하나 이상의 매개 변수가있는 결정적인 함수에서 반환되는 가장 높은 값이 무엇인지 알아보기 위해서는 우아하고 간단한 시스템이 필요합니다.MATLAB의 블랙 박스 함수의 매개 변수 최적화
저는 MATLAB에 유전자 알고리즘을 잘 구현하고 있음을 알고 있습니다. 실제로는 제 경우에는 과도합니다. 좀 더 간단한 것이 필요해.
아이디어가 있으십니까?
하나 이상의 매개 변수가있는 결정적인 함수에서 반환되는 가장 높은 값이 무엇인지 알아보기 위해서는 우아하고 간단한 시스템이 필요합니다.MATLAB의 블랙 박스 함수의 매개 변수 최적화
저는 MATLAB에 유전자 알고리즘을 잘 구현하고 있음을 알고 있습니다. 실제로는 제 경우에는 과도합니다. 좀 더 간단한 것이 필요해.
아이디어가 있으십니까?
Matlab에서 직접 최대 값을 찾을 수는 없지만 최소화 할 수 있습니다. -1 함수를 곱하면 당신의 fminsearch
f = @(x) 2*x - 3*x.^2; % a simple function to find the maximum from
minusf = @(x) -1*f(x); % minus f, find minimum from this function
x = linspace(-2,2,100);
plot(x, f(x));
xmax = fminsearch(minusf, -1);
hold on
plot(xmax,f(xmax),'ro') % plot the minimum of minusf (maximum of f)
결과로 찾을 수있는 "최소를 찾아"-problem로 -problem "최대 값을 찾아"transformes은 다음과 같다 : 매우
진짜 간단한 생각은 그리드 검색 접근 방식을 사용하는 것입니다. 아마도 메쉬 리파인먼트를 사용할 것입니다. 더 나은 아이디어는 Nelder-Mead 알고리즘과 같이보다 진보 된 파생물없는 옵티 마이저를 사용하는 것입니다. 이 내용은 fminsearch
에서 볼 수 있습니다.
글로벌 최적화 도구 상자에서 알고리즘을 시도해 볼 수도 있습니다 (예 : patternsearch
또는 악명 높은 simulannealbnd
).
이를 당신의 기능에 달려 있습니다. 파생 상품이 있습니까? 함수가 볼록합니까? 제약이 수반됩니까? 당신은 글로벌/로컬 최대를 찾고 계십니까? 정확도는 어느 정도입니까? 이것은 수학에 관한 완전한 연구 주제입니다. 예를 들어 http://www.mathworks.nl/help/optim/ug/choosing-a-solver.html – MeMyselfAndI
함수는 imperscrutable 인 것으로 가정합니다. 이미 black box에 질문했습니다. 함수의 힌트를 얻는 유일한 방법은 매개 변수를 사용하여 함수를 쿼리하고 최대화 할 값을 반환하는 것입니다. 이렇게하면 최대/최소값이 전역인지 로컬인지를 결정할 수 없기 때문에 로컬 최대/최소값으로 충분할 수 있습니다. 나는 이것이 완전한 연구 주제라는 것을 알고 있습니다. 그래서 math.stackexchange 대신에 stackoverflow에 썼습니다. MATLAB에 기존의 편리한 구현이 있는지를 알기 위해서입니다. – fstab
'fminbnd' 또는'fminsearch'가 가장 좋은 장소입니다. 이것은 매우 광범위한 질문입니다. – David