diff --git a/src/methods/radical/radical.pl b/src/methods/radical/radical.pl index 4663ceffc820f13db7822119713d90caee9614a1..b51f77c7cb258ba1a4c0774e1d5e362ea178b161 100644 --- a/src/methods/radical/radical.pl +++ b/src/methods/radical/radical.pl @@ -32,6 +32,10 @@ %% Initilizes the radical model. %% initModel(NoiseStdDev, Replicates, Angles, Sweeps, M) :- + NoiseStdDev >= 0, + Replicates > 0, + Angles > 0, + Sweeps >= 0, initModelI(NoiseStdDev, Replicates, Angles, Sweeps, M). foreign(initModel, c, initModelI(+float32, +integer, +integer, +integer, +integer)). diff --git a/src/methods/radical/radical_test.pl b/src/methods/radical/radical_test.pl index 995725b2c9ee9af1444f364b2c1d75be4183fdee..1b029279e1cf24d8a43e7c5bf81424db3e2bd2ff 100644 --- a/src/methods/radical/radical_test.pl +++ b/src/methods/radical/radical_test.pl @@ -7,35 +7,107 @@ :- use_module('../../helper_files/helper.pl'). reset_Model :- - initModel(1,0,50,0.0001). + initModel(0.175,30,150,0,0). %% -%% TESTING predicate predicate/10 +%% TESTING predicate initModel/5 %% -:- begin_tests(predicate). +:- begin_tests(initModel). %% Failure Tests + +test(radical_InitModel_DoRadical_No_Init) :- + doRadical([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, Y, _, W, _), + print('\nY: '), + print(Y), + print('\nW: '), + print(W). + +test(radical_InitModel_DoRadical2D_No_Init) :- + doRadical2D([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, Result), + print('\nResult: '), + print(Result). -test(testDescription, [error(domain_error('expectation' , culprit), _)]) :- - reset_Model_No_Train(perceptron), - train([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,0,0,0], 2, culprit, 50, 0.0001, _). +test(radical_InitModel_Negative_NoiseStdDev, fail) :- + initModel(-0.175,30,150,0,0). + +test(radical_InitModel_Negative_Replicates, fail) :- + initModel(0.175,-30,150,0,0). + +test(radical_InitModel_Negative_Angles, fail) :- + initModel(0.175,30,-150,0,0). + +test(radical_InitModel_Negative_Sweeps, fail) :- + initModel(0.175,30,150,-1,0). + +test(radical_InitModel_Negative_M, fail) :- + initModel(0.175,30,150,0,-1). + + +%% Successful Tests + +test(radical_InitModel_Normal_Use) :- + initModel(0.175,30,150,0,0). + +:- end_tests(initModel). + + + +%% +%% TESTING predicate doRadical/10 +%% +:- begin_tests(doRadical). -test(testDescription2, [error(_,system_error('The values of the Label have to start at 0 and be >= 0 and < the given numClass!'))]) :- - reset_Model_No_Train(perceptron), - train([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,1,0,2], 2, perceptron, 50, 0.0001, _). +%% Failure Tests + + +%% Successful Tests + +test(radical_DoRadical_Normal_Use) :- + reset_Model, + doRadical([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, Y, _, W, _), + print('\nY: '), + print(Y), + print('\nW: '), + print(W). + +test(radical_DoRadical_CSV_Input) :- + reset_Model, + open('src/data_csv/iris2.csv', read, File), + take_csv_row(File, skipFirstRow,10, Data), + doRadical(Data, 4, Y, _, W, _), + print('\nY: '), + print(Y), + print('\nW: '), + print(W). + +:- end_tests(doRadical). + + + +%% +%% TESTING predicate predicate/10 +%% +:- begin_tests(predicate). + +%% Failure Tests %% Successful Tests -test(testDescription3, [true(Error =:= 1)]) :- - reset_Model_No_Train(perceptron), - train([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,0,0,0], 2, perceptron, 50, 0.0001, Error). +test(radical_DoRadical2D_Normal_Use) :- + reset_Model, + doRadical2D([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, Result), + print('\nResult: '), + print(Result). -test(testDescription4, [true(Error =:= 0.9797958971132711)]) :- - reset_Model_No_Train(perceptron), +test(radical_DoRadical2D_CSV_Input) :- + reset_Model, open('src/data_csv/iris2.csv', read, File), take_csv_row(File, skipFirstRow,10, Data), - train(Data, 4, [0,1,0,1,1,0,1,1,1,0], 2, perceptron, 50, 0.0001, Error). + doRadical2D(Data, 4, Result), + print('\nResult: '), + print(Result). :- end_tests(predicate).