《数学建模与数学实验》第5版 网络优化 习题5.9

本文介绍了使用Floyd算法解决城市间最短路径问题,通过矩阵运算找出任意两个城市间的最低成本路线,并给出了具体示例。同时,针对工件加工顺序的优化问题,提出了基于调整时间的最小化策略,确定了最优加工顺序以减少总时间。
摘要由CSDN通过智能技术生成


参考教材:《数学建模与教学实验》第5版
提示:以下是本篇文章正文内容,来自参考教材课后习题。

1. 某公司在六个城市 C 1 , C 2 , … , C 6 C_1,C_2,…,C_6 C1,C2,,C6中都有分公司,从 C i 到 C j C_i到C_j CiCj的直接航程票价由下述矩阵的第(i,j)元素给出(∞表示无直达航班),该公司想算出一张任意两个城市之间最廉价路线表:

票价矩阵:
( 0 50 ∞ 40 25 10 50 0 15 20 ∞ 25 ∞ 15 0 10 20 ∞ 40 20 10 0 10 25 25 ∞ 20 10 0 55 10 25 ∞ 25 55 0 ) \left( \begin{matrix} 0& 50& \infty& 40& 25& 10\\ 50& 0& 15& 20& \infty& 25\\ \infty& 15& 0& 10& 20& \infty\\ 40& 20& 10& 0& 10& 25\\ 25& \infty& 20& 10& 0& 55\\ 10& 25& \infty& 25& 55& 0\\\end{matrix} \right) 050402510500152025150102040201001025252010055102525550
matlab解题:
floyd算法:计算每对顶点之间最短路
创建floyd函数:

function[D,R] = floyd(a)
n = size(a,1);
D = a
for i = 1:n
    for j =1:n
        R(i,j) = j;
    end
end
R

for K = 1:n
    for i = 1:n
        for j = 1:n
            if D(i,K) + D(K,j) < D(i,j)
               D(i,j) = D(i,K) + D(K,j);
               R(i,j) = R(i,K);
            end
        end
    end
    K
    D
    R
end

创建main函数调用:

% 加权图:带权邻接矩阵
a = [0 50 inf 40 25 10;
    50 0 15 20 inf 25;
    inf 15 0 10 20 inf;
    40 20 10 0 10 25;
    25 inf 20 10 0 55;
    10 25 inf 25 55 0];
[D,R] = floyd(a)

在这里插入图片描述
C 1 − C 2 : 1 − 6 − 2 ; 35 C_1-C_2:1-6-2;35 C1C2:162;35
C 1 − C 3 : 1 − 5 − 3 , 1 − 6 − 4 − 3 ; 45 C_1-C_3:1-5-3,1-6-4-3;45 C1C3:153,1643;45
C 1 − C 4 : 1 − 6 − 4 , 1 − 5 − 4 ; 35 C_1-C_4:1-6-4,1-5-4;35 C1C4:164,154;35
C 1 − C 5 : 1 − 5 ; 25 C_1-C_5:1-5;25 C1C5:15;25
C 1 − C 6 : 1 − 6 ; 10 C_1-C_6:1-6;10 C1C6:16;10
C 2 − C 3 : 2 − 3 ; 15 C_2-C_3:2-3;15 C2C3:23;15
C 2 − C 4 : 2 − 4 ; 20 C_2-C_4:2-4;20 C2C4:24;20
C 2 − C 5 : 2 − 4 − 5 ; 30 C_2-C_5:2-4-5;30 C2C5:245;30
C 2 − C 6 : 2 − 6 ; 25 C_2-C_6:2-6;25 C2C6:26;25
C 3 − C 4 : 3 − 4 ; 10 C_3-C_4:3-4;10 C3C4:34;10
C 3 − C 5 : 3 − 5 , 3 − 4 − 5 ; 20 C_3-C_5:3-5,3-4-5;20 C3C5:35,345;20
C 3 − C 6 : 3 − 4 − 6 ; 35 C_3-C_6:3-4-6;35 C3C6:346;35
C 4 − C 5 : 4 − 5 ; 10 C_4-C_5:4-5;10 C4C5:45;10
C 4 − C 6 : 4 − 6 ; 25 C_4-C_6:4-6;25 C4C6:46;25
C 5 − C 6 : 5 − 4 − 6 ; 35 C_5-C_6:5-4-6;35 C5C6:546;35

