如何使用parsim命令为我的simulink模型执行给定代码的并行仿真万博1manbetx?

7次浏览(过去30天)
玛雅克定
玛雅克定 2021年8月14日
评论道: 里德斯宾塞 2021年8月18日
当使用parsim命令在simulink上运行我的模拟时,我正在面对。万博1manbetx在下面的代码中,我使用了一个嵌套的for循环。我将所有3个模拟对象都称为“in”,对于下面的参数具有不同的索引i1, i2和i3。
我的编译代码(不使用并行计算)创建了一个名为's'的结构,它将信号存储在基本工作空间中。但是,当使用parsim命令时,找不到变量's'。
部分代码:
modelname = 'SEC_final';
%参数要在simulink中使用万博1manbetx
Dist_5thwheel_to_second_axle_sem2_itr = [7.13, 7.63];
Dist_front_trailer_to_5thwheel_sem2_itr = [1.368, 1.668];
Dist_pin_coupling_to_dolly_centre_itr = [3.3, 3.8, 4.3];%拉杆长度
以上参数的%大小
Counter1 = length(dist_5thwheel_to_second_axle_sem2_itr);
Counter2 = length(dist_front_trailer_to_5thwheel_sem2_itr);
Counter3 = length(dist_pin_coupling_to_dolly_centre_itr);
对于i1 = 1:1:counter1 %参数1的计数器
in(i1) = 万博1manbetxSimulink.SimulationInput(modelname);%仿真对象1为模型
in(i1) = setBlockParameter(in(i1), [modelname '/Semitrailer 2'], 'dist_5thwheel_to_second_axle_sem2', num2str(dist_5thwheel_to_second_axle_sem2_itr(i1)));
对于i2 = 1:1:参数2的counter %counter
in(i2) = 万博1manbetxSimulink.SimulationInput(modelname);%仿真对象2为模型
in(i2) = setBlockParameter(in(i2), [modelname '/ semtrailer2 '], 'dist_front_trailer_to_5thwheel_sem2', num2str(dist_front_trailer_to_5thwheel_sem2_itr(i2)));
当i3 = 1:1时:counter3
in(i3) = 万博1manbetxSimulink.SimulationInput(modelname);%仿真对象3为模型
in(i3) = setBlockParameter(in(i3), [modelname '/ semtrailer2 '], 'dist_front_trailer_to_5thwheel_sem2', num2str(dist_front_trailer_to_5thwheel_sem2_itr(i3)));
在基本工作空间中分配引用参数
assignin(“基地”,最高温度,最高温度);
assignin(‘基地’,dt, dt);
assignin(‘基地’,‘Vx’,Vx);
assignin(‘基地’,‘X0, X0);
assignin(‘基地’,‘rdfname rdfname);
assignin(‘基地’,‘rdfname_inner rdfname_inner);
assignin(‘基地’,‘steer_input steer_input);
assignin(‘基地’,‘brake_input brake_input);
assignin(‘基地’,‘throttle_input throttle_input);
assignin(‘基地’,‘Vx_input Vx_input);
assignin(‘基地’,‘end_posy end_posy)
assignin(‘基地’,‘steer_sens_c steer_sens_c);
assignin(‘基地’,‘steer_ratio steer_ratio);
assignin(‘基地’,‘steer_control steer_control);
assignin(‘基地’,‘path_input path_input);
assignin(‘基地’,‘lookahead_time lookahead_time);
assignin(‘基地’,‘T_lag T_lag);
modelname = 'SEC_final';
% sim ([], modelname simset (' DstWorkspace ', '基地'));%命令用于正常模拟(不使用并行计算)
out_1 = parsim(in, 'ShowProgress', 'on');% parsim命令
evalin(“基地”,['保存. .\simresults\',modelname,' s VR dt']) %s是一个包含许多仿真信号的结构
结束
结束
结束
%% ------------- 我的命令窗口显示在上面的代码运行 ----------------%%
[14- 8月2021 23:35:40]加载模型在并行工人…
[14-Aug-2021 23:36:18]运行模拟…
[14-Aug-2021 23:36:46]完成1次模拟运行中的1次。运行1有错误。
警告:使用下面列出的指标完成的模拟有错误。请检查相应的SimulationOutput来获取
关于错误的更多细节:
[1]
[14- 8/2021 23:36:46]清理并行工人…
使用save时出错
没有找到变量s。
Example_Training_90_deg_exit中的错误(第252行)
evalin(“基地”,['保存. .\simresults\',modelname,' s VR dt'])
1评论
里德斯宾塞
里德斯宾塞 2021年8月18日
Parsim不会将ToWorkspace Blocks之类的输出返回到基本工作空间,而是在Simulink中返回它们。万博1manbetxSimulationOutput对象,对你来说是"out_1"。您需要为输出对象建立索引以找到变量“s”。
看起来out_1还包含模拟的错误消息。考虑使用">>out_1. "ErrorMessage”或使用parsim上的“SimulationManager”选项来查看错误消息并解决它。我的猜测是,你将不得不使用parsim的“TransferBaseWorkspace”选项,因为它看起来像你的模型参数在基本工作空间中主持。

登录评论。

答案(0)

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!