智能网络与优化调度实验四

网络交通流量调度优化问题求解

不会吧,这真有人看?
BY hllinyu
2023年5月11日

实验内容

考虑一个具有𝑀条道路(分别标记为:1, … , 𝑀)以及𝑁条路径(分别标记为:1, … , 𝑁) 的交通网络。每条路径由若干道路构成,令R∈R^(M×N) 表示道路-路径指示矩阵,若第𝑚条道路在第𝑛条路径上则R_mn=1,否则 R m n = 1 R_{mn}=1 Rmn=1 R m n R_{mn} Rmn为矩阵𝑅第𝑚行第𝑛列的元素。第𝑛条路 径上的交通流量记为 f n ≥ 0 f_n\geq0 fn0第𝑚条道路上的交通容量上限记为 c = [ c 1 , ⋯   , c m ] T c=\left[c_1,\cdots,c_m\right]^T c=[c1,,cm]T。 为了满足第𝑚条道路上的交通容量约束,有
∑ n = 1 N R m n f n ≤ c m \sum_{n=1}^{N}{R_{mn}f_n}\le c_m n=1NRmnfncm

当一条道路上的交通流量越多时,道路就会变得更加拥堵,通过该条道路的时延也就 越长,因此第𝑚条道路上的平均时延可以简单建模为
d m = 1 c m − ∑ n = 1 N , R m n f n d_m=\frac{1}{c_m-\sum_{n=1}^{N}{,R_{mn}f_n}} dm=cmn=1N,Rmnfn1
第𝑛条路径上的总时延是通过这一条路径上的所有道路的时延之和,即
l n = ∑ m = 1 M R m n d m l_n=\sum_{m=1}^{M}{R_{mn}d_m} ln=m=1MRmndm
一般来说,当一条路径上的交通流量越大时,其产生的经济效益就会越多,对于第𝑛 条路径,其效用函数可以简单建模为 U n = l o g ( 1 + f n ) U_n=log{\left(1+f_n\right)} Un=log(1+fn),因此整个交通网络的效用函数为 U s u m ( f ) = ∑ n = 1 N U n U_{sum}\left(f\right)=\sum_{n=1}^{N}U_n Usum(f)=n=1NUn, 其中 f = [ f 1 , ⋯   , f N ] T f=\left[f_1,\cdots,f_N\right]^T f=[f1,,fN]T
我们的目标是通过合理规划每条路径上的交通流量{𝑓𝑛},在满足每一条路径时延不超 过𝐿的情况下,最大化整个网络的效用函数 U s u m U_{sum} Usum
1)请将上述问题建模成一个凸优化问题;
2)从 exp4_2_data.m中加载𝑁、𝑀、 𝐑、𝐜等数据,令 f = [ 0 , ⋯   , 0 ] T f=\left[0,\cdots,0\right]^T f=[0,,0]T计算此时所有路径时延的最大值,记为 L ˉ \bar{L} Lˉ
3)从 exp4_2_data.m 中加载𝑁、𝑀、 𝐑、𝐜等数据,令𝐿的取值为 L ˉ ×   ( 1 :   1 :   10 ) \bar{L}\times\ (1:\ 1:\ 10) Lˉ× (1: 1: 10),使用 Matlab 及 CVX 对 1)中建模出的问题进行求解,分别计算𝐿取不同值时对应的最大效用 U s u m U_{sum} Usum,绘制最大效用 U s u m U_{sum} Usum随网络最大时延𝐿变化的曲线(使用实线);(提示:反比例函数 不是凸函数,但是反比例函数的正半支是凸函数,CVX 中可以使用 inv_pos 函数)
4)从 exp4_2_data.m 中加载𝑁、𝑀、 𝐑、𝐜等数据,令 L = + ∞ L=+\infty L=+,使用 Matlab 及 CVX 对 1)中建模出的问题进行求解,得到此时的网络最大效用 U s u m U_{sum} Usum;将此时的最大效用 U s u m U_{sum} Usum 绘制在 3)中的图上(使用虚线)。(提示:此时路径时延约束始终不起作用,使用 yline 函 数绘制水平横线)

实验过程及结果(需要包含完整程序代码及运行结果截图)

  1. 建模
    在这个问题中,我们需要最大化整个网络的效用函数U_sum,同时满足每一条路径时延不超过L的情况下,通过合理规划每条路径上的交通流量{𝑓𝑛}。
    公式
    max ⁡ p ∑ i = 1 K r i s.t. r i = log ⁡ 2 ( 1 + p i h i ) , i = 1 , 2 , ⋯   , K ∑ i = 1 K p i ≤ P s u m , p i ≤ P m a x , i = 1 , 2 , ⋯   , K . \begin{aligned}&\max_{p} \sum_{i=1}^K r_i \\&\text{s.t.} \\& r_i=\log_2(1+p_ih_i), i=1,2,\cdots,K \\& \sum_{i=1}^K p_i \leq P_{\mathrm{sum}}, \\& p_i \leq P_{\mathrm{max}}, i=1,2,\cdots,K.\end{aligned} pmaxi=1Kris.t.ri=log2(1+pihi),i=1,2,,Ki=1KpiPsum,piPmax,i=1,2,,K.

  2. MATLAB 代码及运行结果截图

% 计算所有路径时延的最大值
f = zeros(N, 1);
d = 1 ./ (c - R * f);
L_max = max(R' * d);
disp(['所有路径时延的最大值:',num2str(L_max)])


% 计算𝐿取不同值时对应的最大效用 U_sum
L_values = L_max * (1:10);
U_sum_values = zeros(size(L_values));

for i = 1:length(L_values)
    L = L_values(i);
    
    cvx_begin
        variable f(N)
        d = inv_pos(c - R * f);
        U_sum = sum(log(1 + f));
        maximize(U_sum)
        subject to
            R' * d <= L
            f >= 0
    cvx_end
    
    U_sum_values(i) = cvx_optval;
end

% 令 L=+∞,计算网络最大效用U_sum
L_inf = inf;

cvx_begin
    variable f(N)
    d = inv_pos(c - R * f);
    U_sum_inf = sum(log(1 + f));
    maximize(U_sum_inf)
    subject to
        f >= 0
cvx_end

% 打印图片
plot(L_values, U_sum_values, 'b-', 'LineWidth', 1.5);
hold on;
yline(U_sum_inf, 'r--', 'LineWidth', 1.5);
xlabel('Maximum Path Delay (L)');
ylabel('Maximum Utility (U_{sum})');
legend('U_{sum} vs. L', 'U_{sum} at L = +\infty', 'Location', 'Northwest');

运行截图
在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值