输出效果

本模型为包含一条变速车道和出入匝道的快速路交织区仿真模型。

车道编号

换道规则和不含出入匝道的路段的区别在于换道分为自由换道和强制换道。车辆在不同区域有不同换道状态,而车辆本身又有出匝道和直行(入匝道车辆归为直行车辆)两种状态,共同决定车辆换道行为。在自由换道区域(1,2,3,7,8,10,11,12车道)内按照普通路段换道规则换道,且不区分出匝道和直行车辆,即,若前车阻碍车辆对速度的追求则必定换道,且优先左换道,若前车无影响则概率左换道,而为了编程方便,规定两车道交界处,即,下一时间步将会驶出所在车道的车辆不允许换道。而强制换道区域(4,5,6,9,15)内换道规则因车辆状态的不同而不同,直行状态车辆任然按自由换道区域内车辆换道规则换道,出匝道车辆换道规则为,4车道中出匝道车辆强制向5车道换道,5车道车辆强制向6车道换道,6车道出匝道车辆不允许换道,这符合现实生活中车辆提前驶入靠变速车道车道的情况。其中,15车道车辆中为直行状态车辆(入匝道车辆)换道规则与出匝道车辆换道规则相反。

跟驰规则和NaSch模型基本规则相同,区分是驶出所在车道会驶入下一车道。

边界条件依然是周期边界条件,四个驶出车道,四个驶入车道,一一对应。

还是先贴代码,再说缺点哈。


脚本

%%  交织区仿真
clc;
clear;
%%  参数设置
lane_length = 100; %车道长度
car_rate = 0.2;%车道占有率
time_span = 0.1;%图片输出时间间隔
p_out = 0.5;%车辆出匝道概率
v_max = 5;%最大速度
time_max = 1000;%仿真步长
p_changelane = 0.3;%车辆换道概率
p_slowdown = 0.3;%随机慢化概率
%%  调用函数
main(v_max,lane_length,time_span,p_out,car_rate,time_max,p_changelane,p_slowdown);

跟驰函数

function [lanes,car] = NaSch(lanes,car,v_max,lane_length,p_slowdown,car_number,p_out)
for id = 1:car_number%%  加速car.v(id) = min(car.v(id)+1,v_max);%%  获取车辆前空元胞数以及是否符合满足周期循环[cycle,empty] = get_empty_front(id,car,v_max,lane_length,lanes);%%  判断车辆是否满足周期边界条件if  cycle %0是头车,1非头车%%  减速car.v(id) = min( car.v(id) , empty );%%  概率慢化if  rand(1) <= p_slowdowncar.v(id) = max( car.v(id)-1,0 );end%%  位置更新lanes ( car.lane(id),car.n(id) ) = 0;                 %位置更新前元胞变为无车car.n(id) = car.n(id) +car.v(id);lanes ( car.lane(id),car.n(id) ) = 1;   elseif  car.lane(id)==10||car.lane(id)==11||car.lane(id)==12||car.lane(id)==13%%  10,11,12,13执行周期边界条件switch  car.lane(id)case 10lanes(car.lane(id),car.n(id)) =0;car.lane(id) = 1;car.n(id) = 1;lanes(car.lane(id),car.n(id)) = 1;if rand(1)<p_outcar.state(id) = 1;%概率驶出匝道 endcase 11lanes(car.lane(id),car.n(id)) =0;car.lane(id) = 2;car.n(id) = 1;lanes(car.lane(id),car.n(id)) = 1;if rand(1)<p_outcar.state(id) = 1;%概率驶出匝道 endcase 12lanes(car.lane(id),car.n(id)) =0;car.lane(id) = 3;car.n(id) = 1;lanes(car.lane(id),car.n(id)) = 1;if rand(1)<p_outcar.state(id) = 1;%概率驶出匝道endcase 13lanes(car.lane(id),car.n(id)) =0;car.lane(id) = 14;car.n(id) = 1;lanes(car.lane(id),car.n(id)) = 1;car.state(id) = 0;%状态更改为直行endelseif car.lane(id)==1||car.lane(id)==2||car.lane(id)==3||car.lane(id)==4||car.lane(id)==5||car.lane(id)==6||car.lane(id)==7||car.lane(id)==8||car.lane(id)==9%%  1,2,3,4,5,6,7,8,9驶入另一条车道[~,empty_next] = get_empty(car.lane(id)+3,1,v_max,lanes,lane_length);%获得与驶入车道前车的距离%%  减速car.v(id) = min( car.v(id) , empty+empty_next );%%  概率慢化if  rand(1) <= p_slowdowncar.v(id) = max( car.v(id)-1,0 );end%%  位置更新if  car.v(id)<=empty%%  仍在当前车道lanes(car.lane(id),car.n(id)) = 0;car.n(id) = car.n(id)+car.v(id) ;lanes(car.lane(id),car.n(id)) = 1;else%%  驶入下一车道lanes(car.lane(id),car.n(id)) = 0;car.lane(id) = car.lane(id)+3;car.n(id) = 1+car.v(id)-empty;lanes(car.lane(id),car.n(id)) = 1;endelseif car.lane(id) ==14%15车道首个元胞无车则驶入,否则在入口等待if  lanes(15,1)==0lanes(car.lane(id),car.n(id))=0;car.lane(id)=15;car.n(id)=1;lanes(car.lane(id),car.n(id))=1;elselanes(14,car.n(id))=0;car.n(id)=lane_length;lanes(car.lane(id),car.n(id))=1;endelse%15车道头车在11车道首个元胞无车则驶入,否则在出口等待if  lanes(13,1)==0lanes(car.lane(id),car.n(id))=0;car.lane(id)=13;car.n(id)=1;lanes(car.lane(id),car.n(id))=1;elselanes(car.lane(id),car.n(id))=0;car.n(id)=lane_length;lanes(car.lane(id),car.n(id))=1;endendend end
end
end

