% J. C. Spall,December 2000.
% This code implements the simple random search algorithm A in ISSO.  
% This code assumes noise-free loss measurements.
%
global p
n=10000;         % no. of loss measurements per run    
p=3;           % problem dimension
cases=1;      % no. of runs being averaged
t=2.02269;     % t-value for 2-sided test based on d.o.f.=cases-1 
loss='lossDopt';
theta_0=[0,0,0]';
feval(loss,theta_0)
D=[-1,1;-1,1;-1,1]; % specifies the lower and upper limits for p
               % components of theta (2-column matrix) 
randn('seed',31415927)
rand('seed',31415927)
meanlossA=0;
meanlosssqA=0;
for i=1:cases
   theta=theta_0;
   lossold=feval(loss,theta);
   for k=1:n
      thetanew=D(:,1)+(D(:,2)-D(:,1)).*rand(p,1);
      lossnew=feval(loss,thetanew);
       if lossnew < lossold  		
          theta=thetanew;
          lossold=lossnew;
       else
       end
   end
   meanlossA=(i-1)*meanlossA/i+lossold/i;
   meanlosssqA=(i-1)*meanlosssqA/i+lossold^2/i;
end
theta
meanlossA
if cases > 1
   sd_A=(cases^(-.5))*((cases/(cases-1))^.5)*(meanlosssqA-meanlossA^2)^.5
   % Confidence intervals
   [meanlossA-t*sd_A,meanlossA+t*sd_A]
else   
end