6 个版本
0.1.6 | 2024 年 2 月 22 日 |
---|---|
0.1.5 | 2023 年 8 月 21 日 |
0.1.3 | 2023 年 7 月 27 日 |
#761 在 过程宏 中
每月 85 次下载
在 fastsim-core 中使用
47KB
738 行
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 -v python/fastsim/tests/
- 运行
用法
要查看和运行示例,导航到 ./python/fastsim/demos
并运行各种 *demo.py 文件以查看 fastsim 用例。fastsim/tests 中还有其他示例。
将 FASTSim 添加为 Rust 依赖项
通过 GitHub
将此行
fastsim-core = { git = "https://github.com/NREL/fastsim/", branch = "fastsim-2" }
添加到您的 Cargo.toml 文件中,根据需要修改 branch
键。
通过 Cargo
FASTSim 作为 Rust 包 可用,可以通过以下命令将其添加到依赖项中
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 -- 日志修复,过程宏重组,一些 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 -- 修复bug,将 ==
更改为 =
1.2.3 -- veh_file
可以作为独立参数传递。如果提供了 fcEffMap
,则 fcEffType
可以是任何内容,否则强制执行类型。
1.2.2 -- 增加了对一些冲突的车辆参数的检查。车辆参数 fcEffType
和 vehPtType
必须是字符串类型。
1.2.1 -- 改进了时间膨胀,并添加了对其的测试
1.1.7 -- get_numba_veh() 和 get_numba_cyc() 现在可以从已经 jitted 对象中调用
1.1.6 -- 修复了与 numba 兼容性的另一个 bug,并添加了相应的单元测试
1.1.5 -- 修复了 fcPeakEffOverride 和 mcPeakEffOverride 与 numba 兼容性的 bug
1.1.4 -- 修复了 fcPeakEffOverride 和 mcPeakEffOverride 的 nan bug
1.1.3 -- 为可选的负载时间电机和发动机峰值覆盖提供了支持
1.1.2 -- 使车辆加载更加健壮
1.1.1 -- 使车辆加载更加健壮
1.1.0 -- 将 jitclasses 分离到自己的模块,使车辆发动机和电机效率设置更加健壮
1.0.4 -- 修复了自定义发动机曲线的 bug
1.0.3 -- 修复了 bug,加快了测试速度
1.0.2 -- 强制车辆质量属性使用 np.float64 类型
1.0.1 -- 添加了 vehYear
属性到车辆和其他一些小改动。1.0.0 -- 实现了 unittest 包。将能量审计计算基于达到的速度。更新了此文件。改进了文档。车辆可以作为字典实例化。0.1.5 -- 更新为与 ADOPT 兼容。0.1.4 -- Bug 修复:现在 mcEffMap
对第一个元素为零的情况更加健壮。0.1.3 -- Bug 修复:fastsim.vehicle.Vehicle
方法的 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]
依赖
~3.5–4.5MB
~89K SLoC