diff --git a/Archive/main.m b/Archive/main.m index af03c39..2e5be43 100644 --- a/Archive/main.m +++ b/Archive/main.m @@ -1,7 +1,7 @@ function [lp] = main(file,targets,agent2sensors) if nargin == 1 - targets = xlsread(file,'targets'); - agent2sensors = xlsread(file,'agent2sensors'); + targets = read_excel_and_clean(file,'targets'); + agent2sensors = read_excel_and_clean(file,'agent2sensors'); end verbose = 0; diff --git a/ElbitCode/GetOutGeneralDataParameters.m b/ElbitCode/GetOutGeneralDataParameters.m index 8ae2466..7da3750 100644 --- a/ElbitCode/GetOutGeneralDataParameters.m +++ b/ElbitCode/GetOutGeneralDataParameters.m @@ -1,7 +1,7 @@ function [M2PLLink,MissionPlanConf,UAVTypeProperties] = GetOutGeneralDataParameters(OutFilePath) % Get Out GeneralData Parameters -[data,text] = xlsread(OutFilePath,'GeneralData'); +[data,text] = read_excel_and_clean(OutFilePath,'GeneralData'); % Get Total Mission Plan Properties MissionPlanConf.TakeoffPos = [data(1,1);data(2,1)]; % Km MissionPlanConf.RefArea = [data(3,1:4);data(4,1:4)]; % Km diff --git a/ElbitCode/GetUAVState.m b/ElbitCode/GetUAVState.m index 5e9d8e7..16e571c 100644 --- a/ElbitCode/GetUAVState.m +++ b/ElbitCode/GetUAVState.m @@ -1,7 +1,7 @@ function [UAVState,numOfUAVs] = GetUAVState(OutFilePath,Sheet) % Get UAV State startIdx = 0; -[data,text] = xlsread(OutFilePath,Sheet); +[data,text] = read_excel_and_clean(OutFilePath,Sheet); numOfUAVs = sum(~isnan(data(:,1))); for i = 1: numOfUAVs UAVStateData.Name = text{startIdx+i+2,1}; % UAV Type Name (string) diff --git a/ElbitCode/ReadMissionSqedulerOut.m b/ElbitCode/ReadMissionSqedulerOut.m index 590f15e..1c036d4 100644 --- a/ElbitCode/ReadMissionSqedulerOut.m +++ b/ElbitCode/ReadMissionSqedulerOut.m @@ -1,7 +1,7 @@ function ReadMissionSqedulerOut(OutFilePath) % Read Flight Plan From File -[MissionsData,~] = xlsread(OutFilePath,'InMissions'); +[MissionsData,~] = read_excel_and_clean(OutFilePath,'InMissions'); NumOfMissions = length(MissionsData(:,1)); for i = 1:NumOfMissions M = MissionsData(i,:); @@ -22,12 +22,12 @@ function ReadMissionSqedulerOut(OutFilePath) end % Read Mission Link Table -[MissionsLink,~] = xlsread(OutFilePath,'MissionsLink'); +[MissionsLink,~] = read_excel_and_clean(OutFilePath,'MissionsLink'); % Range Between Missions Table -[FlightBetweenMissionsRange,~] = xlsread(OutFilePath,'MissionsRange'); +[FlightBetweenMissionsRange,~] = read_excel_and_clean(OutFilePath,'MissionsRange'); % Read Flight Plan From File -[Flights,~] = xlsread(OutFilePath,'FinalFlights'); +[Flights,~] = read_excel_and_clean(OutFilePath,'FinalFlights'); NumOfFlights = length(Flights(:,1)); for i = 1:NumOfFlights F = Flights(i,:); @@ -53,7 +53,7 @@ function ReadMissionSqedulerOut(OutFilePath) % Option 6.b data ================ % Read Flight Plan From File -[InFlights,~] = xlsread(OutFilePath,'InFlights'); +[InFlights,~] = read_excel_and_clean(OutFilePath,'InFlights'); NumOfFlights = length(InFlights(:,1)); for i = 1:NumOfFlights F = InFlights(i,:); diff --git a/ElbitCode/RunSchedulAssignment.m b/ElbitCode/RunSchedulAssignment.m index 662097f..4c66013 100644 --- a/ElbitCode/RunSchedulAssignment.m +++ b/ElbitCode/RunSchedulAssignment.m @@ -7,7 +7,7 @@ % InFilePath = 'C:\Users\dp23489\Documents\MATLAB\Algomop\SensorsScheduler\SensorsSchedulerOut.xlsx'; % Read Flight Plan From File -[MissionsData,~] = xlsread(InFilePath,'InMissions'); +[MissionsData,~] = read_excel_and_clean(InFilePath,'InMissions'); NumOfMissions = length(MissionsData(:,1)); for i = 1:NumOfMissions M = MissionsData(i,:); @@ -28,7 +28,7 @@ end % Read Flight Plan From File -[Flights,~] = xlsread(InFilePath,'FinalFlights'); +[Flights,~] = read_excel_and_clean(InFilePath,'FinalFlights'); NumOfFlights = length(Flights(:,1)); for i = 1:NumOfFlights F = Flights(i,:); diff --git a/GetOutGeneralDataParameters.m b/GetOutGeneralDataParameters.m index 8ae2466..7da3750 100644 --- a/GetOutGeneralDataParameters.m +++ b/GetOutGeneralDataParameters.m @@ -1,7 +1,7 @@ function [M2PLLink,MissionPlanConf,UAVTypeProperties] = GetOutGeneralDataParameters(OutFilePath) % Get Out GeneralData Parameters -[data,text] = xlsread(OutFilePath,'GeneralData'); +[data,text] = read_excel_and_clean(OutFilePath,'GeneralData'); % Get Total Mission Plan Properties MissionPlanConf.TakeoffPos = [data(1,1);data(2,1)]; % Km MissionPlanConf.RefArea = [data(3,1:4);data(4,1:4)]; % Km diff --git a/RunSchedulAssignment.m b/RunSchedulAssignment.m index 662097f..4c66013 100644 --- a/RunSchedulAssignment.m +++ b/RunSchedulAssignment.m @@ -7,7 +7,7 @@ % InFilePath = 'C:\Users\dp23489\Documents\MATLAB\Algomop\SensorsScheduler\SensorsSchedulerOut.xlsx'; % Read Flight Plan From File -[MissionsData,~] = xlsread(InFilePath,'InMissions'); +[MissionsData,~] = read_excel_and_clean(InFilePath,'InMissions'); NumOfMissions = length(MissionsData(:,1)); for i = 1:NumOfMissions M = MissionsData(i,:); @@ -28,7 +28,7 @@ end % Read Flight Plan From File -[Flights,~] = xlsread(InFilePath,'FinalFlights'); +[Flights,~] = read_excel_and_clean(InFilePath,'FinalFlights'); NumOfFlights = length(Flights(:,1)); for i = 1:NumOfFlights F = Flights(i,:); diff --git a/buildAgent2sensor.m b/buildAgent2sensor.m index b05ba49..13b296a 100644 --- a/buildAgent2sensor.m +++ b/buildAgent2sensor.m @@ -3,13 +3,13 @@ % Detailed explanation goes here - %MissionType2Sensor = xlsread(infile,'GeneralData2'); + %MissionType2Sensor = read_excel_and_clean(infile,'GeneralData2'); numOfSensors = size(MissionType2Sensor,2); - %UAVType2sensor = xlsread(infile,'GeneralData1'); + %UAVType2sensor = read_excel_and_clean(infile,'GeneralData1'); % get only the relevant cols - the type2sensor cols UAVType2sensor = UAVType2sensor(:,size(UAVType2sensor,2)-numOfSensors+1:size(UAVType2sensor,2)); - UAV2UAVType = xlsread(infile,'InUAVState'); + UAV2UAVType = read_excel_and_clean(infile,'InUAVState'); numOfUAV = size(UAV2UAVType,1); % get only the relevant cols, id2type diff --git a/buildAgent2sensorBUGGED.m b/buildAgent2sensorBUGGED.m index 1665240..7b33766 100644 --- a/buildAgent2sensorBUGGED.m +++ b/buildAgent2sensorBUGGED.m @@ -3,13 +3,13 @@ % Detailed explanation goes here - %MissionType2Sensor = xlsread(infile,'GeneralData2'); + %MissionType2Sensor = read_excel_and_clean(infile,'GeneralData2'); numOfSensors = size(MissionType2Sensor,2); - %UAVType2sensor = xlsread(infile,'GeneralData1'); + %UAVType2sensor = read_excel_and_clean(infile,'GeneralData1'); % get only the relevant cols - the type2sensor cols UAVType2sensor = UAVType2sensor(:,size(UAVType2sensor,2)-numOfSensors+1:size(UAVType2sensor,2)); - UAV2UAVType = xlsread(infile,'InUAVState'); + UAV2UAVType = read_excel_and_clean(infile,'InUAVState'); numOfUAV = size(UAV2UAVType,1); % get only the relevant cols, id2type diff --git a/buildAgentInfo.m b/buildAgentInfo.m index aa8a48c..da24866 100644 --- a/buildAgentInfo.m +++ b/buildAgentInfo.m @@ -3,9 +3,9 @@ % we need to get the takeoff time and the flight time % output is UAVID to [takeoffTime, flightTime, speed] - UAVTakeoff = xlsread(infile,'FinalFlights'); - %UAVTypeDur = xlsread(infile,'GeneralData1') - UAV2UAVType = xlsread(infile,'InUAVState'); + UAVTakeoff = read_excel_and_clean(infile,'FinalFlights'); + %UAVTypeDur = read_excel_and_clean(infile,'GeneralData1') + UAV2UAVType = read_excel_and_clean(infile,'InUAVState'); % targetsData col values UAVTypeDur_UAV_TYPE_COL = 1; diff --git a/buildMissionLink.m b/buildMissionLink.m index c8b0748..87c2012 100644 --- a/buildMissionLink.m +++ b/buildMissionLink.m @@ -1,7 +1,7 @@ function [ missionLink ] = buildMissionLink(infile,numOfTargets) missionLink = zeros(numOfTargets,numOfTargets); - missionLinkTab = xlsread(infile,'MissionsLink'); + missionLinkTab = read_excel_and_clean(infile,'MissionsLink'); missionLinkTab = missionLinkTab(:,[1 3]); for link=1:size(missionLinkTab,1) diff --git a/buildStats.m b/buildStats.m index 2c52bd7..9686bbb 100644 --- a/buildStats.m +++ b/buildStats.m @@ -1,5 +1,5 @@ function [out] = buildStats(files) - + tic %files = {'60Missions','60Missions_2','50Missions','50Missions_2','40Missions','40Missions_2','30Missions','30Missions_2'}; files = {'50Missions','50Missions_2','40Missions','40Missions_2','30Missions','30Missions_2'}; buildParamMin = 10; @@ -37,7 +37,7 @@ j = j+1; fprintf('\tIteration %d/%d\n',(((i-1)*dimBuild) + j),dimRun*dimBuild); if ((currFileOut(i+1,j+1) == 0) && (runParam <= buildParam) ) - [~,~,~,~, ~, ~, ~, ~, ~, ~, ~,allStat] = evalc('mainBFS(filename,buildParam,runParam);'); + [~,~,~,~, ~, ~, ~, ~, ~, ~, ~,allStat] = evalc('mainBFS(filename,buildParam,runParam,0);'); currFileOut(i+1,j+1) = allStat.val; %xlswrite('stat.xls',allStat.val,sprintf('File_%s',files{file}),sprintf('%s%i',char(65 + i),j + 1)); csvwrite(csvFileName,currFileOut,0,0); @@ -46,4 +46,5 @@ end out.(sprintf('File_%s',files{file})) = currFileOut; end + toc end \ No newline at end of file diff --git a/buildTarget2TargetDistance.m b/buildTarget2TargetDistance.m index 254a319..c865944 100644 --- a/buildTarget2TargetDistance.m +++ b/buildTarget2TargetDistance.m @@ -1,7 +1,7 @@ function [target2TargetDistance] = buildTarget2TargetDistance(infile, nTargets) %a20MinDistance = 48000; %target2TargetDistance = ones(nTargets + 1, nTargets + 1) * a20MinDistance; - target2TargetDistance = xlsread(infile,'MissionsRange'); + target2TargetDistance = read_excel_and_clean(infile,'MissionsRange'); % add distnace from source to all targets target2TargetDistance = [zeros(size(target2TargetDistance,1),1) target2TargetDistance]; target2TargetDistance = [zeros(1,size(target2TargetDistance,2)); target2TargetDistance]; diff --git a/buildTarget2Val.m b/buildTarget2Val.m index 82591bf..3678844 100644 --- a/buildTarget2Val.m +++ b/buildTarget2Val.m @@ -1,7 +1,7 @@ function [target2Val] = buildTarget2Val(infile) PRIORITY_COL = 3; - targets = xlsread(infile,'InMissions'); + targets = read_excel_and_clean(infile,'InMissions'); target2Val = targets(:,PRIORITY_COL); target2Val = 8 - target2Val; diff --git a/buildTarget2sensor.m b/buildTarget2sensor.m index c4e5276..c5d39c8 100644 --- a/buildTarget2sensor.m +++ b/buildTarget2sensor.m @@ -3,9 +3,9 @@ % Detailed explanation goes here - %MissionType2Sensor = xlsread(infile,'GeneralData2'); + %MissionType2Sensor = read_excel_and_clean(infile,'GeneralData2'); numOfSensors = size(MissionType2Sensor,2); - target2MissionType = xlsread(infile,'InMissions'); + target2MissionType = read_excel_and_clean(infile,'InMissions'); % get only the relevant cols, id2type target2MissionType = target2MissionType(:,1:2); diff --git a/main.m b/main.m index 5a81deb..aa5737a 100644 --- a/main.m +++ b/main.m @@ -8,7 +8,7 @@ % parse the input file [ Agent2sensor,target2sensor, AgentInfo, target2Val, target2TargetDistance ] = ParseInfile( file ); Agent2target = Agent2sensor * target2sensor'; - targetsData = xlsread(file,'InMissions'); + targetsData = read_excel_and_clean(file,'InMissions'); numOfTargets = size(target2sensor,1); numOfDrones = size(AgentInfo,1); diff --git a/mainBFS.m b/mainBFS.m index 616d909..9a15d97 100644 --- a/mainBFS.m +++ b/mainBFS.m @@ -1,4 +1,4 @@ -function [model,outConf,AgentInfo, allConfigurations, agent2conf, Agent2target, AllConf, excelOut, Agent2sensor, target2sensor,allStat] = mainBFS(file,buildAmount,runAmount) +function [model,outConf,AgentInfo, allConfigurations, agent2conf, Agent2target, AllConf, excelOut, Agent2sensor, target2sensor,allStat] = mainBFS(file,buildAmount,runAmount,writeOutput) global targetsData; global Agent2target; @@ -11,10 +11,10 @@ % parse the input file [ Agent2sensor,target2sensor, AgentInfo, target2Val, target2TargetDistance, missionLink ] = ParseInfile( file ); Agent2target = Agent2sensor * target2sensor'; - targetsData = xlsread(file,'InMissions'); + targetsData = read_excel_and_clean(file,'InMissions'); numOfTargets = size(target2sensor,1); numOfDrones = size(AgentInfo,1); - + allConfigurations = zeros(0,numOfTargets); agent2conf = zeros(numOfDrones,0); @@ -132,7 +132,9 @@ % Print values data_fmt = [repmat(['|%', int2str(col_w - 1), '.', int2str(fr_n), 'f '], 1, size(AllConf, 2)), '\n']; fprintf(data_fmt, AllConf') - %xlswrite(file,excelOut,'OutAssignment','A3'); + if (writeOutput) + xlswrite(file,excelOut,'OutAssignment','A3'); + end % save stat allStat.val = optVal; diff --git a/mainFull.m b/mainFull.m index 544e6c1..32ccac5 100644 --- a/mainFull.m +++ b/mainFull.m @@ -8,7 +8,7 @@ % parse the input file [ Agent2sensor,target2sensor, AgentInfo, target2Val, target2TargetDistance ] = ParseInfile( file ); Agent2target = Agent2sensor * target2sensor'; - targetsData = xlsread(file,'InMissions'); + targetsData = read_excel_and_clean(file,'InMissions'); numOfTargets = size(target2sensor,1); numOfDrones = size(AgentInfo,1); diff --git a/read_excel_and_clean.m b/read_excel_and_clean.m new file mode 100644 index 0000000..57d7092 --- /dev/null +++ b/read_excel_and_clean.m @@ -0,0 +1,14 @@ + +function [data,text] = read_excel_and_clean(file,sheet) + [data,text] = xlsread(file,sheet); + [~, computer] = system('hostname'); + [~, user] = system('whoami'); + pause(0.5); + [~, alltask] = system(['tasklist /S ', computer, ' /U ', user]); + excelPID = regexp(alltask, 'EXCEL.EXE\s*(\d+)\s', 'tokens'); + for i = 1 : length(excelPID) + killPID = cell2mat(excelPID{i}); + system(['taskkill /f /pid ', killPID]); + end +end + \ No newline at end of file diff --git a/runningArea/30Missions.xlsx b/runningArea/30Missions.xlsx new file mode 100644 index 0000000..2e2be09 Binary files /dev/null and b/runningArea/30Missions.xlsx differ diff --git a/runningArea/30Missions_2.xlsx b/runningArea/30Missions_2.xlsx new file mode 100644 index 0000000..7050822 Binary files /dev/null and b/runningArea/30Missions_2.xlsx differ diff --git a/runningArea/40Missions.xlsx b/runningArea/40Missions.xlsx new file mode 100644 index 0000000..ec22d3a Binary files /dev/null and b/runningArea/40Missions.xlsx differ diff --git a/runningArea/40Missions_2.xlsx b/runningArea/40Missions_2.xlsx new file mode 100644 index 0000000..d5e9ef5 Binary files /dev/null and b/runningArea/40Missions_2.xlsx differ diff --git a/runningArea/50Missions.xlsx b/runningArea/50Missions.xlsx new file mode 100644 index 0000000..0b369c6 Binary files /dev/null and b/runningArea/50Missions.xlsx differ diff --git a/runningArea/50Missions_2.xlsx b/runningArea/50Missions_2.xlsx new file mode 100644 index 0000000..f69abb4 Binary files /dev/null and b/runningArea/50Missions_2.xlsx differ