主函数

function  main(v_max,lane_length,time_span,p_out,car_rate,time_max,p_changelane,p_slowdown)
%%  空间,车道,车辆状态初始化
car_number = fix(14*lane_length*car_rate); %车辆数
[space,lanes,car]=initialiaze (v_max,lane_length,p_out,car_number);
%%  显示初始图像
H = imshow (space,[-1,0]);
%%  开始仿真
for time = 1:time_max
%%  换道
[car,lanes] = change_lane(lanes,car,car_number,p_changelane,v_max,lane_length);
%%  跟驰
[lanes,car] = NaSch(lanes,car,v_max,lane_length,p_slowdown,car_number,p_out);
%%  车道状态更新
space(1,1:lane_length) = lanes(1,:);
space(2,1:lane_length) = lanes(2,:);
space(3,1:lane_length) = lanes(3,:);
space(1,lane_length+1:2*lane_length) = lanes(4,:);
space(2,lane_length+1:2*lane_length) = lanes(5,:);
space(3,lane_length+1:2*lane_length) = lanes(6,:);
space(1,2*lane_length+1:3*lane_length) = lanes(7,:);
space(2,2*lane_length+1:3*lane_length) = lanes(8,:);
space(3,2*lane_length+1:3*lane_length) = lanes(9,:);
space(1,3*lane_length+1:4*lane_length) = lanes(10,:);
space(2,3*lane_length+1:4*lane_length) = lanes(11,:);
space(2,3*lane_length+1:4*lane_length) = lanes(12,:);
space(5:end,3*lane_length) = lanes(13,:)';
space(end:-1:5,2*lane_length+1) = lanes(14,:)';%注意此处的转置和元素反取
space(4,2*lane_length+1:3*lane_length) = lanes(15,:);
%%  输出图像
space = -1*space;
set(H,'CData',space);
pause(time_span);
space = -1*space;
end
end

初始化函数

function  [space,lanes,car]=initialiaze (v_max,lane_length,p_out,car_number)
%%  创建空间
space = zeros(4+lane_length,4*lane_length);
%非车道空间状态为0.1
space(4:end,1:2*lane_length)=0.1;
space(5:end,2*lane_length+1:3*lane_length-1)=0.1;
space(4:end,3*lane_length+1:4*lane_length)=0.1;
%创建车道矩阵
lanes = zeros(15,lane_length);%每行储存对应编号车道位置信息
%%  车辆结构体的创建
car = struct('v',zeros(1,car_number),'lane',zeros(1,car_number),'n',zeros(1,car_number),'state',zeros(1,car_number));
%依次为速度,所在车道编号,所在车道元胞位置,行驶状态
%%  车辆状态初始化
for a =1:14%向 a 车道随机投放车辆for  id = fix(car_number/14)*(a-1)+1 : fix(car_number/14)*acar.lane(id) = a;car.n(id) = fix( 1+rand(1)* (fix(lane_length-1) ) );lanes( car.lane(id),car.n(id) ) = 1; %有车状态为1car.v(id) = fix( 1+rand(1)*(v_max-1) );%随机生成速度if  rand(1)<p_outcar.state(id) = 1;%出匝道车辆state值为1endend
end
end

