Code covered by the BSD License  

Highlights from
CTMSIM - an interactive freeway traffic macrosimulator

image thumbnail
from CTMSIM - an interactive freeway traffic macrosimulator by Alex Kurzhanskiy
Freeway traffic simulation based on Asymmetric Cell Transmission Model

adjust_or_data(demands, orflows, orqueues, ts)
function [orf, orq] = adjust_or_data(demands, orflows, orqueues, ts)
% ADJUST_OR_DATA - adjust on-ramp flow and queue values according to 
%                  according to on-ramp flow limits.
%
% Call:   [orf, orq] = adjust_or_data(demands, orflows, orqueues, ts)
%
% Parameters:
%             demands  - vector of on-ramp demands;
%             orflows  - vector of on-ramp flows, same size as 'densities';
%             orqueues - vector of on-ramp queues, same size as 'densities'; 
%             ts       - sampling period.
%
% Returns:
%          orf - vector of adjusted on-ramp flows;
%          orq - vector of adjusted on-ramp queues.
%
% Last modified:   09/17/2006.

%
% Alex Kurzhanskiy   <akurzhan@eecs.berkeley.edu>
%

K = size(demands, 1);
L = size(orflows, 1);
M = size(orqueues, 1);

if K ~= L
  error('ADJUST_OR_DATA: number of demand values does not match number of flows.');
end

if L ~= M
  error('ADJUST_OR_DATA: number of flows does not match number of queue sizes.');
end

orf = [];
orq = [];

for i = 1:K
  d   = demands(i, 1);  % demand (vph)
  f   = orflows(i, 1);  % flow (vph)
  q   = orqueues(i, 1);  % queue size (number of vehicles)

  f   = min([f (d + (q/ts))]);
  q   = max([0 (q + ((d - f)*ts))]);

  orf = [orf; f];
  orq = [orq; q];
end

return;

Contact us at files@mathworks.com