当前位置: 首页 > news >正文

教育网站解决方案宁德市旅游景点大全

教育网站解决方案,宁德市旅游景点大全,做网站属于技术开发吗,做网站的相关协议Python数学规划案例:路径优化CVRP容量限制的车辆路径问题(Capacitated Vehicle Routing Problem, CVRP)可描述为从一个配送中心出发,用多辆车对多个需求点进行配送,满足货车容量约束下使配送路程最短。每个需求点都有固定的货物需求&#xff…

Python数学规划案例:路径优化CVRP

容量限制的车辆路径问题(Capacitated Vehicle Routing Problem, CVRP)可描述为从一个配送中心出发,用多辆车对多个需求点进行配送,满足货车容量约束下使配送路程最短。每个需求点都有固定的货物需求,货物不可拆分,只能由一辆车配送;每辆车携带的货物总量不能超过货车的容量。

数学模型

cc2d38c2b6a99fe946f9bc2e8888fbe9.png

数据集

http://vrp.atd-lab.inf.puc-rio.br/index.php/en/

包含节点坐标、货物需求量和货车容量等数据。

Python代码

0)载入packages

from math import sqrt

from docplex.mp.model import Model

import matplotlib.pyplot as plt

import numpy as np

1)把数据集文件下载下来,本文的例子使用“P-n16-k8.vrp”

n表示节点数;k表示车辆数;配送中心为0号节点。

2)生成class CVRP,指定读写文件目录

class CVRP:

def __init__(self):

self.mDir = "D:\\pycharm\\CVRP\\"

self.mDir_input = "i\\"

3)定义读数据函数read_data

def read_data(self):

ls_fn = self.mDir + self.mDir_input

filename = "P-n16-k8.vrp"

with open(ls_fn + filename, "r") as f:

data_list = []

for i in range(9):

data_list.append(f.readline().strip().split(":"))

K = int(data_list[2][1])

N = int(data_list[5][1])

Q = int(data_list[7][1])

node_x = []

node_y = []

D = []

C = np.zeros([N, N])

for i in range(N):

n, x, y = f.readline().strip().split(" ")

node_x.append(float(x))

node_y.append(float(y))

f.readline()

for i in range(N):

n, d = f.readline().strip().split(" ")

D.append(int(d))

for i in range(N):

for j in range(N):

C[i][j] = sqrt((node_x[i]-node_x[j])**2+(node_y[i]-node_y[j])**2)

C = np.round(C).astype("int32")

return N, K, D, C, Q, node_x, node_y

4)定义求解数学规划模型的函数solvebycolex

其中涉及到cplex的函数或属性,例如 binaryvarcube, binaryvarmatrix, integervarmatrix, minimize, sum, addconstraints, addconstraint, solve, objectivevalue, solutionvalue。

def solve_by_cplex(self, N, K, D, C, Q):

# Model

mdl = Model("CVRP")

# Decision variables

x = mdl.binary_var_cube(N, N, K, name="x")

y = mdl.binary_var_matrix(N, K, name="y")

u = mdl.integer_var_matrix(N, K, name="u")

# Objective

mdl.minimize(mdl.sum(C[i, j] * x[i, j, k] for i in range(N) for j in range(N) for k in range(K))) # (1)

# Constraints

mdl.add_constraints(mdl.sum(y[i, k] for k in range(K)) == 1 for i in range(1, N)) # (2)

mdl.add_constraint(mdl.sum(y[0, k] for k in range(K)) == K) # (3)

mdl.add_constraints(mdl.sum(x[i, j, k] for j in range(N)) == mdl.sum(x[j, i, k] for j in range(N))

for i in range(N) for k in range(K)) # (4)

mdl.add_constraints(mdl.sum(x[i, j, k] for j in range(N)) == y[i, k] for i in range(N) for k in range(K)) # (5)

mdl.add_constraints(mdl.sum(D[i] * y[i, k] for i in range(N)) <= Q for k in range(K)) # (6)

mdl.add_constraints(u[i, k] - u[j, k] + Q * x[i, j, k] <= Q - D[j] for i in range(1, N) for j in range(1, N)

for k in range(K)) # (7)

mdl.add_constraints(D[i] <= u[i, k] for i in range(1, N) for k in range(K)) # (8)

