-3
나는 아래의 7D 공간에서 (x = (x1, x2, x3, x4, x5, x6, x7)) 함수를 가지고 있으며,이 함수의 최소 점을 matlab에서 등반하고 싶습니다. .7D 공간에서 암벽 등반
내가 유용한 this link을 찾았지만 어떻게 Matlab에서 내 기능을 구현할 수 있는지 모르겠다.
업데이트 :
내가 코드를 아래에 구현하지만이 맞다면 정말 모르겠어요.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Create a grid of states %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all ,close all;
n=7;
range=[-32.768:0.1:32.768];
x=[0,0,0,0,0,1,1];
F=-20*exp(-0.2*sqrt(1/n*sum(x.^2)))-exp(1/n*sum(cos(2*pi*x)))+20 +exp(1);
F1=zeros(7,2);
best = -100000000; % Best value found so far.
for (j=1:20)
% Pick a starting location at random, and try and find the maximum state by hill climbing.
% Repeat this a (to be precise, repeat it until j = 20).
s=floor(100*rand(7,1)) ;
% Generate successors, and compute the one with the maximum value.
% Only consider states to the N, S, E, W, and NoMove.
for (i=1:100)
% Find successors
S0=s;
F0=-20*exp(-0.2*sqrt(1/n*sum(S0.^2)))-exp(1/n*sum(cos(2*pi*S0)))+20 +exp(1);
for tt=1:7
arr=[0;0;0;0;0;0;0];
arr(tt)=1;
S1=s+arr;
F1(tt,1)=-20*exp(-0.2*sqrt(1/n*sum(S1.^2)))-exp(1/n*sum(cos(2*pi*S1)))+20 +exp(1);
arr(tt)=-1;
S1=s+arr;
F1(tt,2)=-20*exp(-0.2*sqrt(1/n*sum(S1.^2)))-exp(1/n*sum(cos(2*pi*S1)))+20 +exp(1);
end
[v,vi] = max([F1(:,1)',F1(:,1)',F0]);
arr=[0;0;0;0;0;0;0];
index=mod(vi,7);
if(index==0)
index=7;
end
if(vi<=7 && vi ~= 15)
arr(index)=1;
s=s+arr;
elseif(vi>7 && vi ~= 15)
arr(index)=-1;
s=s+arr;
else
s=s ; %% for better understanding
end
end
end
아마도이 기능은 로컬 미니 마에 몰두 한 것 같습니다. 검사로 최소값은 [0000000] ... – Floris
@ Floris, 네, 알아요.하지만 힐 클라이밍으로 구현하고 싶습니다.이 방법은 실제로 현지에 도착하지 않는 것이 중요합니다. 최적. 너 나 좀 도와 줄래? – zhilevan
@zhilevan : wikipedia의 설명을 사용하여 이웃에 대한 유용한 정의를 생각하고 구현하십시오. – Daniel