2. 求图中每一结点到其他结点的最短路.

在这里插入图片描述
同第一题,修改输入矩阵:
( 0 3 10 ∞ ∞ ∞ ∞ ∞ 3 0 ∞ 5 ∞ ∞ ∞ ∞ 10 ∞ 0 6 ∞ ∞ ∞ ∞ ∞ 5 6 0 4 ∞ 10 ∞ ∞ ∞ ∞ 4 0 9 5 ∞ ∞ ∞ ∞ ∞ 9 0 3 4 ∞ ∞ ∞ 10 5 3 0 6 ∞ ∞ ∞ ∞ ∞ 4 6 0 ) \left( \begin{matrix} 0& 3& 10& \infty& \infty& \infty& \infty& \infty\\ 3& 0& \infty& 5& \infty& \infty& \infty& \infty\\ 10& \infty& 0& 6& \infty& \infty& \infty& \infty\\ \infty& 5& 6& 0& 4& \infty& 10& \infty\\ \infty& \infty& \infty& 4& 0& 9& 5& \infty\\ \infty& \infty& \infty& \infty& 9& 0& 3& 4\\ \infty& \infty& \infty& 10& 5& 3& 0& 6\\ \infty& \infty& \infty& \infty& \infty& 4& 6& 0\\\end{matrix} \right) 0310305100656041040959034105306460

在这里插入图片描述

3. 在一个城市交通系统中取出一段如下图所示, 其入口为顶点 v1, 出口为顶点 v8. 每条弧段旁的数字表示通过该路段所需的时间. 每次转弯需要附加时间为 3 秒.求 v1 到 v8 的最短时间路径.

在这里插入图片描述

matlab求解:

v12 = 1;v23 = 3;v24 = 2;v35 = 1;v47 = 2;v56 = 6;v57 = 2;v68 = 3;v78 = 4;fujia = 3;
f1 = v12+v23+v35+v56+fujia+v68;
f2 = v12+v23+v35+fujia+v57+fujia+v78;
f3 = v12+fujia+v24+fujia+v47+v78;
min = f1;
if f2 < min
    min = f2;
end
if f3 < min
    min = f3;
end
min

f1
f2
f3

在这里插入图片描述
最短路径为15,v1-v2-v4-v7-v8。

4. 有四个工件等待在同一台机器上加工,若加工的先后次序可以任意,各工件之间的调整时间如下表,试确定最优加工顺序.

ABCD
A015205
B3003015
C2525015
D2035100

matlab求解:

clear;clc
l=[ 0 15 20 5
30 0 30 15
25 25 0 16
20 35 10 0];
n=length(l(1,:));%l为A,B,C,D之间构成的邻接矩阵
y=zeros(1,n);
mi=l(1,2)+l(2,3)+l(3,4);%假设最优顺序为A→B→C→D,mi为最短调整时间
for i=1:n %从A到D依次开始
    for j=1:n
        if (i~=j)
    for s=1:n
        if (j~=s&&s~=i)
    for t=1:n
        if (t~=s&&t~=i&&t~=j)
        if mi>l(i,j)+l(j,s)+l(s,t)
mi=l(i,j)+l(j,s)+l(s,t);
y(1)=i;y(2)=j;y(3)=s;y(4)=t;
        end
        end
    end
        end
    end
        end
    end
end
mi
y

在这里插入图片描述
总时间最小为:40;顺序为:ABDC

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值