function emp=CreateInitialEmpires()
%global Problem Definition Parameters
global ProblemSettings;
CostFunction=ProblemSettings.CostFunction;
VarMin=ProblemSettings.VarMin;
VarMax=ProblemSettings.VarMax;
VarSize=ProblemSettings.VarSize;
%global ICA Settings Parameters
global IcaSettings;
nPop=IcaSettings.nPop;
nEmp=IcaSettings.nEmp;
nCol=IcaSettings.nCol;
alpha=IcaSettings.alpha;
%Create Empty Country
emptyCountry.Position=[];
emptyCountry.Cost=[];
emptyCountry.Sol=[];
Country=repmat(emptyCountry,nPop,1); %All Of the Countries
%Determine Position and Cost for Countries
for i=1:nPop
Country(i).Position=unifrnd(VarMin,VarMax,VarSize);
[Country(i).Cost, Country(i).Sol]=CostFunction(Country(i).Position);
% while(sum(Country(i).Position)==0)
% Country(i).Position=unifrnd(VarMin,VarMax,VarSize);
% Country(i).Cost=CostFunction(Country(i).Position);
% end
end
%Detemine Impirialists and Colonies
[~,so]=sort([Country.Cost]);
Country=Country(so);
Imp=Country(1:nEmp);
Col=Country(nEmp+1:end);
%Create Empty Empire
emptyEmpire.Imp=[];
emptyEmpire.Col=repmat(emptyCountry,0,1);
emptyEmpire.nCol=0;
emptyEmpire.TotalCost=0;
emp=repmat(emptyEmpire,nEmp,1);
%Determine Impirialists and Colonies of each Empire
%Impirialists
for i=1:nEmp
emp(i).Imp=Imp(i);
end
%Calculate P
P=exp(-alpha*[Imp.Cost]/max([Imp.Cost]));
P=P/sum(P);
%Assign Colonies
for j=1:nCol
k=RouletteWheelSelection(P);
emp(k).Col=[emp(k).Col
Col(j)];
emp(k).nCol=emp(k).nCol+1;
end
end