Code covered by the BSD License  

Highlights from
Many testfunctions for global optimizers

image thumbnail
from Many testfunctions for global optimizers by Rody Oldenhuis
test functions for global optimizers

crossfunc(X)
function varargout = crossfunc(X)
% Cross function
%
%   CROSSFUNC([x1, x2]) returns the value of the Cross function 
%   at the specified points. [x1] and [x2] may be vectors. 
%   The search domain is
%
%               -10 < x_i < 10
%
%   The global minimum is found everywhere, except on the lines 
%   (x = 0, z = 0) and (y = 0, z = 0). Everywhere else, 
%
%                   fmin = 0.

% Author: Rody P.S. Oldenhuis
% Delft University of Technology
% E-mail: oldenhuis@dds.nl
% Last edited 20/Jul/2009

    % if no input is given, return dimensions, bounds and minimum
    if (nargin == 0)
        varargout{1} = 2;  % # dims
        varargout{2} = [-10, -10]; % LB
        varargout{3} = [+10, +10]; % UB
        varargout{4} = NaN; % solution (too complicated)
        varargout{5} = 0; % function value at solution

    % otherwise, output function value
    else
        
        % keep values in the serach interval
        X(X < -10) = inf;     X(X > 10) = inf;
        
        % split input vector X into x1, x2
        if size(X, 1) == 2
            x1 = X(1, :);        x2 = X(2, :);
        else
            x1 = X(:, 1);        x2 = X(:, 2);
        end
        
        % output function value
        varargout{1} = (abs(sin(x1).*sin(x2).*exp(abs(100 - sqrt(x1.^2 + x2.^2)/pi))) + 1).^(-0.1);
        
    end
     
end

Contact us at files@mathworks.com