固定路径车辆充电问题的求解方法

frvcp的Python项目详细描述


frvcpy:FRVCP的开源解算器

富FRVCPs

什么是FRVCP?在

假设一辆电动汽车(EV)被分配了一些访问地点的顺序(a固定路线),固定路线车辆充电问题(FRVCP)是一个寻找充电操作的最佳插入路径的问题,该问题使电动汽车以能量可行的方式穿越该路线所需的时间最小化。在

安装

在使用Python3.6+的虚拟环境中,可以通过

pip install frvcpy

测试安装

^{pr2}$

或从命令行:

frvcpy-test

使用frvcpy

使用兼容的实例文件(see the schema),从Python脚本求解FRVCP:

fromfrvcpyimportsolverroute=[0,40,12,33,38,16,0]# route to make energy feasibleq_init=16000# vehicle's initial energy level# using an existing instance from filefrvcp_solver=solver.Solver("instances/frvcpy-instance.json",route,q_init)# run the algorithmduration,feas_route=frvcp_solver.solve()# write solution to filefrvcp_solver.write_solution("my-solution.xml",instance_name="frvcpy-instance")print(f"Duration: {duration:.4}")# Duration: 7.339print(f"Energy-feasible route:\n{feas_route}")# Energy-feasible route:# [(0, None), (40, None), (12, None), (33, None), (48, 6673.379615520617), (38, None), (16, None), (0, None)]

或从命令行:

frvcpy --instance=instances/frvcpy-instance.json --route=0,40,12,33,38,16,0 --qinit=16000 --output=my-solution.xml
# Duration: 7.339# Energy-feasible route:# [(0, None), (40, None), (12, None), (33, None), (48, 6673.379615520617), (38, None), (16, None), (0, None)]

解决方案以VRP-REP格式编写,便于导入和可视化,VRP-REP Mapper正式解决方案规范可用here)。在

{{em1}示例中的示例^{1}有问题。为了方便访问示例文件,我们建议克隆存储库。

实例翻译

根据VRP-REP规范(availablehere)格式化的一些E-VRP实例可以进行实例转换。在

翻译可以通过

fromfrvcpyimporttranslator# Option 1) write the translated instance to filetranslator.translate("instances/vrprep-instance.xml",to_filename="instances/my-new-instance.json")# Option 2) make instance object to be passed directly to the solverfrvcp_instance=translator.translate("instances/vrprep-instance.xml")

或使用命令行:

# from CLI, only option is to write translated instance to file
frvcpy-translate instances/vrprep-instance.xml instances/my-new-instance.json

注意:如果将以“.xml”结尾的实例传递给解算器,则假定它是VRP-REP实例,解算器将自动尝试转换它。

VRP-REP实例的翻译要求

frvcpy的转换器假设VRP-REP实例的格式类似于Montoya et al. (2017) instances

  • CSs被标识为具有属性<node>的元素type="2"
  • 充电站节点有一个<custom>子元素,该子元素包含cs_type元素
  • 对于那些cs_type元素中出现的每个唯一的CS类型t,都存在一个带有属性cs_type=t的充电function元素
  • 这些function元素是^{custom元素中charging_functions元素的一部分
  • 仓库的节点ID为0,N个客户的ID为{1,…,N},CSs的ID为{N+1,…,N+C}

这种实例的一个很好的例子是example VRP-REP instance in the repository。在

下面是一个满足这些要求的较小示例:

<?xml version="1.0" encoding="UTF-8"?><instance><network><nodes><nodeid="0"type="0"><cx>74.83</cx><cy>51.85</cy></node><nodeid="1"type="1"><cx>68.77</cx><cy>75.69</cy></node><nodeid="11"type="2"><cx>57.0</cx><cy>57.04</cy><custom><cs_type>fast</cs_type></custom></node></nodes><euclidean/><decimals>14</decimals></network><fleet><vehicle_profiletype="0"><departure_node>0</departure_node><arrival_node>0</arrival_node><speed_factor>25.0</speed_factor><custom><consumption_rate>0.125</consumption_rate><battery_capacity>16.0</battery_capacity><charging_functions><functioncs_type="fast"><breakpoint><battery_level>0.0</battery_level><charging_time>0.0</charging_time></breakpoint><breakpoint><battery_level>13.6</battery_level><charging_time>0.317</charging_time></breakpoint><breakpoint><battery_level>15.2</battery_level><charging_time>0.383</charging_time></breakpoint><breakpoint><battery_level>16.0</battery_level><charging_time>0.517</charging_time></breakpoint></function></charging_functions></custom></vehicle_profile></fleet><requests><requestid="1"node="1"><service_time>0.5</service_time></request></requests></instance>

解决方案

为了解决FRVCPs,frvcpy实现了Froger等人(2019)的标记算法,在低运行时提供了最优的解决方案。该算法适应了实际问题的特点,如非线性充电功能、异构充电站技术以及站点间的多个CS访问。在

附加信息

有关求解器中使用的算法的详细信息,请参见Froger et al. (2019)。在

在HALhere上可以看到这个包的详细信息。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Java中从本地文件系统导入文件   spring boot如何在Java SpringBoot项目中集成Olingo(Odata)   java查找连续数组中缺少的第k个元素(超过时间限制)   java为什么在mySql中插入1/2行时会得到2/4行   java不能在静态上下文中使用它   File Observer方法的java My onEvent()部分不起作用   java Netty NioSocketChannel在多线程写入时收到中断消息   java将文件夹与父文件夹一起复制   java我的TictaToe代码出了什么问题?如何检查已采取的措施?   java Swing JTable更新   java如何将cordinates查找为int   如何使用selenium和java在firefox中打开新的空选项卡   java Gradle构建输出Jar未运行   java没有GET/WEBINF/jsp/login的映射。jsp