获取前车距离及判断是否可能驶出车道函数

%用于求出cell_i与前方元胞空元胞数并判断是否是否可能驶出车道,cycle返回值为1不可能,0可能
%  输出EmptyFront为输入车辆处元胞前方空元胞数(超过v_max按v_max算)
function [cycle,empty_front] = get_empty_front(id,car,v_max,lane_length,lanes)
empty_front = 0;
cycle=1;
if  car.n(id) < lane_length-v_max       %判断是否到边界(lane_length-v_max)%%  求出车辆前方空元胞数front = car.n(id) + 1;while front~=car.n(id) + v_max if lanes( car.lane(id),front )==1empty_front = front- (car.n(id)+1);break;endfront = front +1;endif  front == car.n(id) + v_max empty_front = v_max;end
else%% 判断是否是头车,非头车必定无法驶出车道front= min( ( car.n(id) + 1 ),lane_length );while front ~=lane_lengthif  lanes( car.lane(id),front )==1empty_front = front- min( ( car.n(id) + 1 ),lane_length );    %不是头车就输出空格数break;endfront = front +1;endif  front == lane_length %前方无车则可能驶出车道empty_front = lane_length-car.n(id);cycle = 0;end
end
end

获取指定位置与前后首车距离

%%  本函数用于求输入车辆前后车距
%%  输入参数m,n为一辆车的位置信息,输出该车所在车道前后车距,车距超过安全车距按安全车距算
function [empty_back,empty_front] = get_empty(m,n,v_max,lanes,lane_length)
empty_back = 0;
empty_front = 0;%%  求出车辆后方空元胞数for back=  n :-1: max(n-v_max ,1)if lanes( m,back )==1empty_back =n-back;break;endempty_back = v_max;end%%  获取车辆前方空元宝数for front=  n: min(n+ v_max,lane_length) if lanes( m,front )==1empty_front = front-n;break;endempty_front = v_max;end
end

右侧车辆换道函数

function [lanes,car] = change_lane_right(id,lanes,car,v_max,lane_length,p_changelane,empty_safe)
%右侧车道车辆换道函数[~,empty]=get_empty_front(id,car,v_max,lane_length,lanes);%获取前方车距[empty_left_back,empty_left_front] = get_empty(car.lane(id)-1,car.n(id),v_max,lanes,lane_length);if  empty<min(car.v(id)+1,v_max)%%  前车阻碍车辆对速度的追求if  empty_left_front>=empty && empty_left_back>=empty_safe && lanes( car.lane(id)-1,car.n(id) )==0 %旁边车道距离更大,左后,旁边均安全%%  满足安全条件换道lanes(car.lane(id),car.n(id)) =0;car.lane(id) = car.lane(id)-1;lanes(car.lane(id),car.n(id)) =1;endelse%%  前车无影响则概率换道if  rand(1)<p_changelaneif  empty_left_front>=empty && empty_left_back>=empty_safe && lanes( car.lane(id)-1,car.n(id) )==0 %旁边车道距离更大,左后,旁边均安全%%  满足安全条件换道lanes(car.lane(id),car.n(id)) =0;car.lane(id) = car.lane(id)-1;lanes(car.lane(id),car.n(id)) =1;endendend
end

中间车辆换道函数

