disp function isn't working and no error

30 views (last 30 days)
Catherine
Catherine on 16 Mar 2024
Edited: Dyuman Joshi on 16 Mar 2024
clear;
clc;
close all;
% Parameters
numVehicles = 50; % Number of vehicles
numEdges = 3; % Number of edge computing nodes
numClusters = 5; % Number of clusters in the Things layer
cloudCapacity = 1000; % Cloud computing capacity
edgeCapacity = [100, 150, 200]; % Edge computing capacity
taskRate = 0.1; % Task generation rate per vehicle (tasks/second)
communicationDelayEdge = 1;% Communication delay for edge offloading (seconds)
communicationDelayCloud = 5;% Communication delay for cloud offloading (seconds)
distanceThreshold = 100; % Maximum distance for edge offloading (meters)
clusterRadius = 200; % Radius for clustering in the Things layer (meters)
% Initialize vehicles
vehicles = struct('position', num2cell(rand(numVehicles, 2)*1000, 2), 'tasks', []);
% Initialize edge nodes
edges = struct('position', num2cell(rand(numEdges, 2)*1000, 2), 'tasks', [], 'capacity', edgeCapacity);
% Cloud initialization
cloud = struct('tasks', [], 'capacity', cloudCapacity);
% Initialize clusters in the Things layer
clusters = struct('center', num2cell(rand(numClusters, 2)*1000, 2), 'members', []);
% Form clusters in the Things layer
for i = 1:numVehicles
minDist = inf;
nearestCluster = 0;
for j = 1:numClusters
dist = norm(vehicles(i).position - clusters(j).center);
if dist < minDist
minDist = dist;
nearestCluster = j;
end
end
clusters(nearestCluster).members = [clusters(nearestCluster).members, i];
end
% Simulation loop
for t = 1:1000
% Generate tasks for vehicles
for i = 1:numVehicles
if rand < taskRate
vehicles(i).tasks = [vehicles(i).tasks; t];
end
end
% Offload tasks from vehicles to either edge nodes or cloud
for i = 1:numVehicles
% Determine if edge offloading is possible
edgeOffload = false;
for j = 1:numEdges
if norm(vehicles(i).position - edges(j).position) <= distanceThreshold && ~isempty(edges(j).tasks)
edgeOffload = true;
break;
end
end
% Offload task to edge node if possible, otherwise to cloud
if edgeOffload
for j = 1:numEdges
if norm(vehicles(i).position - edges(j).position) <= distanceThreshold && ~isempty(edges(j).tasks)
task = vehicles(i).tasks(1);
vehicles(i).tasks(1) = [];
edges(j).tasks = [edges(j).tasks; task];
disp(['Task from vehicle ', num2str(i), ' offloaded to edge ', num2str(j)]);
break;
end
end
else
if ~isempty(cloud.tasks)
task = vehicles(i).tasks(1);
vehicles(i).tasks(1) = [];
cloud.tasks = [cloud.tasks; task];
disp(['Task from vehicle ', num2str(i), ' offloaded to cloud']);
end
end
end
% Process tasks at edge nodes
for j = 1:numEdges
if ~isempty(edges(j).tasks)
completedTasks = edges(j).tasks(edges(j).tasks <= t - communicationDelayEdge);
edges(j).tasks = setdiff(edges(j).tasks, completedTasks);
disp(['Edge ', num2str(j), ' processed ', num2str(length(completedTasks)), ' tasks']);
end
end
% Process tasks at the cloud
if ~isempty(cloud.tasks)
completedTasks = cloud.tasks(cloud.tasks <= t - communicationDelayCloud);
cloud.tasks = setdiff(cloud.tasks, completedTasks);
disp(['Cloud processed ', num2str(length(completedTasks)), ' tasks']);
end
% Move vehicles
for i = 1:numVehicles
vehicles(i).position = vehicles(i).position + randn(1, 2)*5; % Random movement
end
end
the disp function in the code doesn't display anything and at the same time there is no error why this happen??
  1 Comment
