数学建模Python图论习题

数学建模简明教程-基于python

第五章 图与网络优化



题目

本文章为自己解答的教材答案:


三、3如表5.3是某运输问题的相关数据,将次问题转换为最小费用最大流问题,画出网络图并求解。

在这里插入图片描述

二、题解

1.问题分析

要使用要使用最大流算法,必须构造一个发点s,和收点t,设出边和边的容量,且要解决最小费用问题需要设出费用且根据链路经行赋权,再构造有向赋权图。
构造有向图(V,E,f)V为图中的节点集合,E为vivj边的集合,C为每条边的容量,
Bij为每条边的费用。
(c,f)第一个数字为容量,f第二各数字为费用
在这里插入图片描述

代码如下(示例):


from platform import node
import numpy as np
import networkx as nx
L=[('s','A',8,0),('s','B',7,0),
('A','1',8,20),('A','2',8,24),('A','3',8,5),
('B','1',7,30),('B','2',7,22),('B','3',7,20),
('1','t',4,0),('1','t',5,0),('1','t',6,0)
]
node=['s']+['A','B']+[str(i) for i in range(1,4)]+['t']
G=nx.DiGraph();n=len(node)
G.add_nodes_from(node)
for k in range(len(L)):
    G.add_edge(L[k][0],L[k][1],capacity=L[k][2],weight=L[k][3])
mincostFlow =nx.max_flow_min_cost(G,'s','t')
print('max flow',mincostFlow)
mincost=nx.cost_of_flow(G,mincostFlow)
print('min cost',mincost)

flow_mat=np.zeros((n,n))
for i,adj in mincostFlow.items():
    for j,f in adj.items():
        flow_mat[node.index(i),node.index(j)]=f
print('max flow:',sum(flow_mat[:-1]))
print('min cost max flow zero:',flow_mat)


2.运行结果

(示例):
max flow {‘s’: {‘A’: 6, ‘B’: 0}, ‘A’: {‘1’: 6, ‘2’: 0, ‘3’: 0}, ‘B’: {‘1’: 0, ‘2’: 0, ‘3’: 0}, ‘1’: {‘t’: 6}, ‘2’: {}, ‘3’: {}, ‘t’: {}}
min cost 120
max flow: [0. 6. 0. 6. 0. 0. 6.]
min cost max flow zero: [[0. 6. 0. 0. 0. 0. 0.]
[0. 0. 0. 6. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 6.]
[0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0.]]


问题总结

最短路径下的最大流量容量为6,在迭代了n次数后,没有出现负增长。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数学建模中,Python是一个非常常用的编程语言。有很多优秀的Python代码库和开源项目可以用于数学建模的实践。可以通过参考这些代码库和项目,学习函数设计的实践经验,并积极参与Python社区,与其他开发者交流经验和学习资源。 另外,对于某些具体的数学建模,可以使用Python来进行求解。例如,可以通过将一个运输问转换为最小费用最大流问,然后画出相应的网络图,并使用Python来求解。 此外,0-1整数规划是一类特殊的整数规划问,其中变量的取值只能是0或1。它主要用于求解互斥的决策问、互斥的约束条件问、固定费用问和分派问。对于这类问,也可以使用Python来进行建模和求解。 因此,如果你在数学建模中需要使用Python代码,可以参考相关的代码库和开源项目,学习函数设计的实践经验,并使用Python来转换和求解特定的问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python函数综合案例.md](https://download.csdn.net/download/qq_42431718/88241199)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [数学建模Python图论习题](https://blog.csdn.net/m0_54603060/article/details/125773073)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [用Python进行数学建模(一)](https://blog.csdn.net/m0_46692607/article/details/126784109)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值