2016-04-29 3 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]); 

Я попытался следующие функции, представленные использованным синтаксис (в этот момент я не «т заботятся о начальной точке я забочусь больше о получении ответа и правильно программировать функцию оптимизации):.

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]) 

Это работает!

Смежные вопросы