function [lanes,car] = change_lane_middle(id,lanes,car,v_max,lane_length,p_changelane,empty_safe)%中间车道换道
%%  获取周边车距
[~,empty]=get_empty_front(id,car,v_max,lane_length,lanes);%获取前方车距
[empty_right_back,empty_right_front] = get_empty(car.lane(id)+1,car.n(id),v_max,lanes,lane_length);
[empty_left_back,empty_left_front] = get_empty(car.lane(id)-1,car.n(id),v_max,lanes,lane_length);
if  empty<min(car.v(id)+1,v_max)%%  前车阻碍车辆对速度的追求%%  优先左换道if  empty_left_front>=empty && empty_left_back>=empty_safe && lanes( car.lane(id)-1,car.n(id) )==0 %旁边车道距离更大,左后,旁边均安全%%  满足左换道安全条件换道lanes(car.lane(id),car.n(id)) =0;car.lane(id) = car.lane(id)-1;lanes(car.lane(id),car.n(id)) =1;elseif  empty_right_front>=empty && empty_right_back>=empty_safe && lanes( car.lane(id)+1,car.n(id) )==0 %旁边车道距离更大,右后,旁边均安全%%  满足右换道安全条件换道lanes(car.lane(id),car.n(id)) =0;car.lane(id) = car.lane(id)+1;lanes(car.lane(id),car.n(id)) =1;end
else%%  前车无影响则概率向左换道if  rand(1)<p_changelaneif  empty_left_front>=empty && empty_left_back>=empty_safe && lanes( car.lane(id)-1,car.n(id) )==0 %旁边车道距离更大,左后,旁边均安全%%  满足安全条件换道lanes(car.lane(id),car.n(id)) =0;car.lane(id) = car.lane(id)-1;lanes(car.lane(id),car.n(id)) =1;endendend
end

左侧车辆换道函数

function [lanes,car] = change_lane_left(lanes,car,id,v_max,lane_length,p_changelane,empty_safe)%%  获取周边车距[~,empty]=get_empty_front(id,car,v_max,lane_length,lanes);%获取前方车距[empty_right_back,empty_right_front] = get_empty(car.lane(id)+1,car.n(id),v_max,lanes,lane_length);if  empty<min(car.v(id)+1,v_max)%%  前车阻碍车辆对速度的追求if  empty_right_front>=empty && empty_right_back>=empty_safe && lanes( car.lane(id)+1,car.n(id) )==0 %旁边车道距离更大,右后,旁边均安全%%  满足安全条件换道lanes(car.lane(id),car.n(id)) =0;car.lane(id) = car.lane(id)+1;lanes(car.lane(id),car.n(id)) =1;endelse%%  前车无影响则概率换道if  rand(1)<p_changelaneif  empty_right_front>=empty && empty_right_back>=empty_safe && lanes( car.lane(id)+1,car.n(id) )==0 %旁边车道距离更大,右后,旁边均安全%%  满足安全条件换道lanes(car.lane(id),car.n(id)) =0;car.lane(id) = car.lane(id)+1;lanes(car.lane(id),car.n(id)) =1;endendend
end

换道函数

