function [loss, win, tie] = myMDMRE(actuals,predictions,algorithms,datasetName)

% MRE = abs(actual - predicted)/actual and MMRE is the mean of all MREs

% define a variable to keep the MRE results for each algorithm
MREResults = -1 * ones(size(algorithms,1),size(actuals,1));

% define a variable to keep the MdMRE results for each algorithm
MdMREResults = -1 * ones(size(algorithms,1),1);

% process each algorithm's results
for i = 1:size(algorithms,1)
   MREResults(i,:) = abs(actuals' - predictions(i,:))./actuals';
   MdMREResults(i) = median(MREResults(i,:));
end

% define win tie loss variables
win = zeros(size(algorithms,1),1);
tie = zeros(size(algorithms,1),1);
loss = zeros(size(algorithms,1),1);

% start calculating win tie loss values
for i = 1:size(algorithms,1)
    for j = (i+1):size(algorithms,1)
        if i ~= j   % if i and j are different
            eval(['[P,H] = ranksum(MREResults(',num2str(i),',:),MREResults(',num2str(j),',:));']);
            if H == 0   % if they are the same
                eval(['tie(',num2str(i),') = tie(',num2str(i),') +1;']);
                eval(['tie(',num2str(j),') = tie(',num2str(j),') +1;']);
            else
                % calculate median values
                eval(['mdmrei = median(MREResults(',num2str(i),',:));']);
                eval(['mdmrej = median(MREResults(',num2str(j),',:));']);
                if mdmrei < mdmrej
                    eval(['win(',num2str(i),') = win(',num2str(i),') +1;']);
                    eval(['loss(',num2str(j),') = loss(',num2str(j),') +1;']);
                else
                    eval(['win(',num2str(j),') = win(',num2str(j),') +1;']);
                    eval(['loss(',num2str(i),') = loss(',num2str(i),') +1;']);
                end
            end
        end
    end
end

% and write the mdmre values to mdmre file
mdmreValuesFile=fopen('mdmreValues.txt','a' );
fprintf(mdmreValuesFile, char(datasetName),'%s');
for i = 1:size(algorithms,1)
    fprintf(mdmreValuesFile, [',' num2str(MdMREResults(i))]);
end
fprintf(mdmreValuesFile, '\n');    % append a new line at the end of the line
% close file
fclose(mdmreValuesFile);

end