% PrevN = maxNumCompThreads
% LASTN = maxNumCompThreads(2);
% CurrN = maxNumCompThreads
fileID = fopen('./e_high_bonus.in','r');
formatSpec = '%c';
A = fgetl(fileID);
Firstline=str2num(A);
NumRows = Firstline(1);
NumCols = Firstline(2);
NumVehicles = Firstline(3);
NumRides = Firstline(4);
PerRideBonusPoints = Firstline(5);
NumSteps = Firstline(6);
for i=1:NumVehicles
VehicleStatus(i).CurrentRow = 0;
VehicleStatus(i).CurrentCol = 0;
VehicleStatus(i).availability = 1;
VehicleStatus(i).TimetoFree = 0;
end
for i = 1: length(Rides)
RideStartTime(i) = Rides(i).EarliestStart;
end
[SortedRideStart , Index] = sort(RideStartTime, 'ascend');
RidesSorted = Rides(Index);
Rides = RidesSorted;
RideIndex=0;
for step = 0: NumSteps
if(~isempty(Rides))
if(VehicleStatus(VehicleIndex).availability)
RideIndex = RideIndex +1;
RidesNotAssigned =1;
Rides(RideIndex).StartRow;
Rides(RideIndex).StartCol;
Rides(RideIndex).FinishRow;
Rides(RideIndex).FinishCol;
Rides(RideIndex).EarliestStart;
Rides(RideIndex).LatestFinish;
TimeNow = step;
%Time to arrive at the ride start
TimetoArriveatRideStart = abs((Rides(RideIndex).StartRow-
VehicleStatus(VehicleIndex).CurrentRow))...
+ abs((Rides(RideIndex).StartCol-
VehicleStatus(VehicleIndex).CurrentCol));
%Waiting time at destination
waitingTime = (Rides(RideIndex).EarliestStart -
(TimetoArriveatRideStart + TimeNow));
if(waitingTime<0)
waitingTime = 0;
end
TimeofRide = abs((Rides(RideIndex).FinishRow -
Rides(RideIndex).StartRow))...
+ abs((Rides(RideIndex).FinishCol -
Rides(RideIndex).StartCol));
TotalVehicleRideTime = TimetoArriveatRideStart + waitingTime +
TimeofRide;
if((TimeNow + TotalVehicleRideTime) <=
Rides(RideIndex).LatestFinish)
% disp('lets Schedule')
RideAssignment(VehicleIndex).RidesAssigned =
[RideAssignment(VehicleIndex).RidesAssigned Rides(RideIndex).RideIndex];
%delete the ride
VehicleStatus(VehicleIndex).CurrentRow =
Rides(RideIndex).FinishRow;
VehicleStatus(VehicleIndex).CurrentCol =
Rides(RideIndex).FinishCol;
VehicleStatus(VehicleIndex).TimetoFree = TotalVehicleRideTime
- TimeNow;
VehicleStatus(VehicleIndex).availability = 0;
Rides(RideIndex) = [];
Distance(RideIndex) = [];
RidesNotAssigned =0;
end
if(RidesNotAssigned ==1)
end
end
end
fclose(fileID);
WritefileID = fopen('./e_high_bonus.txt','w');
for i=1:length(RideAssignment)
NumRidesAssigned = length(RideAssignment(i).RidesAssigned) - 1;
RideAssignment(i).RidesAssigned(1) = NumRidesAssigned;
fprintf(WritefileID, [num2str(RideAssignment(i).RidesAssigned) '\n']);
end
fclose(WritefileID);