Error using ^ One argument must be a square matrix and the other must be a scalar. Use POWER (.^) for elementwise power.
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Hi, I'm Trying to write minimization function from this function,
(4-2.1*x1^2+x1^4/3)*x1^2+x1*x2+(-4+4*x2^2)*x2^2
where,
-10 <= x1 <= 10 and -10 <= x2 <= 10.
this what I'm writing, is this right?
min = -10;
max = 10;
x1 = min+max*rand();
x2 = min+max*rand();
T = 1.0;
Tmin = 0.0000001;
refresh = 0.9;
finalMin = (4-2.1*x1^2+x1^4/3)*x1^2+x1*x2+(-4+4*x2^2)*x2^2;
finalCoordinate=[x1,x2];
while(T>Tmin)
i=0;
while(i<=300)
x1= min+max*rand(1,1);
x2= min+max*rand(1,1);
newMin = (4-2.1*x1^2+x1^4/3)*x1^2+x1*x2+(-4+4*x2^2)*x2^2;
delta1 = finalMin-newMin;
if(newMin < finalMin)
finalMin=newMin;
finalCoordinate=[x1,x2];
elseif(2.71828^(delta/T))>(0+(rand(1)*1))
finalCoordinate=[x1,x2];
end;
i=i+1;
end;
T = T*refresh;
end;
But why, at
elseif(2.71828^(delta/T))>(0+(rand(1)*1))
Error using ^ One argument must be a square matrix and the other must be a scalar. Use POWER (.^) for elementwise power.
And how to obtain 100% accuracy from that coordinate?
0 comentarios
Respuestas (1)
Walter Roberson
el 22 de Sept. de 2017
Your code does not define delta so you are getting whatever value happened to be laying around, which happened to be a vector or array.
Note: use exp(x) instead of 2.718^(x)
0 comentarios
Ver también
Categorías
Más información sobre Simulated Annealing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!