% @name: ctm_add_lane
% @objective: add a lane to the Cell-Transmission Model.
function index = ctm_add_link(t,len,n_lanes,sat_rate,in_rate,out_rate)
% t(type): 0(normal)|1(input)|2(output); int
% len: length of the link (meter); float
% n_lanes: number of the lanes; int
% sat_rate: saturation flow rate (veh/s); float
% in_rate: input flow rate (veh/s); float
% out_rate: rate of exit flow to all input flow; float[0,1]
% index: return index of the new lane/link
% declare the variables
global ctm_valid ctm_sim ctm_veh_length ctm_cell_length ctm_cells ctm_links ctm_lanes
if ~ctm_valid
error('The CTM has not been initialized.');
end
if ctm_sim
error('No construction after starting the simulation.');
end
n_cell = length(ctm_cells);
n_link = length(ctm_links);
n_lane = length(ctm_lanes);
cap = len/ctm_veh_length;
n_lanes = max(round(n_lanes),1);
sat_rate = sat_rate*n_lanes;
switch t
case 0
if cap<3*ctm_cell_length
n=3;
else
n=round(cap/ctm_cell_length);
end
c_cap = num2cell(cap/n*n_lanes*ones(1,n));
ctm_cells(n_cell+1:n_cell+n) = struct('type',0,...
'rate',sat_rate,...
'cap',c_cap,...
'length',0,'pos_in',0,'pos_out',0,'in',0,'out',0,'delay',0);
ctm_cells(n_cell+n+1) = struct('type',2,...
'rate',Inf,...
'cap',Inf,...
'length',0,'pos_in',0,'pos_out',0,'in',0,'out',0,'delay',0);
ctm_cells(n_cell+n+2) = struct('type',1,...
'rate',in_rate,...
'cap',Inf,...
'length',0,'pos_in',0,'pos_out',0,'in',0,'out',0,'delay',0);
l_type = cell(1,n-1); l_cells = cell(1,n-1); l_p = cell(1,n-1);
l_type{1} = 2; l_cells{1} = [n_cell+1,n_cell+2,n_cell+n+1]; l_p{1} = 1-out_rate;
l_type{2} = 1; l_cells{2} = [n_cell+2,n_cell+n+2,n_cell+3]; l_p{2} = 1;
for i=3:(n-1)
l_type{i} = 0; l_cells{i} = [n_cell+i,n_cell+i+1]; l_p{i} = 1;
end
ctm_links(n_link+1:n_link+n-1) = struct('type',l_type,'cells',l_cells,'p',l_p,'access',1);
ctm_lanes(n_lane+1)=struct('type',0,'cap',cap*n_lanes,'sat_rate',sat_rate,'in_rate',in_rate,'out_rate',out_rate,...
'in_cell',n_cell+n+2,'out_cell',n_cell+n+1,'o_cell',n_cell+1,'d_cell',n_cell+n,'out_link',n_link+1);
case 1
n=max(round(cap/ctm_cell_length),1);
c_cap = num2cell(cap/n*n_lanes*ones(1,n));
ctm_cells(n_cell+1) = struct('type',1,...
'rate',in_rate,...
'cap',Inf,...
'length',0,'pos_in',0,'pos_out',0,'in',0,'out',0,'delay',0);
ctm_cells(n_cell+2:n_cell+n+1) = struct('type',0,...
'rate',sat_rate,...
'cap',c_cap,...
'length',0,'pos_in',0,'pos_out',0,'in',0,'out',0,'delay',0);
ctm_lanes(n_lane+1)=struct('type',1,'cap',cap*n_lanes,'sat_rate',sat_rate,'in_rate',in_rate,'out_rate',0,...
'in_cell',n_cell+1,'out_cell',0,'o_cell',n_cell+2,'d_cell',n_cell+n+1,'out_link',0);
l_cells = cell(1,n);
for i=1:n
l_cells{i} = [n_cell+i,n_cell+i+1];
end
ctm_links(n_link+1:n_link+n) = struct('type',0,'cells',l_cells,'p',1,'access',1);
case 2
ctm_cells(n_cell+1) = struct('type',2,...
'rate',Inf,...
'cap',Inf,...
'length',0,'pos_in',0,'pos_out',0,'in',0,'out',0,'delay',0);
ctm_lanes(n_lane+1)=struct('type',2,'cap',Inf,'sat_rate',Inf,'in_rate',0,'out_rate',1,...
'in_cell',0,'out_cell',n_cell+1,'o_cell',n_cell+1,'d_cell',n_cell+1,'out_link',0);
end
index = n_lane+1;
没有合适的资源?快使用搜索试试~ 我知道了~
基于Matlab实现细胞传输模型cell数组(源码+说明文档).rar
共42个文件
m:30个
png:11个
md:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 141 浏览量
2023-03-22
15:51:53
上传
评论
收藏 73KB RAR 举报
温馨提示
1、资源内容:基于Matlab实现细胞传输模型cell数组(源码+说明文档).rar 2、适用人群:计算机,电子信息工程、数学等专业的学习者,作为“参考资料”参考学习使用。 3、解压说明:本资源需要电脑端使用WinRAR、7zip等解压工具进行解压,没有解压工具的自行百度下载即可。 4、免责声明:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。不一定能够满足所有人的需求,需要有一定的基础能够看懂代码,能够自行调试代码并解决报错,能够自行添加功能修改代码。由于作者大厂工作较忙,不提供答疑服务,如不存在资源缺失问题概不负责,谢谢理解。
资源推荐
资源详情
资源评论
收起资源包目录
基于Matlab实现细胞传输模型cell数组(源码+说明文档).rar (42个子文件)
基于Matlab实现细胞传输模型cell数组(源码+说明文档)
examples
ini_4int_queues.m 118B
build_ctm_4int.m 3KB
example_4intersection.m 2KB
ctm_4int.m 614B
ctm_setup.m 285B
说明文档.md 10KB
pics
ctm_4int.png 32KB
link_merge.png 2KB
lane_in.png 2KB
cell_out.png 690B
int_2phase.png 9KB
lane_out.png 2KB
lane_nor.png 4KB
cell_nor.png 449B
link_diverge.png 2KB
cell_in.png 645B
link_nor.png 816B
scripts
ctm_reset_delay.m 246B
ctm_check_phases.m 482B
ctm_stop.m 307B
ctm_check_cells.m 357B
ctm_read_lane_inputs.m 521B
ctm_read_lanes.m 613B
ctm_add_link.m 4KB
ctm_start.m 1010B
ctm_read_lane_outputs.m 432B
ctm_set_queue.m 712B
ctm_add_inputs.m 457B
ctm_clean_all.m 732B
reset_ctm.m 1KB
ctm_read_cells.m 349B
ctm_read_total_delay.m 285B
ctm_read_phases.m 395B
ctm_simulation.m 3KB
ctm_read_lane_delays.m 543B
ctm_set_phase.m 839B
ctm_add_phase.m 2KB
ctm_add_int.m 1KB
ctm_add_lane.m 4KB
ctm_mod_lane_rate.m 1KB
ctm_clean_outputs.m 367B
ctm_switch_int.m 822B
共 42 条
- 1
资源评论
Matlab仿真实验室
- 粉丝: 2w+
- 资源: 2180
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- html+css+'青春献礼二十大 红色旅游助乡村'为主题的网页设计 2022年参与学校网页设计比赛时完成的
- Unity 模型布尔运算插件
- eCANtools工具,CAN资料包
- 129335283047061xiazaigongjuxiang(去重软件).apk
- Android环境检测工具,检测ksu,lsp,magisk等
- WordPress后台美化插件QuarterAdmin分享
- PCB_Project单片机绘制 (2024-5-11 22-22-13).zip
- nccl-local-repo-ubuntu2204-2.21.5-cuda12.4-1.0-1-amd64
- STM32移植LVGL源码工程 stm32移植GUI-Guider源码 LVGL移植源码
- Screenshot_20240522_084328_com.tencent.mm.jpg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功