2017-09-22 9 views
0

,^사용하여 오류 하나의 인수는 정사각형 행렬이어야하고 다른 하나는 스칼라 여야합니다. POWER를 사용합니다. (^) elementwise 전력 내가이 함수에서 최소화 함수를 작성하기 위해 노력하고있어

(4-2.1*x1^2+x1^4/3)*x1^2+x1*x2+(-4+4*x2^2)*x2^2 

, -10 < = X1 < = 10 -10 < = X2 < = 10 .

내가 쓰고있는이게 맞습니까? 그에서

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; 

그러나 왜,

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. 

어떻게에서 얻기 위해 100 %의 정확도는 좌표?

+2

최대한 멀리 볼 수있는, 당신이 실제로 정의하지 않는'델타 : 일반적으로

, 당신의 문제를 신속하게 최적화 도구 상자에서 fmincon으로 해결 될 수있는 비선형 제약 최적화 문제입니다 '어디든지. 비슷하게 이름이 지정된 'delta1'을 정의하십시오. – etmuse

+0

HTML이 아닌 내용에 HTML 스 니펫을 사용하지 마십시오. 어쨌든 작동하지 않는 모든 종류의 버튼 및 기타 무의미한 화면 채우기가 생성됩니다. – Adriaan

답변

0

글쎄, 오류 메시지에 따르면 delta은 스칼라가 아닐 수도 있습니다. 여기에 코드에서 정의하지 않았습니다.

fun = @(x) (4-2.1*x(1)^2+x(1)^4/3)*x(1)^2+x(1)*x(2)+(-4+4*x(2)^2)*x(2)^2; 
x0 = rand(2,1)*20-10; 
[x,fval] = fmincon(fun, x0, [],[], [],[], [-10;-10], [10;10])