%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%        _______  ___________   ______    ______   ___   ___ 
%       /  _____||___    ____| /  __  \  |   _  \  \  \ /  / 
%      |  |  __      |  |     |  |  |  | |  |_)  |  \  V  /  
%      |  | |_ |     |  |     |  |  |  | |   ___/    >   <   
%      |  |__| |     |  |     |  |__|  | |  |       /  _  \  
%       \______|     |__|      \______/  |__|      /__/ \__\ 
%
%                                                 Version 1.0
%       GTOPX - Space Mission Benchmarks
%       --------------------------------
%       This is an example program to test evaluate the ten
%       benchmark instances of GTOPX, which are:
%
%          No. 1  :   Cassini1
%          No. 2  :   Cassini2
%          No. 3  :   Messenger (reduced)
%          No. 4  :   Messenger (full)
%          No. 5  :   GTOC1
%          No. 6  :   Rosetta
%          No. 7  :   Sagas
%          No. 8  :   Cassini1-MINLP
%          No. 9  :   Cassini1-MO    
%          No. 10 :   Cassini1-MO-MINLP        
%
%       For each benchmark, the number of objetives (o), variables (n) 
%       and constraints (m) are given. Note that benchmark 8 and 10 include
%       integer (discrete) variables, which are located at the end of the
%       solution vector 'x'. The arrays 'xl' and 'xu' denote the lower and 
%       upper bounds (also called box-constraints) for each benchmark. The 
%       array 'x' given in this file is the best known solution vector.
%
%       For further information on GTOPX, see here:
%
%        http://www.midaco-solver.com/index.php/about/benchmarks/gtopx
%
%       For further information on ESA's original GTOP, see here:        
%
%        https://www.esa.int/gsp/ACT/projects/gtop/
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function main
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%   MAIN PROGRAM   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



benchmark = 1; disp(' Cassini1 ')
o  = 1; % number of objectives 
n  = 6; % number of variables 
ni = 0; % number of integer variables 
m  = 4; % number of constraints    
xl = [-1000.0,30.0,100.0,30.0,400.0,1000.0]; % lower bounds
xu = [0.0,400.0,470.0,400.0,2000.0,6000.0];  % upper bounds
x  = [-789.759878, 158.29826, 449.38588, 54.7171393, 1024.686,  4552.799163]; % best known solution

[ f, g ] = gtopxmex( benchmark, x ) % call GTOPX and evaluate solution x



benchmark = 2; disp(' Cassini2 ')
o  = 1; % number of objectives 
n  = 22; % number of variables 
ni = 0; % number of integer variables 
m  = 0; % number of constraints    
xl = [-1000.0,3.0,0.0,0.0,100.0,100.0,30.0,400.0,800.0,0.01,0.01,0.01,0.01,0.01,1.05,1.05,1.15,1.7,-pi,-pi,-pi,-pi];
xu = [0.0,5.0,1.0,1.0,400.0,500.0,300.0,1600.0,2200.0,0.9,0.9,0.9,0.9,0.9,6.0,6.0,6.5,291.0,pi,pi,pi,pi];
x  = [-779.892433765485862,    3.269389635419130,    0.529407294615286,    0.381751843366415,  168.170645682811767,  424.058270269247089,   53.307534897793914,  589.771798786665386, 2199.999664613031655,    0.774320294727850,    0.535144168179482,    0.010162398685082,    0.143320205523028,    0.342141889743363,    1.358780632871789,    1.050000000000000,    1.306778082760443,   69.812518900340208,   -1.593182624457761,   -1.959566444199341,   -1.554766541909198,   -1.513431338508497];

[ f, g ] = gtopxmex( benchmark, x ) % call GTOPX and evaluate solution x
 


benchmark = 3; disp(' Messenger (reduced) ')
o  = 1; % number of objectives 
n  = 18; % number of variables 
ni = 0; % number of integer variables 
m  = 0; % number of constraints    
xl = [1000.0,1.0,0.0,0.0,30.0,30.0,30.0,30.0,0.01,0.01,0.01,0.01,1.1,1.1,1.1,-pi,-pi,-pi];
xu = [4000.0,5.0,1.0,1.0,400.0,400.0,400.0,400.0,0.99,0.99,0.99,0.99,6.0,6.0,6.0,pi,pi,pi];
x  = [1171.4537811,    1.4156386,    0.3787730,    0.4975252,  399.9988492,  178.6438561,  299.2471490,  180.6207630,    0.2369875,    0.0100000,    0.8327221,    0.3142574,    1.7734215,    3.0364436,    1.1000000,    1.3506117,    1.0950083,    1.3449968];

[ f, g ] = gtopxmex( benchmark, x ) % call GTOPX and evaluate solution x
 


benchmark = 4; disp(' Messenger (full) ')
o  = 1; % number of objectives 
n  = 26; % number of variables 
ni = 0; % number of integer variables 
m  = 0; % number of constraints    
xl = [1900.0,2.5,0.0,0.0,100.0,100.0,100.0,100.0,100.0,100.0,0.01,0.01,0.01,0.01,0.01,0.01,1.1,1.1,1.05,1.05,1.05,  -pi,  -pi,  -pi,  -pi,  -pi];
xu = [2300.0,4.05,1.0,1.0,500.0,500.0,500.0,500.0,500.0,600.0,0.99,0.99,0.99,0.99,0.99,0.99,6.0,6.0,6.0,6.0,6.0,   pi,  pi,  pi,  pi,  pi];
x  = [2037.877864567844426,     4.050000190734863,     0.556720539555961,     0.634706307625142,   451.651542959219398,   224.694006511996577,   221.438483720560384,   266.073371482564824,   357.959170121390741,   534.104338857377456,     0.482413583122892,     0.733817341605811,     0.699337665254241,     0.740616124926094,     0.828723386566668,     0.902861270673425,     1.723741116076976,     1.100000023841858,     1.049999952316284,     1.049999952316284,     1.049999952316284,     2.767484583120401,     1.573418587459163,     2.629307841350829,     1.622878432547001,     1.609458990319683];

