autosim 发表于 2020-5-6 21:18:49


Cruise默认设置,允许cruise_m.exe进程占用约8G内存;

当系统内存不足,或Cruise运行于Win32 Platform下时,仿真过程中,可能会因内存不足,无法分配内存地址而报类似“DM_Realloc - Memory Reallocation failed”这样的错误;

通常情况下,Cruise的大部分仿真任务都可以在Win32 Platform下顺利完成,但当进行联合仿真,或纯电动及混合动力车辆模型进行Cycle Run任务循环工况多次迭代仿真时,可能会因内存超限而导致仿真中途报错失败;

此时建议将Cruise软件切换到Win64 Platform下;

我们在《AVL Cruise前向仿真(Simulation 1~5)算法详解》中也介绍过一些降低内存占用方面的方法;

本文介绍的方法支持在极限内存条件下(甚至256MB内存)完成Cruise仿真计算,但一般情况下不建议使用;

当然,对于有特殊需求的用户,例如,喜欢轻量化的软件环境,不想安装64位编译器,习惯32位Matlab自带的lcc编译器编译dll进行联合仿真的朋友,可以使用本教程中的方法限制cruise_m.exe的内存占用;

此外,对于复杂系统的仿真,也可以使用此方法加大默认的8G内存限制到16G、32G、256G...

AVL Cruise限制内存占用的方法:


已有 25 人购买  本主题需向作者支付 8 金币 才能浏览 购买主题

spring2022 发表于 2022-5-24 21:43:27

您好,我用的2015版本自带的hybrid2 混动模型根据您第二种方法进行最高车速仿真,仍然会出现,error 199就是内存不足的错误,请问是为什么呢?

autosim 发表于 2022-5-24 22:31:04

spring2022 发表于 2022-5-24 21:43
您好,我用的2015版本自带的hybrid2 混动模型根据您第二种方法进行最高车速仿真,仍然会出现,error 199就 ...

本教程主要用途:使用32位matlab自带lcc编译器不想另外安装编译器的用户进行联合仿真时防止ring buffer溢出。
你说的内置hybrid2模型进行最高车速仿真,理论上即便使用32位platform也不会内存溢出,切换到64位platform则肯定不会内存溢出。
问题原因大概率还是没完全理解教程配置错误,或者仿真任务设定错误导致非线性仿真组求解不收敛无限循环计算。

spring2022 发表于 2022-5-24 23:21:21

autosim 发表于 2022-5-24 22:31
本教程主要用途:使用32位matlab自带lcc编译器不想另外安装编译器的用户进行联合仿真时防止ring buffer溢 ...

您好,我现在已经切换到win64下了,只是代入了车型的基本参数的模型,把步长改到1×10-4次方,然后改为0.1秒输出一个结果,现在进行constant drive任务进行不了了。而且full load acceleration测零百加速也测不出来,请问可以从哪些方面考虑呢

autosim 发表于 2022-5-25 09:23:08

spring2022 发表于 2022-5-24 23:21
您好,我现在已经切换到win64下了,只是代入了车型的基本参数的模型,把步长改到1×10-4次方,然后改为0. ...
步长改为0.01s。

实在需要0.001s步长,按教程设置限制内存是一种方案,报错就继续减小参数阈值。

另外可以尝试增大参数,把默认的8G内存限制,增大到32G,前提是你电脑有足够的内存。

xjjay1108 发表于 2022-6-15 14:19:24

autosim 发表于 2022-5-25 09:23
步长改为0.01s。

实在需要0.001s步长,按教程设置限制内存是一种方案,报错就继续减小参数阈值。


增大内存对仿真计算时间有加速效果吗?

autosim 发表于 2022-6-16 10:15:41

xjjay1108 发表于 2022-6-15 14:19
增大内存对仿真计算时间有加速效果吗?

没有加速效果,一般用不到。
迭代仿真的时候循环次数过多,8G内存不够的时候才需要加大。

风轻扬 发表于 2023-12-23 16:06:57

谢谢分享,按照此方法确实解决了这个问题
页: [1]
查看完整版本: AVL Cruise限制内存占用的方法|Cruise在Win32 Platform下的内存优化