基于GA遗传优化的离散交通网络双层规划模型设计matlab仿真

目录

1.程序功能描述

2.测试软件版本以及运行结果展示

3.核心程序

4.本算法原理

5.完整程序


1.程序功能描述

基于GA遗传优化的离散交通网络双层规划模型设计.优化输出路段1和路段2的收费情况收敛过程。

2.测试软件版本以及运行结果展示

MATLAB2022a版本运行

3.核心程序

.....................................................................
while gen < MAXGEN;   
      rng(gen)
      gen
     
      P1 = 0.9;
      P2 = 1-P1;

      FitnV=ranking(Objv);    
 
      Selch=select('sus',Chrom,FitnV);    
      Selch=recombin('xovsp', Selch,P1);   
      Selch=mut( Selch,P2);   
      phen1=bs2rv(Selch,FieldD);   
      for a=1:1:NIND  
          if  gen == 1
              Cost1(a) = Cost1_intial;       
              Cost2(a) = Cost2_intial;               
          else
              Cost1(a) = phen1(a,1);   
              Cost2(a) = phen1(a,2);   
          end
          
          %计算对应的目标值
          [errs,a1,a2,eas,tas,xa3] = func_obj(Cost1(a),Cost2(a));
          E               = errs;
          JJ(a,1)         = E;
      end 
      Objvsel      =(JJ+eps);    
      [Chrom,Objv] = reins(Chrom,Selch,1,1,Objv,Objvsel);   
      gen          = gen+1; 

      %保存参数收敛过程和误差收敛过程以及函数值拟合结论
      Cost1gen(gen) = mean(Cost1);
      Cost2gen(gen) = mean(Cost2); 
      F(gen)        = mean(JJ);
      if gen <=32
         F2(gen)        = mean(F(1:gen));
         Cost1gen2(gen) = mean(Cost1gen(1:gen));
         Cost2gen2(gen) = mean(Cost2gen(1:gen));
      else
         F2(gen)        = mean(F(gen-32:gen)); 
         Cost1gen2(gen) = mean(Cost1gen(gen-32:gen));
         Cost2gen2(gen) = mean(Cost2gen(gen-32:gen));
      end
end 
 
Cost1f = Cost1gen(end);   
Cost2f = Cost2gen(end);   
 
figure;
plot(F2(2:end),'linewidth',2);
xlabel('迭代次数');
ylabel('上层目标函数');
grid on

figure;
plot(Cost1gen2(2:end),'r','linewidth',2);
hold on
plot(Cost2gen2(2:end),'b','linewidth',2);
xlabel('迭代次数');
ylabel('收费情况');
legend('路段1','路段2');
grid on

disp('流量');
eas
06_029m

4.本算法原理

1. 使用一氧化碳作为路网车辆尾气排放的代表指标,计算公式如下:

2. 双层规划模型
上层模型
采用多目标模型,系统总出行时间最小,同时区域排放最小

3.下层模型

采用固定需求的用户平衡(UE),总阻抗最小

N——网络中节点的集合;

L——网络中路段的集合;

R——网络中出发地的集合;

S——网络中目的地的集合;

 ——出发地 和目的地 之间的所有径路的集合;

 ——出发地 和目的地 之间的OD交通量;

5.完整程序

VVV

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
双层规划模型是一种特殊的数学规划模型,其特点是在一个规划问题中存在两个层次的决策者,其中一个决策者的决策会影响另一个决策者的决策。下面是一个简单的双层规划模型matlab代码示例: ```matlab % 定义上层规划问题的目标函数和约束条件 f_upper = @(x) x(1)^2 + x(2)^2; c_upper = @(x) [x(1) + x(2) - 1, x(1) - x(2) + 1]; % 定义下层规划问题的目标函数和约束条件 f_lower = @(y) y(1)^2 + y(2)^2 + y(3)^2; c_lower = @(y) [y(1) + y(2) - y(3)]; % 定义双层规划模型 model.objcon = f_upper; model.A = []; model.b = []; model.Aeq = c_upper; model.beq = [0, 0]; model.lb = [-Inf, -Inf]; model.ub = [Inf, Inf]; model.x0 = [0, 0]; model.options = optimoptions('fmincon', 'Display', 'iter'); % 定义下层规划模型的约束条件 constraint = @(x) deal([], c_lower(x)); x0 = [0, 0]; options = optimoptions('fmincon', 'Display', 'off'); % 解决双层规划模型 [x_upper, fval_upper] = fmincon(model); [y_lower, fval_lower] = fmincon(f_lower, x0, [], [], [], [], [], [], constraint, options); % 输出结果 disp(['Upper level objective function value: ', num2str(fval_upper)]); disp(['Upper level decision variables: [', num2str(x_upper(1)), ', ', num2str(x_upper(2)), ']']); disp(['Lower level objective function value: ', num2str(fval_lower)]); disp(['Lower level decision variables: [', num2str(y_lower(1)), ', ', num2str(y_lower(2)), ', ', num2str(y_lower(3)), ']']); ``` 在这个例子中,上层规划问题的目标函数为 $f(x) = x_1^2 + x_2^2$,约束条件为 $x_1 + x_2 = 1$ 和 $x_1 - x_2 = -1$,下层规划问题的目标函数为 $f(y) = y_1^2 + y_2^2 + y_3^2$,约束条件为 $y_1 + y_2 - y_3 = 0$。通过在上层规划问题中使用下层规划问题的最优解作为决策变量,可以得到一个双层规划模型。最后,使用matlab中的fmincon函数求解双层规划模型的最优解,并输出结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件算法开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值