ID:50325
Title:Ina Zari V7
Author:Ina Zari
Date:2008-11-07 17:51:46
Score:24623.4419
Result:24584.02 (cyc: 27, node: 825)
CPU Time:80.6250
Status:Passed
Comments:
Based on:Ina Zari V6
Code:
function [dRow,dCol,action,mark] = solver( ...
    mainMap,foodMap,myAntMap,opAntMap, ...
    myScentMap,opScentMap,myDeathMap,opDeathMap)

foodMap=max(foodMap-1e6.*double(mainMap==1),0);
mark=0;
if ~isempty(find(foodMap<=myAntMap & foodMap>0,1))
    mark=(25-max(myScentMap(3,3)-1,0))/myAntMap(3,3)+rand-0.5;
end
if ~isempty(find(foodMap<=myAntMap & foodMap>0,1)) && ~isempty(find(myScentMap>=40 & myScentMap<=55,1))
    if myAntMap(3,3)>foodMap(3,3)
        mark=(45-max(myScentMap(3,3)-1,0))/myAntMap(3,3)+rand-0.5;
    end
end
if sum(sum(foodMap))>sum(sum(myAntMap))
    mark=(85+fnEvaluaComida(foodMap,myAntMap)-max(myScentMap(3,3)-1,0))/myAntMap(3,3)+rand-0.5;
end
if ~isempty(find(mainMap==1,1))
    mark=(50-max(myScentMap(3,3)-1,0))/myAntMap(3,3)+rand-0.5;
end
fProbNido=foodMap(3,3)/myAntMap(3,3);
fAleatorio=rand;
if fAleatorio<fProbNido
    action=1;
    IrNido=1;
else
    action=0;
    IrNido=0;
end
bCercaNido=0;
if IrNido 
    [r,c]=find(mainMap==1);
    if isempty(r)
        [r,c]=find(myScentMap>=45 & myScentMap<=55);
    end
    if isempty(r)
        [r,c]=find(myScentMap>=37 & myScentMap<=55);
    end
    if isempty(r)
        [r,c]=find(myScentMap>=30 & myScentMap<=55);
    end
    if isempty(r)
        bCercaNido=0;
        dRow   = round(rand*2) - 1;
        dCol   = round(rand*2) - 1;
        while isnan(mainMap(3+dRow,3+dCol)) || (dRow==0 && dCol==0) 
            dRow   = round(rand*2) - 1;
            dCol   = round(rand*2) - 1;
        end
    else
        bCercaNido=1;
        [kk,imin]=min((r-3).^2+(c-3).^2);
        iRow=r(imin(1))-3;
        iCol=c(imin(1))-3;
        dRow=fnlimit(iRow,-1,1);
        dCol=fnlimit(iCol,-1,1);
        while isnan(mainMap(3+dRow,3+dCol)) || (dRow==0 && dCol==0) 
            dRow   = round(rand*2) - 1;
            dCol   = round(rand*2) - 1;
        end
    end
else
    [r,c]=find(foodMap-opAntMap>0);
    if isempty(r)
        [r,c]=find(myScentMap>=90);
    end
    if isempty(r)
        [r,c]=find(myScentMap>=80);
    end
    if isempty(r)
        [r,c]=find(myScentMap>=70);
    end
    if isempty(r)
        dRow   = round(rand*2) - 1;
        dCol   = round(rand*2) - 1;
        while isnan(mainMap(3+dRow,3+dCol)) || (dRow==0 && dCol==0) 
            dRow   = round(rand*2) - 1;
            dCol   = round(rand*2) - 1;
        end
    else
        [kk,imin]=min((r-3).^2+(c-3).^2);
        dRow=fnlimit(r(imin(1))-3,-1,1);
        dCol=fnlimit(c(imin(1))-3,-1,1);
    end
end
    fProbAtacar=sum(sum(opAntMap(2:4,2:4)))/sum(sum(myAntMap(2:4,2:4)));
    fAleatorio=rand;
    if fAleatorio<fProbAtacar
        dRow=0;
        dCol=0;
        action=-1;
    end
mark=fnlimit(round(mark),0,100);
end
function [Output]=fnlimit(fNumber,fMin,fMax)
    Output=max(min(fNumber,fMax),fMin);
end
function [Output]=fnEvaluaComida(foodMap,myAntMap)
    aTemp=foodMap-myAntMap;
    Output=sum(sum(aTemp(2:4,2:4)))+sum(sum(aTemp))/3;
end
function [Output]=fnEvaluaNido(myScentMap)
    aTemp=abs(myScentMap(find(myScentMap(myScentMap>35 & myScentMap<55)))-50);
    Output=50-0.;
end