Post date: Jul 30, 2021 11:19:9 PM
% Matlab code by Dominik Hose (July 2021)
clear all
close all
%% Focal Elements
A_l = [2; 1];
A_r = [4; 5];
m = [0.5; 0.5];
% Spatial Discretization of Each Element: The trick is to allow one
% probability distribution for each focal element with the only constraint
% that the overall probability of every such distribution must be equal to
% belief of focal element
t = linspace(0,1,101);
x = A_l + t .* (A_r - A_l);
%% Optimization
cvx_begin
variable p_x( size(x) )
variable M1_x % Expected Value E[X]
variable M2_x % 2nd Order (non-central) moment E[X^2]
maximize( M2_x - M1_x.^2 ) % maximize variance V[X] = E[X^2] - E[X]^2
p_x(:) >= 0 % probability masses must be positive
sum(p_x, 2) == m % probability masses in each focal element must sum to basic belief of focal element
M1_x == sum( x(:) .* p_x(:) ) % formula for E[X]
M2_x == sum( x(:).^2 .* p_x(:) ) % formula for E[X^2]
cvx_end
%% Combination
% final probability distribution is linear combination of "focal
% distributions" with weights equal to focal belief
[X, id_sort] = sort( x(:) );
p_X = p_x(id_sort);
% Compute CDF
F_X = cumsum( p_X );
figure
hold on
stem( X, p_X )
plot( X, F_X )
legend({'Probability Mass', 'CDF'})
title( ['Variance = ', num2str(cvx_optval)] )