#vehicle #energy #model #simulation #class #fast-sim #nrel

fastsim-core

车辆能源使用模拟的核心FASTSim模型

7个版本

0.1.6 2024年2月22日
0.1.5 2023年8月21日
0.1.3 2023年7月27日

#359 in 编码

每月 29次下载

Apache-2.0

520KB
10K SLoC

FASTSim

FASTSim Logo

homepage tests wheels python documentation github

描述

这是NREL的FASTSimTM的Python/Rust版本,基于原始的Excel实现。将努力保持此软件与Excel版本之间的核心方法一致。

所有类和方法都有自我文档。

安装

Python

按照以下步骤设置和激活一个Python环境(兼容Python 3.8 - 3.10;我们推荐Python 3.10)。

Anaconda

  1. 创建: conda create -n fastsim python=3.10
  2. 激活: conda activate fastsim

venv

根据您的操作系统可能会有一些差异

  • PowerShell (Windows)

    1. 创建: python -m venv fastsim-venv -- 名称由用户决定
    2. 激活: fastsim-venv/Scripts/Activate.ps1
  • Bash (即Unix/Linux/mac)

    1. 创建: python -m venv fastsim-venv -- 名称由用户决定
    2. 激活: source fastsim-venv/bin/activate
  • 命令提示符 (Windows)

    1. 创建: python -m venv fastsim-venv -- 名称由用户决定
    2. 激活: fastsim-venv/Scripts/activate.bat

FASTSim

通过PyPI

在上述创建的Python环境中,运行 pip install fastsim

从头开始构建

开发者可能想要将代码安装到本地,以便可以编辑FASTSim文件(pip的-e标志提供了这种行为)。此选项可能很有用,因为FASTSim将安装到安装位置,并且每次重新导入FASTSim时都会传播任何更新。要执行此操作,您需要安装Rust工具链

  • 选项 1:在根目录下运行 sh build_and_test.sh
  • 选项 2
    1. 运行 pip install -e ".[dev]"
      可选测试步骤
    2. 运行 cd rust/ && cargo test
    3. 运行 pytest -/fastsim/tests/

用法

要查看和运行示例,导航到 ./python/fastsim/demos 并运行各种 *demo.py 文件以查看 fastsim 的用法。在 fastsim/tests 中还有其他示例。

将 FASTSim 添加到 Rust 依赖项中

通过 GitHub

将此行添加到您的 Cargo.toml 文件中,根据需要修改 branch 键。

fastsim-core = { git = "https://github.com/NREL/fastsim/", branch = "fastsim-2" }

通过 Cargo

FASTSim 作为 Rust crate 可用,可以通过以下命令将其添加到依赖项中

FASTSim 是一个 Rust crate,可以通过以下命令添加到依赖项中

cargo add fastsim-core

缩写列表

cur = 当前时间步
prev = 上一个时间步
cyc = 驱动循环
secs = 秒
mps = 每秒米
mph = 每小时英里
kw = 千瓦,功率的单位
kwh = 千瓦时,能量的单位
kg = 千克,质量的单位
max = 最大值
min = 最小值
avg = 平均值
fs = 燃料存储(例如汽油/柴油油箱,加压氢气罐)
fc = 燃料转换器(例如内燃机,燃料电池)
mc = 电动马达/发电机和控制器
ess = 能量存储系统(例如高压牵引电池)
chg = 组件的充电
dis = 组件的放电
lim = 组件的限制
regen = 与再生制动相关
des = 所需值
ach = 实现值
in = 组件输入
out = 组件输出

已知问题

Rust 版本的类具有有限的 Language Server Protocol 集成,我们正在积极修复此问题。

发行说明

2.1.2 -- SerdeAPI 重构,添加了许多新功能,各种新车辆,校准演示,更好的错误传播,演示测试 2.1.1 -- 许可证更改为 Apache 2.0,如果没有提供,则默认周期等级和道路类型为零,默认为再生制动参数,可选文档字段现在在 Rust 中生成 2.1.0 -- 发布和安装改进,RustVehicle 初始化清理,校准改进 2.0.11 - 2.0.22 -- PyPI 修复。此外,Rust 版本现在比 Python 版本快 100 多倍。2.0.10 -- 记录修复,proc macro 重组,一些 CAV 性能修复
2.0.9 -- 支持 mac ARM/RISC 架构
2.0.8 -- 性能改进
2.0.6 -- dist_v2_m 修复和初步 CAV 功能
2.0.5 -- 为周期添加了 to_rust 方法
2.0.4 -- 暴露了 veh.set_veh_mass
2.0.3 -- 暴露了 veh.__post_init__
2.0.2 -- 为非默认 vehdb 路径预留
2.0.1 -- 错误修复
2.0.0 -- 现在所有每秒的计算都同时在 rust 和 python 中实现。Rust 提供了约 30 倍的速度提升
1.3.1 -- fastsim.simdrive.copy_sim_drive 函数可以将 jit 深度复制到非 jit(以及反向)以进行序列化
1.2.6 -- 零速度的时间膨胀错误修复
1.2.4 -- 错误修复,将 == 更改为 =
1.2.3 -- veh_file 可以作为独立参数传递。如果提供了 fcEffMap,则 fcEffType 可以是任何类型,否则强制执行类型。
1.2.2 -- 增加了对一些冲突车辆参数的检查。车辆参数 fcEffTypevehPtType 必须是字符串类型。
1.2.1 -- 优化了时间膨胀,并增加了对其的测试
1.1.7 -- 现在可以从已经 jitted 的对象中调用 get_numba_veh() 和 get_numba_cyc()
1.1.6 -- 修复了与 numba 兼容性的另一个错误,并增加了相应的单元测试
1.1.5 -- 修复了 fcPeakEffOverride 和 mcPeakEffOverride 与 numba 兼容性的错误
1.1.4 -- 修复了 fcPeakEffOverride 和 mcPeakEffOverride 中的 nan 错误
1.1.3 -- 为可选的负载时电机和发动机峰值覆盖提供了支持
1.1.2 -- 使车辆加载变得更加健壮
1.1.1 -- 使车辆加载更加健壮
1.1.0 -- 将 jitclasses 分离到自己的模块中,使车辆发动机和电机效率设置更加健壮
1.0.4 -- 修复了与自定义发动机曲线相关的错误
1.0.3 -- 修复了错误,加快了测试速度
1.0.2 -- 在车辆质量属性上强制使用 np.float64 类型
1.0.1 -- 为车辆添加了 vehYear 属性和其他一些小改动。1.0.0 -- 实现了 unittest 包。将能源审计计算基于实际速度。更新了此文件。改进了文档。车辆可以作为字典实例化。0.1.5 -- 更新为与 ADOPT 兼容。0.1.4 -- 错误修复:现在 mcEffMap 对第一个元素为零的情况具有鲁棒性。0.1.3 -- 错误修复:方法 set_init_calcs 不会覆盖 fcEffMap。0.1.2 -- 通过不运行需要 xlwings 的内容来解决 xlwings 的 os 依赖问题。功能测试改进。自动化了 jitclass 对象的类型化。0.1.1 -- 现在包括与 Excel 匹配的标签燃料经济性和/或电池 kW-hr/mi 值,并测试与 Excel 值和 CPU 时间进行基准测试。

贡献者

Chad Baker -- [email protected]
Aaron Brooker -- [email protected]
Kyle Carow -- [email protected]
Robin Steuteville -- [email protected]
Jeffrey Gonder -- [email protected]
Jacob Holden -- [email protected]
Jinghu Hu -- [email protected]
Jason Lustbader -- [email protected]
Sean Lopp -- [email protected]
Matthew Moniot -- [email protected]
Grant Payne -- [email protected]
Laurie Ramroth -- [email protected]
Eric Wood -- [email protected]

依赖关系

~28–43MB
~703K SLoC