固定路线车辆充电问题的求解器


许可证
公寓-2.0
安装
pip安装frvcpy==0.1.1

文档

frvcpy:FRVCP的开源解算器

丰富FRVCP的快速优化解决方案

什么是FRVCP?

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

安装

在使用Python 3.6+的虚拟环境中,可以通过以下方式安装frvcpy

pip安装frvcpy

测试安装

进口 油炸馅饼.测试
玻璃钢.测试.全部运行()

或从命令行:

frvcpy-测试

使用frvcpy

使用兼容的实例文件(查看模式),从Python脚本求解FRVCP:

 玻璃钢 进口 解算器

路线 =[0,40,12,33,38,16,0]#使能源可行的途径
q_输入 = 16000                      #车辆的初始能量水平

#使用文件中的现有实例
frvcp求解器 = 解算器.解算器(“instances/frvcpy-instance.json”,路线,质量信息)#运行算法
期间,feas_route(有限元_路线) = frvcp求解器.解决()#将解决方案写入文件
frvcp解算器.write_solution(写入解决方案)(“my-solution.xml”,实例名称=“frvcpy-instance”)打印(f“持续时间:{期间:.4}")#持续时间:7.339

打印(f“节能路线:\n个{feas_route(有限元_路线)}")#节能路线:
#[(0,无),(40,无)

或从命令行:

frvcpy--instance=instances/frvcpy-instance.json--route=0,40,12,33,38,16,0--qinit=16000--output=my-solution.xml#持续时间:7.339
#节能路线:
#[(0,无),(40,无)

解决方案写在VRP-REP软件易于导入和可视化的格式VRP-REP映射器(提供正式的解决方案规范在这里).

注:示例问题实例可在实例目录项目主页。为了方便访问示例文件,建议克隆存储库。

实例转换

实例翻译可用于根据VRP-REP规范格式化的某些E-VRP实例(可获得的在这里).

可以通过Python API进行翻译

 玻璃钢 进口 翻译

#选项1)将翻译后的实例写入文件
翻译.翻译(“instances/vrprep-instance.xml”,目标文件名(_F)=“instances/my-new-instance.json”)#选项2)使实例对象直接传递到解算器
frvcp_实例 = 翻译.翻译(“instances/vrprep-instance.xml”)

或使用命令行:

#从CLI中,唯一的选项是将转换后的实例写入文件frvcpy翻译实例/vrprep-instance.xml实例/my-new-instance.json

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

VRP-REP实例的翻译要求

frvcpy的转换器假设VRP-REP实例的格式与Montoya等人(2017年)的实例:

  • 客户服务被识别为<节点>具有属性的元素type=“2”
  • 充电站节点具有<自定义>包含cs_类型要素
  • 对于每个独特的CS类型t吨出现在那些cs_类型元素,存在充电功能具有属性的元素cs_type=t
  • 这些功能元素是充电功能中的元素车辆_配置文件习俗要素
  • 仓库具有节点ID 0,N个客户具有ID{1,…,N},而CS具有ID{N+1,…,N+C}

这种情况的一个很好的例子是存储库中的示例VRP-REP实例.

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

<?xml格式版本="1"编码="UTF-8型"?><实例><网络><节点><节点 身份证件="0" 类型="0"><cx公司>74.83</cx公司><塞浦路斯>51.85</塞浦路斯></节点><节点 身份证件="1" 类型="1"><cx公司>68.77</cx公司><塞浦路斯>75.69</塞浦路斯></节点><节点 身份证件="11" 类型="2"><cx公司>57.0</cx公司><塞浦路斯>57.04年</塞浦路斯><习俗><cs_类型>快速</cs_类型></习俗></节点></节点><欧几里得的/><小数>14</小数></网络><舰队><车辆_配置文件 类型="0"><出发_模式>0</出发_模式><到达_节点>0</到达_节点><速度系数>25.0美元</速度系数><习俗><消耗_比率>0.125</消耗_比率><电池_容量>16.0</电池_容量><充电功能><功能 cs_类型="快速的"><断点><电池液位>0.0</电池液位><充电时间>0.0</充电时间></断点><断点><电池液位>13.6</蓄电池液位><充电时间>0.317</充电时间></断点><断点><电池液位>15.2</电池液位><充电时间>0.383</充电时间></断点><断点><电池液位>16.0</电池液位><充电时间>0.517</充电时间></断点></功能></充电功能></习俗></车辆_配置文件></舰队><请求><请求 身份证件="1" 节点="1"><服务时间(_T)>0.5</服务时间(_T)></请求></请求></实例>

解决者

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

其他信息

有关解算器中使用的算法的详细信息,请参见Froger等人(2019年).

HAL上提供了此软件包的摘要在这里.