Dyuman Joshi
Dyuman Joshi on 16 Mar 2024
Edited: Dyuman Joshi on 16 Mar 2024
"the disp function in the code doesn't display anything and at the same time there is no error why this happen??"
The if conditions have not been satisfied to execute those commands.
I can not run your code here as there are too many nested iterations, so here's the output for just a single iteration of every for loop, where I have added counter disp() kicking off when the conditions are not satisfied -
% Parameters
numVehicles = 50; % Number of vehicles
numEdges = 3; % Number of edge computing nodes
numClusters = 5; % Number of clusters in the Things layer
cloudCapacity = 1000; % Cloud computing capacity
edgeCapacity = [100, 150, 200]; % Edge computing capacity
taskRate = 0.1; % Task generation rate per vehicle (tasks/second)
communicationDelayEdge = 1;% Communication delay for edge offloading (seconds)
communicationDelayCloud = 5;% Communication delay for cloud offloading (seconds)
distanceThreshold = 100; % Maximum distance for edge offloading (meters)
clusterRadius = 200; % Radius for clustering in the Things layer (meters)
% Initialize vehicles
vehicles = struct('position', num2cell(rand(numVehicles, 2)*1000, 2), 'tasks', []);
% Initialize edge nodes
edges = struct('position', num2cell(rand(numEdges, 2)*1000, 2), 'tasks', [], 'capacity', edgeCapacity);
% Cloud initialization
cloud = struct('tasks', [], 'capacity', cloudCapacity);
% Initialize clusters in the Things layer
clusters = struct('center', num2cell(rand(numClusters, 2)*1000, 2), 'members', []);
% Form clusters in the Things layer
for i = 1%:numVehicles
minDist = inf;
nearestCluster = 0;
for j = 1:numClusters
dist = norm(vehicles(i).position - clusters(j).center);
if dist < minDist
minDist = dist;
nearestCluster = j;
end
end
clusters(nearestCluster).members = [clusters(nearestCluster).members, i];
end
% Simulation loop
for t = 1%:1000
% Generate tasks for vehicles
for i = 1%:numVehicles
if rand < taskRate
vehicles(i).tasks = [vehicles(i).tasks; t];
end
end
% Offload tasks from vehicles to either edge nodes or cloud
for i = 1%:numVehicles
% Determine if edge offloading is possible
edgeOffload = false;
for j = 1:numEdges
if norm(vehicles(i).position - edges(j).position) <= distanceThreshold && ~isempty(edges(j).tasks)
edgeOffload = true;
break;
end
end
% Offload task to edge node if possible, otherwise to cloud
if edgeOffload
for j = 1%:numEdges
if norm(vehicles(i).position - edges(j).position) <= distanceThreshold && ~isempty(edges(j).tasks)
task = vehicles(i).tasks(1);
vehicles(i).tasks(1) = [];
edges(j).tasks = [edges(j).tasks; task];
disp(['Task from vehicle ', num2str(i), ' offloaded to edge ', num2str(j)]);
break;
else
disp('Condition not satisfied (offload to edge)')
end
end
else
disp('Condition not satisfied (offload)')
if ~isempty(cloud.tasks)
task = vehicles(i).tasks(1);
vehicles(i).tasks(1) = [];
cloud.tasks = [cloud.tasks; task];
disp(['Task from vehicle ', num2str(i), ' offloaded to cloud']);
else
disp('Condition not satisfied (offload to cloud)')
end
end
end
% Process tasks at edge nodes
for j = 1%:numEdges
if ~isempty(edges(j).tasks)
completedTasks = edges(j).tasks(edges(j).tasks <= t - communicationDelayEdge);
edges(j).tasks = setdiff(edges(j).tasks, completedTasks);
disp(['Edge ', num2str(j), ' processed ', num2str(length(completedTasks)), ' tasks']);
else
disp('Condition not satisfied (Edge nodes)')
end
end
% Process tasks at the cloud
if ~isempty(cloud.tasks)
completedTasks = cloud.tasks(cloud.tasks <= t - communicationDelayCloud);
cloud.tasks = setdiff(cloud.tasks, completedTasks);
disp(['Cloud processed ', num2str(length(completedTasks)), ' tasks']);
else
disp('Condition not satisfied (process task cloud)')
end
% Move vehicles
for i = 1:numVehicles
vehicles(i).position = vehicles(i).position + randn(1, 2)*5; % Random movement
end
end
Condition not satisfied (offload)
Condition not satisfied (offload to cloud)
Condition not satisfied (Edge nodes)
Condition not satisfied (process task cloud)

Sign in to comment.

Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!