跳到主要内容

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

项目描述

frvcpy:FRVCP的开源解算器

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

什么是FRVCP?

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

安装

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

管道 安装 玻璃钢

测试安装

进口 frvcpy.测试
玻璃钢.测试.全部运行()

或从命令行:

frvcpy-测试

使用frvcpy

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

 玻璃钢 进口 解算器

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

#使用文件中的现有实例
frvcp求解器 = 解算器.解算器(“instances/frvcpy-instance.json”, 路线, q_输入)

#运行算法
期间, feas_route(有限元_路线) = frvcp解算器.解决()

#将解决方案写入文件
frvcp求解器.write_solution(写入解决方案)(“my-solution.xml”, 实例名称=“frvcpy-instance”)

打印((f)“持续时间:{期间:.4}")
#持续时间:7.339

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

或从命令行:

玻璃钢 --实例=实例/frvcpy-instance.json --路线=0,40,12,33,38,16,0 --奇尼特=16000 --输出=my-solution.xml(我的解决方案.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 version=“1.0”encoding=“UTF-8”?>
<实例>
  <网络>
    <节点>
      <节点 标识="0" 类型="0">
        <cx>74.83</cx>
        <cy>51.85</cy>
      </节点>
      <节点 标识="1" 类型="1">
        <cx>68.77</cx>
        <cy>75.69</cy>
      </节点>
      <节点 标识="11" 类型=“2”>
        <cx>57</cx>
        <cy>57.04</cy>
        <自定义>
          <cs_type>快速的</cs_type>
        </自定义>
      </节点>
    </节点>
    <欧几里德/>
    <小数>14</小数>
  </网络>
  <车队>
    <车辆配置文件 类型="0">
      <离开模式>0</deature_node>
      <到达节点>0</arrival_node>
      <速度系数>25</speed_factor>
      <自定义>
        <消耗_比率>0.125</consumption_rate>
        <电池容量>16</电池容量>
        <充电功能>
          <功能 cs_类型=“快速”>
            <断点>
              <电池液位>0</battery_level>
              <充电时间>0</charging_time>
            </断点>
            <断点>
              <电池液位>13.6</battery_level>
              <充电时间>0.317</charging_time>
            </断点>
            <断点>
              <电池液位>15.2</battery_level>
              <充电时间>0.383</charging_time>
            </断点>
            <断点>
              <电池水平>16</battery_level>
              <充电时间>0.517</charging_time>
            </断点>
          </功能>
        </charging_functions>
      </自定义>
    </vehicle_profile>
  </车队>
  <请求>
    <请求 标识="1" 节点="1">
      <服务时间>0.5</service_time>
    </request>
  </请求>
</instance>

解决者

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

其他信息

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

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

项目详细信息


下载文件

为您的平台下载文件。如果您不确定选择哪一个,请了解更多安装软件包.

来源分布

frvcpy-0.1.1.tar.gz(71.3千巴查看哈希)

已上传 来源

构建的分发

frvcpy-0.1.1-py3-无任何.whl(75.4千字节查看哈希)

已上传 蟒蛇3

由支持

美国焊接学会 美国焊接学会 云计算和安全赞助商 数据加密狗 数据加密狗 监测 快速地 快速地 内容交付网络 谷歌 谷歌 下载分析 微软 微软 PSF赞助商 Pingdom公司 Pingdom公司 监测 哨兵 哨兵 错误日志记录 状态页 状态页 状态页