function new_pop=mutnew_cerveza(t,pop,mutp,ind_str)

% MUTNEW_CERVEZA New values of the beer problem, when muting	
%
% NEW_POP=MUTNEW_cerveza(T,POP,MUTP,IND_STR)
%
% See also GA_MUT, IS_NEW, 

% APRENDIZAJE AUTOMÁTICO (G. Pajares y J. M. de la Cruz, Eds.)
% Editorial: RA-MA
% Capítulo 9: El Aprendizaje con Algoritmos Genéticos
% Autores: Bonifacio de Andres y Toro

[r,c]=size(pop);

mutpaux=[mutp{:}];
popaux=[pop{:}];

new_pop=cell(r,1);
param=is_fields(ind_str,3);
param=param_use(param{1});


lmut=size(mutpaux,2);
new_tempaux=gen_float(t,1,lmut,param{2});	%En el segundo parametro estan los limites de temperatura
new_tempaux=mutpaux(1,:).*new_tempaux+(~mutpaux(1,:)).*popaux(1,:);
randaux=rand(2,lmut); % Generamos de golpe los randaux	
a=1;
for i=1:r
	l=size(pop{i},2);
   new_pop{i}=[new_tempaux(a:a+l-1);mut_time(popaux(2,a:a+l-1),mutpaux(2,a:a+l-1),param{1},param{3},randaux(:,a:a+l-1))];
   a=l+a;  
end


function timenew=mut_time(time,mut,limittime,PasoTiempo,randaux)

timenew=time;
if any(mut)
   mut=logical(mut);
   howmany=sum(mut);
   TimeI=max((limittime-sum(time(~mut)))/PasoTiempo-howmany,0);
   
   TiempoN=round(randaux(1,end)*(TimeI(2)-TimeI(1)) + TimeI(1));
   newval=zeros(1,howmany);
   for i=1:howmany-1
      if TiempoN<0
         break
      end
      newval(i)=round(randaux(1,i)*TiempoN);
      TiempoN=TiempoN-newval(i);
   end
   if TiempoN
      newval(end)=TiempoN;
   end   
   newval=(newval+1)*PasoTiempo;
   [aaa,ind]=sort(randaux(2,1:howmany));
   newval=newval(ind);

   timenew(mut)=newval;
end

