2016-04-29 99 views
0

我想用兩個變量來最小化目標函數,使用MATLAB R2015a。其目標函數是:MATLAB R2015a多變量函數優化

function i3 = fob_2(kp,ti) 

G_P = tf(0.2,[2 4 1]); 
G_TT = tf(0.1,[0.5 1]); 
G_TC = tf(kp*[1 1/ti],[1 0]); 
G_CV = 50; 
G_TA = 0.1; 

G_direct = G_TC * G_CV * G_P; 
G_loop = feedback (G_direct , G_TT); 
G_SYS = G_TA * G_loop; 
SP = 1; 
[DT,time] = step(SP * G_SYS); 
error = SP - DT; 

i3 = trapz(time,error.^2); 

我試過了一些優化函數,但它們都沒有工作。我總是得到錯誤信息:「沒有足夠的輸入參數」在函數的第五行,這是

G_TC = tf(kp*[1 1/ti],[1 0]); 

我嘗試了以下功能,在使用的語法提出(在這一點上我不「T在意的起點我更在乎得到的答案和正確編程優化功能):

y=fminimax(fob_2,[1,1]) 

y=fminsearch(fob_2,[1,1]) 

y=fminunc(fob_2,[1,1]) 

我確信功能編程正確,因爲當我試着用兩到叫它參數,如:

fob_2(2,5) 

MATLAB返回計算值。

所以,問題在我的最後,但我不知道我在哪裏誤認。你可以幫我嗎?

預先感謝您。

回答

0
fob_2v = @(kt) fob_2(kt(1), kt(2) 
y=fminsearch(fob_2v,[1,1]) 

它的工作原理!