【问题标题】:MATLAB R2015a multivariable function optimizationMATLAB R2015a 多变量函数优化
【发布时间】:2016-04-29 08:04:44
【问题描述】:

我正在尝试使用 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 返回计算值。

所以,问题出在我这边,但我看不出我在哪里弄错了。你能帮帮我吗?

提前谢谢你。

【问题讨论】:

    标签: matlab optimization


    【解决方案1】:
    fob_2v = @(kt) fob_2(kt(1), kt(2)
    y=fminsearch(fob_2v,[1,1])
    

    有效!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-15
      • 1970-01-01
      • 1970-01-01
      • 2016-03-06
      • 2019-03-20
      • 2023-03-10
      • 2014-03-13
      相关资源
      最近更新 更多