function [car,lanes] = change_lane(lanes,car,car_number,p_changelane,v_max,lane_length)empty_safe = v_max; %安全车距for id=1:car_numberif  car.lane(id)==1||car.lane(id)==2||car.lane(id)==3||car.lane(id)==7||car.lane(id)==8||car.lane(id)==10||car.lane(id)==11||car.lane(id)==12%%  自由换道区域:1,2,3,7,8,10,11,12[cycle,~]=get_empty_front(id,car,v_max,lane_length,lanes);%判断是否驶出所在车道if  cycle  %驶出车道车辆不允许换道%%  非驶出所在车道车辆if  car.lane(id) == 1||car.lane(id) ==7||car.lane(id) ==10%%  左侧车道换道[lanes,car] = change_lane_left(lanes,car,id,v_max,lane_length,p_changelane,empty_safe);elseif  car.lane(id)==2||car.lane(id)==8||car.lane(id)==11%%  中间车道换道[lanes,car] = change_lane_middle(id,lanes,car,v_max,lane_length,p_changelane,empty_safe);else%%  右侧车道换道[lanes,car] = change_lane_right(id,lanes,car,v_max,lane_length,p_changelane,empty_safe);end          endelseif  car.lane(id)==4||car.lane(id)==5||car.lane(id)==6||car.lane(id)==9||car.lane(id)==15%%  强制换道区域switch  car.lane(id)%%  6,9车道直行车辆只能向左变道,出匝道车辆不变道case 6if car.state(id)==0%1是出匝道车辆,0是直行车辆[lanes,car] = change_lane_right(id,lanes,car,v_max,lane_length,p_changelane,empty_safe);endcase 9if car.state(id)==0%1是出匝道车辆,0是直行车辆[lanes,car] = change_lane_right(id,lanes,car,v_max,lane_length,p_changelane,empty_safe);else%%  9中出匝道车辆强制向15换道[empty_right_back,empty_right_front] = get_empty(15,car.n(id),v_max,lanes,lane_length);if  empty_right_front>=1 && empty_right_back>=fix(v_max/2) && lanes(15,car.n(id))==0%15车道前方有距离且后方距离大于等于最大车速一半且旁边无车即可换道%%  强制换道lanes(9,car.n(id)) = 0;car.lane(id) = 15;lanes(9,car.n(id)) = 1;endendcase 4if car.state(id)==0%1是出匝道车辆,0是直行车辆%%  4车道直行车辆只能向右变道[lanes,car] = change_lane_left(lanes,car,id,v_max,lane_length,p_changelane,empty_safe);else%%  强制向5换道[empty_right_back,empty_right_front] = get_empty(5,car.n(id),v_max,lanes,lane_length);if  empty_right_front>=1 && empty_right_back>=fix(v_max/2) && lanes(5,car.n(id))==0%5车道前方有距离且后方距离大于等于最大车速一半且旁边无车即可换道%%  强制换道lanes(4,car.n(id)) = 0;car.lane(id) = 5;lanes(5,car.n(id)) = 1;endendcase 5if  car.state(id)==0[lanes,car] = change_lane_middle(id,lanes,car,v_max,lane_length,p_changelane,empty_safe);else%%  强制向6换道[empty_right_back,empty_right_front] = get_empty(6,car.n(id),v_max,lanes,lane_length);if  empty_right_front>=1 && empty_right_back>=fix(v_max/2) && lanes(6,car.n(id))==0%6车道前方有距离且后方距离大于等于最大车速一半且旁边无车即可换道%%  强制换道lanes(5,car.n(id)) = 0;car.lane(id) = 6;lanes(6,car.n(id)) = 1;endendcase 15%%  15车道入匝道车辆强制向9换道,出匝道车辆不换道if  car.state(id)==0%此处0为入匝道车辆[empty_right_back,empty_right_front] = get_empty(9,car.n(id),v_max,lanes,lane_length);if  empty_right_front>=1 && empty_right_back>=fix(v_max/2) && lanes(9,car.n(id))==0%9车道前方有距离且后方距离大于等于最大车速一半且旁边无车即可换道%%  强制换道lanes(15,car.n(id)) = 0;car.lane(id) = 9;lanes(9,car.n(id)) = 1;endendendendend
end

目前缺点其实很多,只说几个,因为本人专业知识也很短缺。

1.没有设定车辆必须在到达某个位置前完成强制换道,同时,也没有考虑车辆无法完成强制换道的情况。

2.没有考虑混合车种,且只能模拟恒定密度情况的交通流。

3.强制换道规则合理性可能比较差,只参考了一篇论文中的强制换道规则,以及为了编程方便,先采取的强制换道规则是目标车道与前车距离大于等于一个元胞,与目标车道后车距离大于等于最大车速一半且目标车道旁边无车既可强制换道。

最后还是希望有小伙伴可以加我一起学习哈。

