运筹学经典问题(四):多商品网络流问题

问题描述

多商品网络流问题(Multicommodity Network Flow, MCNF)是指在一个图网络中,多个商品从各自起点运输到各自终点的问题。

在这里插入图片描述

更具体的,给定一个图网络 G = ( V , A ) G=(V, A) G=(V,A)

K K K:表示商品的集合;

( s k , t k , d k ) (s_k,t_k, d_k) (sk,tk,dk):表示商品 k k k的起点、终点和需求量;

u i j u_{ij} uij:弧段 ( i , j ) ∈ A (i, j) \in A (i,j)A的容量;

c i j k c_{ij}^k cijk:商品 k k k在弧段 ( i , j ) ∈ A (i, j) \in A (i,j)A上流动的单位成本。

MCNF问题的目标就是在图网络中,找到一条使得总运输成本最低,且能满足各个商品需求量的路径。

数学建模

变量:
x i j k x_{ij}^k xijk:商品 k k k在弧段 ( i , j ) (i, j) (i,j)上运输的货量;

m i n ∑ ( i , j ) ∈ A ∑ k ∈ K c i j x i j s . t . ∑ j x i j − ∑ j x j i = { d k , i = s k , k ∈ K − d k , i = t k , k ∈ K 0 , e l s e , ∀ i ∈ V , k ∈ K , i ≠ s k , j ≠ t k ∑ k ∈ K x i j k ≤ u i j , ∀ ( i , j ) ∈ A min \sum_{(i, j)\in A}\sum_{k \in K}c_{ij}x_{ij}\\ s.t. \sum_jx_{ij} - \sum_jx_{ji} =\begin{cases} d_k, i=s_k,k\in K\\ -d_k, i=t_k, k\in K\\ 0, else, \forall i \in V, k \in K, i \neq s_k, j \neq t_k \end{cases}\\ \sum_{k\in K} x_{ij}^k \leq u_{ij}, \forall (i,j) \in A min(i,j)AkKcijxijs.t.jxijjxji= dk,i=sk,kKdk,i=tk,kK0,else,iV,kK,i=sk,j=tkkKxijkuij,(i,j)A

目标函数表示最小化运输成本;

第一个约束为流量平衡约束,对于每个商品,分别对于其起点、终点和途径点做了约束(起点:流出-流入=需求量,终点:流出-流入= -需求量,途径点:流出-流入=0);

第二个约束对网络中的每条边的流量做了约束,不得超过最大容量。

性质

当MCNF中的决策变量可以为小数时,该问题为一个线性规划问题;当MCNF中的决策变量仅能取整数时,该问题是一个NP-complete(也是NP-hard)问题。todo: 补一篇文章梳理一下NP-hard、NP-complete的含义

问题求解

todo:python代码补充

参考资料

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

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

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

相关文章

MTK Android P Sensor架构(一)

需求场景: 本来如果只是给传感器写个驱动并提供能读取温湿度数据的节点,是一件比较轻松的事情,但是最近上层应用的同事要求我们按照安卓标准的流程来,这样他们就能通过注册一个服务直接读取传感器事件数据了。这样做的好处就是第…

TiDB存储引擎的初步认识

文章目录 TiDB简介分布式系统CAP 理论一致性可用性分区容错性 应用场景关系型模型事务ACID 特性原子性一致性隔离性持久性 与传统非分布式数据库架构对比TiDB 分布式数据库整体架构 TiDB简介 TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同…

静态路由原理与配置

文章目录 静态路由原理与配置一、路由器的工作原理1、路由概述2、路由器的工作原理 二、路由表的形成1、路由表2、路由表的形成 三、静态路由和默认路由1、静态路由的缺点2、默认路由(是特殊的静态路由)3、查看路由表 四、路由器转发数据包的封装过程五、…

Django模型

一、model 文件中的类的建立: 对应的是数据库中的每个表,类中有什么字段,表就会对应的生成某个字段,主键id字段会自己生成; 数据库中的文件获取:只能通过模型类.objects来获取,不能通过模型类…

TikTok与虚拟现实的完美交融:全新娱乐时代的开启

TikTok,这个风靡全球的短视频平台,与虚拟现实(VR)技术的深度结合,为用户呈现了一场全新的娱乐盛宴。虚拟现实技术为TikTok带来了更丰富、更沉浸的用户体验,标志着全新娱乐时代的开启。本文将深入探讨TikTok…

数据结构与算法-动态规划-买卖股票的最佳时机

买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交…

C# WPF上位机开发(内嵌虚拟机的软件开发)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 学习过halcon的同学都知道,它不仅有很多的图像算子可以使用,而且调试很方便。每一步骤的调试结果,都可以看到对…

C语言内存池的使用场景和代码示例

当然可以。在C语言中,内存池是一种用于管理内存分配的技术。使用内存池可以避免频繁地申请和释放内存,从而提高内存的使用效率,并减少内存碎片。内存池的使用场景主要包括需要频繁分配和释放相同大小的内存块的情况。下面是一个简单的C语言代…

什么是云际计算?SD-WAN在云际计算中的作用是什么?

在当今数字化时代,云计算已经成为企业处理数据和应用程序的主要方式。然而,随着物联网设备数量的增加和对实时性要求的提高,传统的集中式云计算模型面临一些挑战。为了解决这些问题,云际计算(Edge Computing&#xff0…

TDengine Kafka Connector将 Kafka 中指定 topic 的数据(批量或实时)同步到 TDengine

教程放在这里:TDengine Java Connector,官方文档已经写的很清晰了,不再赘述。 这里记录一下踩坑: 1.报错 java.lang.UnsatisfiedLinkError: no taos in java.library.pathat java.lang.ClassLoader.loadLibrary(ClassLoader.j…

亚马逊、速卖通、虾皮等平台有哪些测评补单方案,哪个比较好用

随着全球电子商务的迅速发展,跨境电商环境的潜力和机遇日益显现。跨境卖家们可以更便捷地将产品销售到全球市场,但同时也面临着更激烈的竞争、更严格的规定和更高的运营成本等挑战。在这个环境中,如何抓住机遇并克服挑战,成为了所…

Harmony OS基本介绍

作为华为最新的操作系统,Harmony OS在全球范围内引起了广泛的关注和探讨。它是一款开放、协同、可定制的智能终端操作系统,可以在不同的设备上实现无缝的互联互通。在本篇文章中,我们将对Harmony OS的使用做一个总结,分别从以下几…

数据库系统相关概念

数据:描述事务的符号记录。 数据库(DB):按一定的数据模型组织,描述和存储在计算机内的,有组织的,可共享的数据集合。 数据库管理系统(DBMS):位于用户和操作系统之间的一层数据管理软件。主要功能包括&#…

基于Qt的蓝牙Bluetooth在ubuntu实现模拟

​# 前言 Qt 官方提供了蓝牙的相关类和 API 函数,也提供了相关的例程给我们参考。笔者根据 Qt官方的例程编写出适合我们 Ubuntu 和 gec6818开发板的例程。注意 Windows 上不能使用 Qt 的蓝牙例程,因为底层需要有 BlueZ协议栈,而 Windows 没有。Windows 可能需要去移植。笔者…

Java 值传递、引用传递

开始之前,我们先来搞懂下面这两个概念: 形参&实参值传递&引用传递 方法的定义可能会用到 参数(有参的方法),参数在程序语言中分为: 实参(实际参数,Arguments)…

js中常用的字符串操作!!!

1.字符串的长度 // 字符串常用的操作 let str1 "qwasaertrayuasdf"; let str2 "asdfzcxfv"; // 1.字符串的长度 console.log(str1.length);2. charAt() : 返回指定索引位置的字符 // 字符串常用的操作 let str1 "qwasaertrayuasdf"; let str2…

jemeter,断言:响应断言、Json断言

一、响应断言 接口A请求正常返回值如下: {"status": 10013, "message": "user sign timeout"} 在该接口下创建【响应断言】元件,配置如下: 若断言成功,则查看结果树的接口显示绿色,若…

python自动化测试实战 —— 自动化测试框架的实例

软件测试专栏 感兴趣可看:软件测试专栏 自动化测试学习部分源码 python自动化测试相关知识: 【如何学习Python自动化测试】—— 自动化测试环境搭建 【如何学习python自动化测试】—— 浏览器驱动的安装 以及 如何更…

python+pytest接口自动化(10)-session会话保持

在接口测试的过程中,经常会遇到有些接口需要在登录的状态下才能请求,否则会提示请登录,那么怎样解决呢? 上一篇文章我们介绍了Cookie绕过登录,其实这就是保持登录状态的方法之一。 另外一种方式则是通过session进行会…

【python】魔术方法大全——基础篇

什么是魔术方法 所谓魔法方法,它的官方的名字实际上叫special method,是Python的一种高级语法,允许你在类中自定义函数,并绑定到类的特殊方法中。比如在类A中自定义__str__()函数,则在调用str(A())时,会自动…