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

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 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题