元胞自动机交通流模型c++_MATLAB——含出入匝道的交织区快速路元胞自动机模型...相关推荐

  1. 【元胞自动机】元胞自动机交通流模拟仿真【含Matlab源码 1252期】

    ⛄一.元胞自动机简介 1 元胞自动机发展历程 最初的元胞自动机是由冯 · 诺依曼在 1950 年代为模拟生物 细胞的自我复制而提出的. 但是并未受到学术界重视. 1970 年, 剑桥大学的约翰 · 何 ...

  2. 【元胞自动机】元胞自动机交通流仿真【含Matlab源码 827期】

    ⛄一.元胞自动机简介 1 元胞自动机发展历程 最初的元胞自动机是由冯 · 诺依曼在 1950 年代为模拟生物 细胞的自我复制而提出的. 但是并未受到学术界重视. 1970 年, 剑桥大学的约翰 · 何 ...

  3. 【元胞自动机】基于元胞自动机模拟双车道交通流模型含靠右行驶matlab源码

    元胞自动机的初步理解 对元胞自动机的初步认识\ 元胞自动机(CA)是一种用来仿真局部规则和局部联系的方法.典型的元\ 胞自动机是定义在网格上的,每一个点上的网格代表一个元胞与一种有限的状\ 态.变化规 ...

  4. 论文推荐 | 综述:自动驾驶背景下的交通流模型研究

    导读 题目:<Automated vehicle-involved traffic flow studies: A survey of assumptions, models, speculat ...

  5. PanoSim仿真模型--交通流模型

    5.2.1 正常交通流模型 PanoSim 内置仿真正常驾驶场景的随机交通,称之为正常交通流模型(或称之为随机交通模型).随机交通流模型的参数设置,请参看 4.2.1.3 Traffic Tools ...

  6. 【元胞自动机】基于元胞自动机实现多车道不同间距交通流模型附Matlab源码

    1 简介 车辆的行驶受到本车道以及邻近车道前后邻近车辆的影响,在城市交 通中机非混合对车辆行走的影响尤为复杂.通过研究路段上机非混合通行交通流的本质特性,综合考虑非机动车对机动车换道规则及加减速规则的 ...

  7. 【元胞自动机】元胞自动机双车道交通流模型含靠右行驶【含Matlab源码 231期】

    ⛄一.元胞自动机简介 1 元胞自动机发展历程 最初的元胞自动机是由冯 · 诺依曼在 1950 年代为模拟生物 细胞的自我复制而提出的. 但是并未受到学术界重视. 1970 年, 剑桥大学的约翰 · 何 ...

  8. 【元胞自动机】基于matlab元胞自动机双车道交通流模型含靠右行驶【含Matlab源码 231期】

    ⛄一.元胞自动机简介 1 元胞自动机发展历程 最初的元胞自动机是由冯 · 诺依曼在 1950 年代为模拟生物 细胞的自我复制而提出的. 但是并未受到学术界重视. 1970 年, 剑桥大学的约翰 · 何 ...

  9. 【元胞自动机】保守策略元胞自动机三车道(不开放辅路,软件园影响)交通流模型matlab源码

    一.元胞自动机简介 1 元胞自动机发展历程 最初的元胞自动机是由冯 · 诺依曼在 1950 年代为模拟生物 细胞的自我复制而提出的. 但是并未受到学术界重视. 1970 年, 剑桥大学的约翰 · 何顿 ...

最新文章

  1. 基于短语的统计机器翻(PBMT) 开源工具 :Moses
  2. s:if 标签 字符串比较 正确用法和错误用法
  3. NanoPi NEO Air使用十三:使用自带的fbtft驱动点亮SPI接口TFT屏幕,ST7789V,模块加载的方式
  4. 虚拟机配置网络eth1
  5. firefox插件 Tab Utilities 个性化设置备份
  6. CF908G. New Year and Original Order
  7. ICCV 2019 Oral 端到端任意形状场景文字识别
  8. html nthchild作用,需要对HTML,nth-child进行一些解释
  9. Springboot 通过Ftp协议下载文件,并在Vue平台上显示其内容
  10. HTML的文本可以删除吗,如果内部包含一些文本,请删除html标记
  11. 共轭梯度法(Conjugate gradient)详解
  12. Atitit 搜索工程师的知识点体系总结 目录 1.1. 理论类 索引 与查询 1 1.2. 类库类 1 1.3. 关联知识类 1 1.4. 其他 1 2. Ref 2 2.1. Atitit 文
  13. 四款主流同步软件介绍
  14. 变更DirectX SDK版本-DirectX8升级DirectX9
  15. 15个提高编程技巧的 JavaScript工具
  16. iframe嵌入微信公众号页面(有图片)
  17. kubernetes kind类型之Deployment
  18. 关于重装Win10系统卡死在PIN码设置步骤
  19. 什么蓝牙耳机最好用?公认好用性价比高的蓝牙耳机推荐
  20. 1088: 手机短号 (多实例)C语言

热门文章

  1. eclipse如何显示行数
  2. Ubuntu中出现“Could not get lock /var/lib/dpkg/lock”的解决方法
  3. 解决开启Vue项目缺少node_models包问题
  4. 【报告分享】2022中国人工智能人才培养报告.pdf(附下载链接)
  5. 【算法实践】搜狗信息流推荐算法交流.pdf(附下载链接)
  6. 推荐系统系列教程之十二:Facebook是怎么为十亿人互相推荐好友的?
  7. 迭代最近点算法Iterative Closest Point(ICP)以及c++实现代码
  8. 大神备赛干货:腾讯广告算法大赛冠军教你玩出大赛新高度
  9. 在Linux下安装bind服务,在Linux系统下安装DNS服务器BIND
  10. pytorch 语义分割loss_关于pytorch语义分割二分类问题的两种做法