RHouLong~? 2020-02-24 16:26 采纳率: 0%
浏览 483

MALTAB中基于动力学模型的主动转向控制代码如何改正?

大家好,菜鸟最近在看龚建伟教授的《无人驾驶车辆模型检测》,可是看到第五章基于动力学模型的主动转向控制那里的源代码最后的有效集法'active set'从quadprog里删除了,请问应该怎么改?

%% 开始求解过程
options = optimset('Algorithm','active-set');
x_start=zeros(Nc+1,1);%加入一个起始点
[X,fval,exitflag]=quadprog(H,f,A_cons,b_cons,[],[],lb,ub,x_start,options);
fprintf('exitflag=%d\n',exitflag);
fprintf('H=%4.2f\n',H(1,1));
fprintf('f=%4.2f\n',f(1,1));

  • 写回答

2条回答 默认 最新

  • 犯困嫌疑人orz 2020-04-10 12:32
    关注

    1.改为内点法求规划问题
    2.如果在某一时刻由于计算结果的问题导致运行终止,将原来的代码修改一下,用if isempty命令判断就算结果X是否为空,如果是,则保留上一次计算结果,如果不是,则正常输出,代码如下:
    % options = optimset('Algorithm','active-set');
    options = optimset('Algorithm','interior-point-convex'); %内点法
    x_start=zeros(Nc+1,1);%加入一个起始点
    [X,fval,exitflag]=quadprog(H,f,A_cons,b_cons,[],[],lb,ub,x_start,options);
    if isempty(X)
    U(1)=kesi(7,1);
    sys= U;
    toc
    else
    %% 计算输出
    u_piao=X(1);%得到控制增量
    U(1)=kesi(7,1)+u_piao;%当前时刻的控制量为上一刻时刻控制+控制增量
    %U(2)=Yita_ref(2);%输出dphi_ref
    sys= U;
    toc
    % End of mdlOutputs.
    end
    fprintf('exitflag=%d\n',exitflag);
    fprintf('H=%4.2f\n',H(1,1));
    fprintf('f=%4.2f\n',f(1,1));

    
    
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog