%%建立Vissim COM接口,COM接口的名称Vissim的版本相关
%% Connecting the COM Server => Open a new Vissim Window:
% Vissim = actxserver('Vissim.Vissim-64.800');
Vissim = actxserver('Vissim.Vissim-32.800'); % Vissim 8 - 32 bit
%% 加载交通网络,如下标红的文件是使用Vissim 软件建立的项目文件
Path_of_COM_Basic_Commands_network = cd; %'C:\Users\Public\Documents\PTV Vision\PTV Vissim 8\Examples Training\COM\Basic Commands';
%% Load a Vissim Network:
Filename = fullfile(Path_of_COM_Basic_Commands_network, 'COM Basic Commands.inpx');
flag_read_additionally = false; % you can read network(elements) additionally, in this case set "flag_read_additionally" to true
Vissim.LoadNet(Filename, flag_read_additionally);
%% Load a Layout:
Filename = fullfile(Path_of_COM_Basic_Commands_network, 'COM Basic Commands.layx');
Vissim.LoadLayout(Filename);
%%设置信号控制机 ,SC_number与Vissim设置的信号控制机的编号相关
% Set a signal controller program:
SC_number = 1; % SC = SignalController
SignalController = Vissim.Net.SignalControllers.ItemByKey(SC_number);
new_signal_programm_number = 2;
set(SignalController, 'AttValue', 'ProgNo', new_signal_programm_number);
%%设置仿真参数
Random_Seed = 42;
set(Vissim.Simulation, 'AttValue', 'RandSeed', Random_Seed);
% To start a simulation you can run a single step:
Vissim.Simulation.RunSingleStep;
% Or run the simulation continuous (it stops at breakpoint or end of simulation)
End_of_simulation = 600; % simulation second [s]
set(Vissim.Simulation, 'AttValue', 'SimPeriod', End_of_simulation);
Sim_break_at = 200; % simulation second [s]
set(Vissim.Simulation, 'AttValue', 'SimBreakAt', Sim_break_at);
% Set maximum speed:
set(Vissim.Simulation, 'AttValue', 'UseMaxSimSpeed', true);
% Hint: to change the speed use: set(Vissim.Simulation, 'AttValue', 'SimSpeed', 10); % 10 => 10 Sim. sec. / s
Vissim.Simulation.RunContinuous;
%%设置红绿灯的颜色 ,设置信号控制机SC_number下的信号灯组SG_number的红绿灯的颜色
SC_number = 1; % SC = SignalController
SG_number = 1; % SG = SignalGroup
SignalController = Vissim.Net.SignalControllers.ItemByKey(SC_number);
SignalGroup = SignalController.SGs.ItemByKey(SG_number);
new_state = 'GREEN'; %possible values e.g. 'GREEN', 'RED', 'AMBER', 'REDAMBER'
set(SignalGroup, 'AttValue', 'SigState', new_state);
%% 获取排队长度,QC_number为排队计数器的编号
% Queue length
% Syntax to get the data:
% get(QueueCounter, 'AttValue', 'QLen(sub_attribut_1, sub_attribut_2)');
QC_number = 1;
maxQ = get(Vissim.Net.QueueCounters.ItemByKey(QC_number),'AttValue', 'QLenMax(Avg, Avg)');
disp(['Average maximum Queue length of all simulations and time intervals of Queue Counter #',num2str(QC_number),':',32,num2str(maxQ)]) % char(32) is whitespace
%% 获取车辆的行程时间
% Get the results of Vehicle Travel Time Measurements:
Veh_TT_measurement_number = 2;
Veh_TT_measurement = Vissim.Net.VehicleTravelTimeMeasurements.ItemByKey(Veh_TT_measurement_number);
TT = get(Veh_TT_measurement, 'AttValue', 'TravTm(Avg,Avg,All)');
No_Veh = get(Veh_TT_measurement, 'AttValue', 'Vehs (Avg,Avg,All)');
disp(['Average travel time all time intervals of all simulation of all vehicle classes:',32,num2str(TT),32,'(number of vehicles:',32,num2str(No_Veh),')']) % char(32) is whitespace
%% 获取数据采集器相关信息
% Data Collection
DC_measurement_number = 1;
DC_measurement = Vissim.Net.DataCollectionMeasurements.ItemByKey(DC_measurement_number);
No_Veh = get(DC_measurement, 'AttValue', 'Vehs (Avg,1,All)'); % number of vehicles
Speed = get(DC_measurement, 'AttValue', 'Speed (Avg,1,All)'); % Speed of vehicles
Acceleration = get(DC_measurement, 'AttValue', 'Acceleration(Avg,1,All)'); % Acceleration of vehicles
Length = get(DC_measurement, 'AttValue', 'Length (Avg,1,All)'); % Length of vehicles
disp(['Data Collection #',num2str(DC_measurement_number),': Average values of all Simulations runs of 1st time interval of all vehicle classes:'])
disp(['#vehicles:',32,num2str(No_Veh),'; Speed:',32,num2str(Speed),'; Acceleration:',32,num2str(Acceleration),'; Length:',32,num2str(Length)]) % char(32) is whitespace
评论4