7个版本
0.1.6 | 2024年2月22日 |
---|---|
0.1.5 | 2023年8月21日 |
0.1.3 | 2023年7月27日 |
#359 in 编码
每月 29次下载
520KB
10K SLoC
FASTSim
描述
这是NREL的FASTSimTM的Python/Rust版本,基于原始的Excel实现。将努力保持此软件与Excel版本之间的核心方法一致。
所有类和方法都有自我文档。
安装
Python
按照以下步骤设置和激活一个Python环境(兼容Python 3.8 - 3.10;我们推荐Python 3.10)。
Anaconda
- 创建:
conda create -n fastsim python=3.10
- 激活:
conda activate fastsim
venv
根据您的操作系统可能会有一些差异
-
PowerShell (Windows)
- 创建:
python -m venv fastsim-venv
-- 名称由用户决定 - 激活:
fastsim-venv/Scripts/Activate.ps1
- 创建:
-
Bash (即Unix/Linux/mac)
- 创建:
python -m venv fastsim-venv
-- 名称由用户决定 - 激活:
source fastsim-venv/bin/activate
- 创建:
-
命令提示符 (Windows)
- 创建:
python -m venv fastsim-venv
-- 名称由用户决定 - 激活:
fastsim-venv/Scripts/activate.bat
- 创建:
FASTSim
通过PyPI
在上述创建的Python环境中,运行 pip install fastsim
。
从头开始构建
开发者可能想要将代码安装到本地,以便可以编辑FASTSim文件(pip的-e
标志提供了这种行为)。此选项可能很有用,因为FASTSim将安装到安装位置,并且每次重新导入FASTSim时都会传播任何更新。要执行此操作,您需要安装Rust工具链。
- 选项 1:在根目录下运行
sh build_and_test.sh
。 - 选项 2
- 运行
pip install -e ".[dev]"
可选测试步骤 - 运行
cd rust/ && cargo test
- 运行
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 -- 增加了对一些冲突车辆参数的检查。车辆参数 fcEffType
和 vehPtType
必须是字符串类型。
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