[ f, g ] = gtopxmex( benchmark, x ) % call GTOPX and evaluate solution x
 


benchmark = 5; disp(' GTOC1 ')
o  = 1; % number of objectives 
n  = 8; % number of variables 
ni = 0; % number of integer variables 
m  = 6; % number of constraints    
xl = [3000.0, 14.0, 14.0, 14.0, 14.0, 100.0, 366.0, 300.0];
xu = [10000.0, 2000.0, 2000.0, 2000.0, 2000.0, 9000.0, 9000.0, 9000.0];
x  = [6810.405216554911021,    168.374697626641421,   1079.474093199302388,     56.387311981695156,   1044.092886333879960,   3820.841817730225102,   1044.327260191322694,   3397.213494950476161];

[ f, g ] = gtopxmex( benchmark, x ) % call GTOPX and evaluate solution x
 


benchmark = 6; disp(' Rosetta ')
o  = 1; % number of objectives 
n  = 22; % number of variables 
ni = 0; % number of integer variables 
m  = 0; % number of constraints    
xl = [1460.0,3.0,0.0,0.0,300.0,150.0,150.0,300.0,700.0,0.01,0.01,0.01,0.01,0.01,1.06,1.05,1.05,1.05,-pi,-pi,-pi,-pi];
xu = [1825.0,5.0,1.0,1.0,500.0,800.0,800.0,800.0,1850.0,0.9,0.9,0.9,0.9,0.9,9.0,9.0,9.0,9.0,pi,pi,pi,pi];
x  = [1542.802723, 4.478444171, 0.73169868, 0.878289696, 365.2423131, 707.7546444, 257.3238516, 730.4837236, 1850.0, 0.512067, 0.810371727, 0.2758878, 0.119192979, 0.43674223, 2.657626174, 1.05, 3.197806169, 1.056221792, -1.253888118, 1.78760233, -1.594671417, -1.977325495];

[ f, g ] = gtopxmex( benchmark, x ) % call GTOPX and evaluate solution x
 


benchmark = 7; disp(' Sagas ')
o  = 1; % number of objectives 
n  = 12; % number of variables 
ni = 0; % number of integer variables 
m  = 2; % number of constraints    
xl = [7000.0, 0.0, 0.0, 0.0,   50.0,  300.0, 0.01, 0.01, 1.05,   8.0, -pi, -pi];
xu = [9100.0, 7.0, 1.0, 1.0, 2000.0, 2000.0,  0.9,  0.9,    7.0, 500.0,  pi,  pi];
x  = [7020.1007967,      5.3454028,      0.0004359,      0.5003408,    789.4146510,    483.9965559,      0.4945883,      0.0100000,      1.0500000,     10.8523045,     -1.5721134,      1.9954418];

[ f, g ] = gtopxmex( benchmark, x ) % call GTOPX and evaluate solution x
 


benchmark = 8; disp(' Cassini1-MINLP ')
o  = 1; % number of objectives 
n  = 10; % number of variables 
ni = 4; % number of integer variables 
m  = 4; % number of constraints    
xl = [-1000.0,30.0,100.0,30.0,400.0,1000.0,   1.0,1.0,1.0,1.0];
xu = [0.0,400.0,470.0,400.0,2000.0,6000.0,    9.0,9.0,9.0,9.0];
x  = [-768.484123850541209,   350.572246317827421,   234.191991642478598,    55.791511186576670,  1012.713353855687160,  4533.949792068496208  ,3.0,2.0,3.0,5.0];

[ f, g ] = gtopxmex( benchmark, x ) % call GTOPX and evaluate solution x
 


benchmark = 9; disp(' Cassini1-MO ')
o  = 2; % number of objectives 
n  = 6; % number of variables 
ni = 0; % number of integer variables 
m  = 5; % number of constraints    
xl = [-1000.0,30.0,100.0,30.0,400.0,1000.0];
xu = [0.0,400.0,470.0,400.0,2000.0,6000.0];
x  = [-789.759878, 158.29826, 449.38588, 54.7171393, 1024.686,  4552.799163];

[ f, g ] = gtopxmex( benchmark, x ) % call GTOPX and evaluate solution x
 


benchmark = 10; disp(' Cassini1-MO-MINLP ')
o  = 2; % number of objectives 
n  = 10; % number of variables 
ni = 4; % number of integer variables 
m  = 5; % number of constraints    
xl = [-1000.0,30.0,100.0,30.0,400.0,1000.0,   1.0,1.0,1.0,1.0 ];
xu = [0.0,400.0,470.0,400.0,2000.0,6000.0,    9.0,9.0,9.0,9.0 ];
x  = [-768.484123850541209,   350.572246317827421,   234.191991642478598,    55.791511186576670,  1012.713353855687160,  4533.949792068496208  ,3.0,2.0,3.0,5.0];

[ f, g ] = gtopxmex( benchmark, x ) % call GTOPX and evaluate solution x
 

