回 帖 发 新 帖 刷新版面

主题:紧急求助,请看这个程序哪里涉及到了数据输入啊?

这是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

回复列表 (共1个回复)

沙发

怎么这么多人看了,没有人肯指点一下呢

我来回复

您尚未登录,请登录后再回复。点此登录或注册