运筹学经典问题(二):最短路问题

news2024/11/28 6:37:09

问题描述

给定一个图(有向图或无向图) G = ( V , E ) G = (V, E) G=(V,E) V V V是图中点的集合, E E E是图中边的集合,图中每条边 ( i , j ) ∈ E (i, j) \in E (i,j)E都对应一个权重 c i j c_{ij} cij(距离或者运输成本等),给定一个起点 u u u和一个终点 z z z,最段路问题就是寻找一条从 s s s出发,到达 z z z的距离最短或者成本最低的路径。
在这里插入图片描述

数学建模

定义:
I I I:点的集合;
o u t ( i ) out(i) out(i):离开点 i i i边的集合;
i n ( i ) in(i) in(i):进入点 i i i边的集合;
x e x_e xe:是否选择 e e e这条边,0-1变量;
m i n ∑ e ∈ E x e c e s . t . ∑ e ∈ o u t ( i ) x e − ∑ e ∈ i n ( i ) x e = { 1 , i = u − 1 , i = z 0 , e l s e min \sum_{e \in E}x_ec_e \\ s.t. \sum_{e \in out(i)}x_e - \sum_{e \in in(i)}x_e= \begin{cases} 1, i=u \\ -1, i=z \\ 0, else \end{cases} mineExeces.t.eout(i)xeein(i)xe= 1,i=u1,i=z0,else

上述模型优化目标为最小化路径距离,约束为进出平衡(分了3种点的类型去写约束:始发点只出不进、目的点只进不出、其他点进等于出)。

整数最优解特性

即使把变量 x e x_{e} xe松弛成 0 ≤ x e ≤ 1 0 \leq x_e \leq1 0xe1,原问题变成线性规划,该问题仍然存在整数最优解。

模型求解

调用求解器求解即可。

  • 后面补充代码。

参考资料

  1. 最短路径问题.
  2. 运筹优化常用算法、模型及案例实战:Python+Java 实现. 刘兴禄,熊望祺,臧永森,段宏达,曾文佳,陈伟坚.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1318669.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第7章 排序

前言 在这一章,我们讨论数组元素的排序问题。为简单起见,假设在我们的例子中数组只包含整数,虽然更复杂的结构显然也是可能的。对于本章的大部分内容,我们还假设整个排序工作能够在主存中完成,因此,元素的个…

Redis Cluster集群搭建 三主三从

Redis包下载 Linux: http://download.redis.io/releases/ Mac or Windows: https://redis.io/download/ 2.下载后解压进入文件夹(本次我的Redis版本是6.2.14版本) /redis/redis-6.2.14 开始安装 make instarll修改配置文件复制redis.conf 6…

pve8.1版本安装及环境初始化过程记录

背景 经历pve旧版本奔溃事件,果断重新购买了装备,做个稳定的pve环境,旧主机用于折腾其他系统,硬盘一定要用好的。 1.pve8.1.3系统版本安装 下载地址 Download Proxmox software, datasheets, agreements 使用种子下载会快一点儿…

英伟达盒子 Jetson Xshell连接串口查看日志方法(串口日志、盒子日志)

文章目录 连接串口xshell连接串口信息 连接串口 接盒子上的A2、B2,以及接地线: 另外一头接上电脑(我用的RS485转USB工具): xshell连接 协议选择SERIAL: 设置盒子厂商约定的端口号、波特率、数据位、停止位…

ElaticSearch 是如何建立索引的?

前面讲到了 NoSQL 数据库的应用,在关系型数据库和 NoSQL 数据库之外,还有一类非常重要的存储中间件,那就是文件索引。当你在电商网站搜索商品,或者在搜索引擎搜索资料时,都离不开基于文件索引的各种检索框架的支持。 …

十二星座对音乐有感觉但是唱得最不着调的排名。

第一名(狮子座)、第二名(水瓶座)、第三名(射手座) 第四名(金牛座)、第五名(摩羯座)、第六名(天秤座) 第七名(巨蟹座&#…

03 使用Vite开发Vue3项目

概述 要使用vite创建Vue3项目,有很多种方式,如果使用命令,则推荐如下命令: # 使用nvm将nodejs的版本切换到20 nvm use 20# 全局安装yarn npm install -g yarn# 使用yarnvite创建项目 yarn create vite不过,笔者更推荐…

解决“bat中文路径乱码“问题

今天,在使用.bat脚本,将hello.png从"D:\mypic\备份"目录,拷贝到"D:\mypic\备份"时;发现中文乱码,弹出如下对话框: 图(1) bat中文路径乱码 原来的命令是: copy D:\mypic\one\hello.png D:\mypic\备…

WordPress VIP收费下载插件Erphpdown v17.0.1 开心版

会员推广下载专业版 WordPress插件(erphpdown)是模板兔开发的一款针对虚拟资源收费下载/付费下载/付费视频/收费查看/付费阅读/付费查看/VIP下载查看的插件,经过完美测试运行于wordpress 3.x-5.x版本。后续模板兔会增加更多实用的功能。 模板…

1.10 实战:Postman生成在线接口文档

对于接口测试,最最关键的一个部分,就是接口文档,有了详细的接口文档,我们才能根据接口文档去写好我们的接口测试用例以及写好我们的接口自动化测试。目前比较常用的接口文档是两种方式 Swagger我们看一下Swagger的官网的例子就可以看到它有多方便了。我们打开REST API Docu…

开源的数据流技术,该选择Redpanda还是Apache Kafka?

本文将比较Apache Kafka和Redpanda两种开源的数据流技术,在云原生实时处理能力上的不同,以及如何在项目中做出选择。 目前,Apache Kafka不但成为了数据流处理领域事实上的标准,而且带动了同类产品的出现。Redpanda就是其中之一…

2. 基础数据结构-数组

2. 基础数据结构-数组 2.1 概念 数组是一种数据结构,它是一个由相同类型元素组成的有序集合。在编程中,数组的定义是创建一个具有特定大小和类型的存储区域来存放多个值。数组可以是一维、二维或多维的。每个元素至少有一个索引或键来标识。 2.2 数组特…

C++——C++11(1)

时至今日,C标准已经到了C23,但是你要说哪一次提出的标准最经 典,那C11一定会被人提及,C11带来了数量可观的变化,其中包 含了约140个新特性,以及对C03标准中约600个缺陷的修正,这使得 C11更像是从…

no module named ‘xxx‘

目录结构如下 我想在GCNmodel的model里引入layers的GraphConvolution:from GCNmodel.layers import GraphConvolution,但这样却报错no module named GCNmodel,而且用from layers import GraphConvolution也不行。然后用sys.path.appen(xxx)…

echarts地图的常见用法:基本使用、区域颜色分级、水波动画、区域轮播、给地图添加背景图片和图标、3d地图、飞线图

前言 最近几天用echarts做中国地图,就把以前写的demo:在vue中实现中国地图 拿来用,结果到项目里直接报错了,后来发现是因为版本的问题,没办法只能从头进行踩坑了。以下内容基于vue3 和 echarts 5.32 基本使用 获取地…

广受好评的开源基础大模型最全梳理,你最钟意哪一个?

2023 年即将过去。一年以来,各式各样的大模型争相发布。当 OpenAI 和谷歌等科技巨头正在角逐时,另一方「势力」悄然崛起 —— 开源。 开源模型受到的质疑一向不少。它们是否能像专有模型一样优秀?是否能够媲美专有模型的性能? 迄…

go原生http开发简易blog(一)项目简介与搭建

文章目录 一、项目简介二、项目搭建前置知识三、首页- - -前端文件与后端结构体定义四、配置文件加载五、构造假数据- - -显示首页内容 代码地址:https://gitee.com/lymgoforIT/goblog 一、项目简介 使用Go原生http开发一个简易的博客系统,包含一下功能…

CCF-CSP真题《202309-5 阻击》思路+ c++满分题解

想查看其他题的真题及题解的同学可以前往查看:CCF-CSP真题附题解大全 试题编号:202309-5试题名称:阻击时间限制:2.0s内存限制:512.0MB问题描述: 问题描述 上回提到,西西艾弗岛下方有一个庞大的遗…

PyTorch自动梯度计算(注意点)

if params.grad is not None: params.grad.zero_() 我们实际的运算往往会涉及到若干个requires-grad为true的张量进行运算,在这种情况下,Pytorch会计算整个计算图上的损失的导数,并把这些结果累加到grad属性中。多次调用backward()会导致梯度…

chrome升级后,调试vue在控制台输出总是显示cjs.js

当前chrome版本120.0.6099.72 在vue中使用console.log输出时,总是显示cjs.js多少多少行,不能显示源文件名及行数 【解决方案】 打开控制台的设置 左侧找到“Ignore List”,取消勾选"enable Lgnore Listing",并重启chr…