In this tutorial, we demonstrate the set-valued fuzzy integral via the generalized fuzzy integral (gFI). Note, we implemented the code for sub-normal but not non-convex inputs. We did this to make a nice interface for inputs in parametric form (e.g., Gaussian, trap, etc.). You can easily extend our code to deal with non-convex, you just need to adjust the input format, identify the discontinious intervals at the level cuts and union their ChI results. We do not provide custom slides for this tutorial. If the reader would like to learn more, two related articles include "D. T. Anderson, T. C. Havens, C. Wagner, J. M. Keller, M. F. Anderson, D. J. Wescott, Extension of the Fuzzy Integral for General Fuzzy Set-Valued Information, IEEE Transactions on Fuzzy Systems, 2014" and "D. T. Anderson, P. Elmore, F. Petry, T. Havens, "Fuzzy Choquet Integration of Homogeneous Possibility and Probability Distributions," Information Sciences, 2016".

First, clear your path and figures.

		  

close all; 
clear all;

Next, create a few inputs. Lets do two Gaussian, one trap and one tri. The Gaussian is sigma, mu and the height. The trap is the [a,b,c,d] four left lower, left upper, right upper, and right lower values, followed by the trap height. The tri is the same as the trap but the [b,c] points are just one point.

		  

% set up inputs
inputs{1}.type = 'gauss';
inputs{1}.params = [ 0.1 0.5 1 ]; % sigma = 0.1, mu = 0.5 and height = 1
inputs{2}.type = 'trap';
inputs{2}.params = [ 0.1 0.2 0.3 0.4 0.75 ]; % height = 0.75 and [a,b,c,d]=[0.1,0.2,0.3,0.4]
inputs{3}.type = 'gauss';
inputs{3}.params = [ 0.05 0.2 1 ];
inputs{4}.type = 'tri';
inputs{4}.params = [ 0.7 0.8 0.9 1 ]; % height = 1 and [a,b,c] 

Next, I make up five different fuzzy measures/ChIs (for variety sake).

		  

% create five different fuzzy measures
FMs = zeros(5,15);
FMs(1,:) = fi_owa( [ 0 0 0 1 ] )';
FMs(2,:) = fi_owa( [ 0 0.1 0.2 0.7 ] )';
FMs(3,:) = fi_owa( ones(1,4) ./ 4 )';
FMs(4,:) = fi_owa( [ 0.7 0.2 0.1 0 ] )';
FMs(5,:) = fi_owa( [ 1 0 0 0 ] )';
FMlabels = [ 'min     '
             'soft min'
             'average '
             'soft max'
             'max     ' ];

Next, call the set-valued FI.

		  

% use the ChI
whichintegral = 1;

% set 50 alpha cuts and do plot
noalphacuts = 50;
plotit = 1;

for i=1:size(FMs,1)
    % compute the gFI
    [ FIresult ] = fi_gFI( inputs , FMs(i,:) , whichintegral , noalphacuts , plotit );
    hold on; title(FMlabels(i,:));
end

Example output (for the average instantiation of the ChI) is