mdl.add_constraints(u[i, k] <= Q for i in range(1, N) for k in range(K)) # (8)

# 约束(9)可加可不加,加了求解速度更快

mdl.add_constraints(x[i, i, k] == 0 for i in range(N) for k in range(K)) # (9)

# solve

mdl.solve(log_output=True)

# output

print("obj:%s" % mdl.objective_value)

tour = {}

for k in range(K):

list_i = []

list_j = []

list_k = [0]

for i in range(N):

for j in range(N):

if x[i, j, k].solution_value > 0:

list_i.append(i)

list_j.append(j)

for l in range(len(list_i)):

ds = list_i.index(list_k[-1])

list_k.append(list_j[ds])

tour[k] = list_k

print("K=", k, ":", list_k)

return tour

5)定义函数plot绘制路径图

def plot(self, tour, node_x, node_y):

for k in range(len(tour)):

list_k = tour[k]

c = (np.random.rand(), np.random.rand(), np.random.rand())

for i in range(0, len(list_k) - 1):

plt.plot([node_x[list_k[i]], node_x[list_k[i + 1]]],

[node_y[list_k[i]], node_y[list_k[i + 1]]], color=c, linewidth=2)

plt.scatter(node_x, node_y)

plt.show()

6)编写main部分代码

if __name__ == "__main__":

a = CVRP()

N, K, D, C, Q, node_x, node_y = a.read_data()

tour = a.solve_by_cplex(N, K, D, C, Q)

a.plot(tour, node_x, node_y)

扩展阅读

Python 数学规划

Python数学规划案例:一维装箱

Python数学规划案例四:资源约束的最短路径

Python数学规划案例三:最短路径

Python数学规划案例二

Python数学规划之Cplex之旅

Python数学规划案例一

Python数学规划案例一模型

Python: 数学规划

Python数学结构

Python数据结构

Python图

Python二叉树

Python排序

Python查找算法

Python递归

Python链表

Python栈

Python基础:没有更简单

几分钟做个Web应用

Python利器

Python: 数据库之SQLite

Python: Pandas

43431f3d3ee67bbb7212f1a4574e69f2.png

http://www.lbrq.cn/news/2460547.html

相关文章:

  • 哪个网站可以学做包子seo快速排名软件首页
  • 张艺兴粉丝做的网站seo网络推广技术员招聘
  • 江门市建设银行网站情感营销经典案例
  • 住房城乡建设网站查询宜兴百度推广公司
  • 铭万做的网站怎么样百度推广服务
  • 山东青岛网站建设公司网络舆情分析
  • 网站备案代理广州抖音推广
  • win2008iis7配置网站企业查询信息平台
  • 装饰设计软件湖北seo服务
  • 装饰网站建设的方案ppt谈谈自己对市场营销的理解
  • wordpress百度网盘什么叫seo
  • 网站设计师培训班推广赚钱app哪个靠谱
  • 建设政府门户网站百度网页排名怎么提升
  • 长安大学门户网站是谁给做的网站标题seo外包优化
  • 网上网站怎么做友情链接外链
  • 大连网站排名优如何去推广一个app
  • 凡客vancl的网站标题淘宝指数入口
  • 东方市住房和城乡建设局网站网络培训seo
  • 南沙规划建设局网站饥饿营销案例
  • 途牛电子商务网站建设人民网 疫情
  • 环保网页设计素材厦门seo优化推广
  • 接单做网站如何制作自己的网页链接
  • 企业门户网站服务器网站seo最新优化方法
  • wordpress screen廊坊seo管理
  • 景区网站建设的意义谷歌seo网站运营
  • 仙居微信网站开发陕西优化疫情防控措施
  • 国外服务器购买seo免费教程
  • 深圳企业网站建设推广服务网络营销工资一般多少
  • 办公室装修方案郑州seo网络推广
  • 网络科技公司骗术seo成功的案例和分析
  • 详解力扣高频SQL50题之1141. 查询近30天活跃用户数【简单】
  • 雨雪雾冰全预警:交通气象站为出行安全筑起“隐形防护网”
  • Python 面向对象基础
  • 像素、视野、光源,都有哪些因素影响测量精度?
  • RCE真实漏洞初体验
  • 秋招Day19 - 分布式 - 理论