MATLAB Code for solving Traffic Signal Timing
Optimization using the Firefly Optimization Algorithm
% Firefly Optimization Algorithm for Traffic Signal Timing Optimization
clc; clear; close all;
%% Problem Definition
nVars = 2; % Number of decision variables: [Green Time for Road 1, Green Time for Road 2]
VarMin = 10; % Minimum Green Time (Seconds)
VarMax = 60; % Maximum Green Time (Seconds)
% Objective Function (Minimizing Total Waiting Time)
ObjectiveFunction = @(x) TrafficCongestionCost(x);
%% Firefly Algorithm Parameters
nFireflies = 20; % Number of fireflies (solutions)
maxIter = 50; % Maximum iterations
alpha = 0.2; % Randomness factor
gamma = 1; % Light absorption coefficient
beta0 = 1; % Base attractiveness
% Initialize Fireflies
fireflies = rand(nFireflies, nVars) * (VarMax - VarMin) + VarMin;
brightness = zeros(nFireflies, 1);
% Evaluate initial brightness (fitness)
for i = 1:nFireflies
brightness(i) = ObjectiveFunction(fireflies(i, :));
end
%% Firefly Algorithm Loop
for iter = 1:maxIter
for i = 1:nFireflies
for j = 1:nFireflies
if brightness(j) < brightness(i) % Move towards brighter firefly
r = norm(fireflies(i, :) - fireflies(j, :)); % Distance
beta = beta0 * exp(-gamma * r^2); % Attractiveness
% Update position
fireflies(i, :) = fireflies(i, :) + ...
beta * (fireflies(j, :) - fireflies(i, :)) + ...
alpha * (rand(1, nVars) - 0.5) * (VarMax - VarMin);
% Boundary check
fireflies(i, :) = max(fireflies(i, :), VarMin);
fireflies(i, :) = min(fireflies(i, :), VarMax);
% Evaluate new brightness
brightness(i) = ObjectiveFunction(fireflies(i, :));
end
end
end
% Best solution in the current iteration
[bestValue, bestIndex] = min(brightness);
bestSolution = fireflies(bestIndex, :);
% Display progress
fprintf('Iteration %d: Best Waiting Time = %.2f seconds\n', iter, bestValue);
end
%% Display Final Results
disp('Optimized Signal Timings:');
fprintf('Green Time for Road 1: %.2f sec\n', bestSolution(1));
fprintf('Green Time for Road 2: %.2f sec\n', bestSolution(2));
%% Traffic Congestion Cost Function (Objective Function)
function waitingTime = TrafficCongestionCost(x)
% Simulated traffic congestion based on signal timing
greenTime1 = x(1); % Green light for Road 1
greenTime2 = x(2); % Green light for Road 2
% Traffic flow simulation: more green time reduces waiting time
vehicleFlow1 = 100 - (greenTime1 * 0.8); % Traffic delay factor
vehicleFlow2 = 100 - (greenTime2 * 0.7);
% Total waiting time (lower is better)
waitingTime = vehicleFlow1 + vehicleFlow2;
end
RESULT
Iteration 1: Best Waiting Time = 116.48 seconds
Iteration 2: Best Waiting Time = 116.48 seconds
Iteration 3: Best Waiting Time = 116.48 seconds
Iteration 4: Best Waiting Time = 116.48 seconds
Iteration 5: Best Waiting Time = 115.14 seconds
Iteration 6: Best Waiting Time = 115.14 seconds
Iteration 7: Best Waiting Time = 115.14 seconds
Iteration 8: Best Waiting Time = 115.14 seconds
Iteration 9: Best Waiting Time = 115.14 seconds
Iteration 10: Best Waiting Time = 115.14 seconds
Iteration 11: Best Waiting Time = 115.14 seconds
Iteration 12: Best Waiting Time = 115.14 seconds
Iteration 13: Best Waiting Time = 115.14 seconds
Iteration 14: Best Waiting Time = 115.14 seconds
Iteration 15: Best Waiting Time = 115.14 seconds
Iteration 16: Best Waiting Time = 115.14 seconds
Iteration 17: Best Waiting Time = 114.23 seconds
Iteration 18: Best Waiting Time = 114.23 seconds
Iteration 19: Best Waiting Time = 114.23 seconds
Iteration 20: Best Waiting Time = 114.23 seconds
Iteration 21: Best Waiting Time = 110.35 seconds
Iteration 22: Best Waiting Time = 110.35 seconds
Iteration 23: Best Waiting Time = 110.35 seconds
Iteration 24: Best Waiting Time = 110.35 seconds
Iteration 25: Best Waiting Time = 110.35 seconds
Iteration 26: Best Waiting Time = 110.35 seconds
Iteration 27: Best Waiting Time = 110.00 seconds
Iteration 28: Best Waiting Time = 110.00 seconds
Iteration 29: Best Waiting Time = 110.00 seconds
Iteration 30: Best Waiting Time = 110.00 seconds
Iteration 31: Best Waiting Time = 110.00 seconds
Iteration 32: Best Waiting Time = 110.00 seconds
Iteration 33: Best Waiting Time = 110.00 seconds
Iteration 34: Best Waiting Time = 110.00 seconds
Iteration 35: Best Waiting Time = 110.00 seconds
Iteration 36: Best Waiting Time = 110.00 seconds
Iteration 37: Best Waiting Time = 110.00 seconds
Iteration 38: Best Waiting Time = 110.00 seconds
Iteration 39: Best Waiting Time = 110.00 seconds
Iteration 40: Best Waiting Time = 110.00 seconds
Iteration 41: Best Waiting Time = 110.00 seconds
Iteration 42: Best Waiting Time = 110.00 seconds
Iteration 43: Best Waiting Time = 110.00 seconds
Iteration 44: Best Waiting Time = 110.00 seconds
Iteration 45: Best Waiting Time = 110.00 seconds
Iteration 46: Best Waiting Time = 110.00 seconds
Iteration 47: Best Waiting Time = 110.00 seconds
Iteration 48: Best Waiting Time = 110.00 seconds
Iteration 49: Best Waiting Time = 110.00 seconds
Iteration 50: Best Waiting Time = 110.00 seconds
Optimized Signal Timings:
Green Time for Road 1: 60.00 sec
Green Time for Road 2: 60.00 sec