主题:紧急求助,请看这个程序哪里涉及到了数据输入啊?
这是matlab里面的一个demo程序,进行pid优化的。可是我现在不清楚,他的优化目标是从哪里得到的?这个程序运行起来是simulink形式,应该是按照输出进行优化的,这些输入是怎么进入到这个程序里面的?我是需要编写自己的优化算法,需要根据simulink中的六个输出来优化仿真过程的五个参数,请问各位,怎么才能得到这些数据呢?
function [Kp,Ki,Kd] = runtracklsq
% RUNTRACKLSQ demonstrates using LSQNONLIN with Simulink.
% Copyright 1990-2004 The MathWorks, Inc.
% $Revision: 1.1.4.1 $ $Date: 2004/04/01 16:13:06 $
optsim % Load the model
pid0 = [0.63 0.0504 1.9688]; % Set initial values
a1 = 3; a2 = 43; % Initialize plant variables in model
options = optimset('LargeScale','off','Display','iter',...
'TolX',0.001,'TolFun',0.001);
pid = lsqnonlin(@tracklsq, pid0, [], [], options);
Kp = pid(1); Ki = pid(2); Kd = pid(3);
function F = tracklsq(pid)
% Track the output of optsim to a signal of 1
% Variables a1 and a2 are shared with RUNTRACKLSQ
Kp = pid(1);
Ki = pid(2);
Kd = pid(3);
% Compute function value
simopt = simset('solver','ode5','SrcWorkspace','Current'); % Initialize sim options
[tout,xout,yout] = sim('optsim',[0 100],simopt);
F = yout-1;
end
end
function [Kp,Ki,Kd] = runtracklsq
% RUNTRACKLSQ demonstrates using LSQNONLIN with Simulink.
% Copyright 1990-2004 The MathWorks, Inc.
% $Revision: 1.1.4.1 $ $Date: 2004/04/01 16:13:06 $
optsim % Load the model
pid0 = [0.63 0.0504 1.9688]; % Set initial values
a1 = 3; a2 = 43; % Initialize plant variables in model
options = optimset('LargeScale','off','Display','iter',...
'TolX',0.001,'TolFun',0.001);
pid = lsqnonlin(@tracklsq, pid0, [], [], options);
Kp = pid(1); Ki = pid(2); Kd = pid(3);
function F = tracklsq(pid)
% Track the output of optsim to a signal of 1
% Variables a1 and a2 are shared with RUNTRACKLSQ
Kp = pid(1);
Ki = pid(2);
Kd = pid(3);
% Compute function value
simopt = simset('solver','ode5','SrcWorkspace','Current'); % Initialize sim options
[tout,xout,yout] = sim('optsim',[0 100],simopt);
F = yout-1;
end
end