2016-04-29 11 views
0

MATLAB R2015aを使用して2つの変数を使用して目的関数を最小化しようとしています。目的関数は次のとおりです。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]); 

ある機能の5行目、で私はこの時点Iドンで使用する構文(によって提示された以下の機能を、試してみました「Tは、出発点についてはあまり気に私は)答えを取得し、正しく最適化機能のプログラミングについての詳細を気に:。

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

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

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

を私は2でそれを呼び出すしようとするので、私は、機能が正しくプログラムされていることを確信していますパラメータのようなもの:

fob_2(2,5) 

MATLABは計算値を返します。

問題は私の目的ですが、私は間違っています。手伝って頂けますか?

ありがとうございます。

答えて

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

これは機能します。