物流路径规划用遗传算法解决实例

网上有很多关于遗传算法的教程,但基本千篇一律。这次物流课做了一个跟路径规划相关的案例,拿出来与大家分享。
先贴案例。案例摘自《企业物流管理》。

《 R&T批发公司》
R&T批发公司给全印度的零售商批发日用商品。公司在全国有很多仓库,作为存储点和货站供应周边城镇的零售点。供应普拉克萨姆(Prakasam)、冈都尔 (Guntur)、克利须那(Krishna)、西哥达瓦里(WestGodavari)、和东哥达瓦里 (EastGodavari)地区的仓库设在维查雅瓦达(Vijayawada)每周除周六和周日外,每天出去送货 (每月24天),每个城镇每月送货二次或四次,也就是每两周或每周送货一次。对某个镇子来说,每月按一定的周期送货两次,或者在第一、第三周,或者在第二、第四周。一周内送货的日子有调度员决定。于前者类似,可能制定五天内的任何一天送货。物流管理人员希望能为公司车队设计高效的送货路线,一方面将所需车辆数降到最低,另一方面整个月的车辆行驶总里程最短,并且认为这样能够使司机和车辆运营成本最低。
送货量以每次送货的平均销售额来表示,该数字为城内经停的所有零售点购货量的总和。该销售区的地图见图1,绘制坐标系,找出各城镇的坐标。坐标系的比例尺是1坐标单位等于12.2公里。由坐标距离转换成公路距离的转换系数为1.12公里。表 1给出了各点坐标和卸货点的时间。卸货时间指将货物从卡车卸到零售点站台所用的时间。因为一个镇子中可能有多个零售点,所以卸货时间表示城内所有零售点的总卸货时间。
目前有4部T407、4部T310卡车用于送货,每部卡车能装运500000卢比货物,T310 能运送350000卢比货物。卡车每天在该地区的平均行驶速度是40公里每小时。T407的经营成本是每月13500卢比货物,运送成本为每公里5卢比;T310的经营成本为每月7000卢比,运营成本为每公里3卢比。每部卡车配备两名雇员,一位司机,一位辅助人员。雇员的工资按月发放。如果在路上,每位雇员可得到每天60卢比的误餐补助和其他费用。计划在早上6点、中午12点和晚上6点休息。早餐和午餐每餐用30分钟,晚餐休息60分钟。休息时间可以不严格按计划执行。非正式的休息时间可以安排在一天的任何时间,要被计入行驶速度和卸货时间。雇员可以在晚上休息8个小时,第二天早上再上路。没有加班费,公司的政策是让雇员每天回到仓库,不在外面逗留。
正常情况下卡车从早上9 点送货。卡车回到仓库后在晚上装货,第二天早上再出发送货。卡车最早离开仓库的时间是中午12点,从周一早上直到周五。送货到远处需要早点出发来满足时间窗口和在途时间的要求等。短途送货的卡车可能在同一天回到仓库,花2 小时装货后由同一批雇员负责再次出发送货。如果同一批雇员多次送货则不多发补贴。
公司可以和第三方物流公司签约,单程送货到各城镇的费用为每公里15卢比(不考虑运量或卡车在城内的停留次数)。也可以同时使用自有运输和受雇运输模式。
问题 : 设计一个月的运营路线:
1. 所需的车辆数和车的型号。
2. 卡车行驶路线和经停顺序。
3. 四周一个月,到各城送货的日期。
4. 全月卡车使用的时间安排。
5. 雇员排班表。目标是使卡车、雇员和补贴成本最小化。

数学模型如下:(还不太会编辑公式,就先贴图了)
变量定义
函数定义-经营成本函数
函数定义-运送成本函数
函数定义-时间限制函数
函数定义-载重限制函数
数学模型

之前已经将所需数据转换成csv文件,之后直接使用,如果需要文件的可以发邮件到ZhangYuyang4D@163.com
以下是python实现。

"""
    solve the logistic problem in geneti algorithms
"""
# -*- coding : uft-8 -*-
import math
import numpy as np
import pandas as pd
import random as rnd
import matplotlib.pyplot as plt
import copy

"""
    with reading the file named 'logistic.csv'
    use "with open()"
"""
itemList = \
    [[0, 0.0, 'Vijayawada', 19.4, 15.1, 0, 0, 0.0],
 [1, 1.9323814116266074, 'Tanguturu', 14.5, 5.3, 6600, 2, 1.0],
 [2, 20.857190790708088, 'Podili', 10.7, 7.0, 24000, 2, 0.5],
 [3, 33.077041744388232, 'Ongole', 14.5, 6.2, 305000, 4, 2.5],
 [4, 33.077041744388232, 'Markapur', 7.7, 8.2, 60000, 2, 0.5],
 [5, 34.486376839557948, 'KaniGiri', 9.6, 5.1, 24000, 2, 2.5],
 [6, 34.486376839557948, 'Kondukur', 13.2, 3.5, 90000, 2, 1.0],
 [7, 35.762110362784796, 'Giddalur', 3.8, 5.0, 25000, 2, 1.0],
 [8, 35.762110362784796, 'Chirala', 17.2, 9.0, 98000, 4, 2.0],
 [9, 41.826126709510191, 'Bestavapetta', 6.3, 6.3, 25000, 2, 0.5],
 [10, 46.397278485704312, 'Addanki', 13.9, 8.8, 60000, 2, 0.5],
 [11, 47.372912618077464, 'Chilakalurupet', 15.4, 11.4, 92000, 2, 1.0],
 [12, 59.32442405620133, 'Narasaraopet', 14.5, 12.5, 100000, 4, 1.0],
 [13, 62.987927732225053, 'Vinukonda', 11.8, 11.0, 65000, 2, 1.0],
 [14, 62.987927732225053, 'Tadikonda', 18.1, 14.3, 60000, 2, 1.0],
 [15, 66.744129468890392, 'Sattenapalle', 15.2, 14.0, 45000, 2, 1.0],
 [16, 68.538275316497419, 'Repalie', 21.3, 10.6, 50000, 2, 1.0],
 [17, 73.544821959944969, 'Guntur', 18.0, 13.0, 450000, 4, 3.0],
 [18, 73.544821959944969, 'Vuyyuru', 21.3, 13.6, 39000, 4, 1.0],
 [19, 74.453128626270612, 'Tenali', 19.7, 12.5, 140000, 4, 1.0],
 [
  • 20
    点赞
  • 181
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值