1/*
    2The task is to decide whether a machine should be fixed, sent back or is ok.
    3Machines dataset from The ACE Data Mining System User's Manual
    4https://dtai.cs.kuleuven.be/ACE/doc/ACEuser-1.2.16.pdf
    5
    6Downloaded from
    7https://dtai.cs.kuleuven.be/static/ACE/doc/
    8*/

?- induce([train],P),test(P,[test],LL,AUCROC,ROC,AUCPR,PR). ?- induce([rand_train],P),test(P,[rand_test],LL,AUCROC,ROC,AUCPR,PR). */

   14:-use_module(library(slipcover)).   15
   16:- if(current_predicate(use_rendering/1)).   17:- use_rendering(c3).   18:- use_rendering(lpad).   19:- endif.   20
   21:-sc.   22
   23:- set_sc(depth_bound,false).   24:- set_sc(neg_ex,given).   25:- set_sc(megaex_bottom,15).   26:- set_sc(max_iter,10).   27:- set_sc(max_iter_structure,50).   28:- set_sc(verbosity,1).   29
   30
   31
   32:- begin_bg.   33
   34
   35component(C):-
   36  replaceable(C).
   37component(C):-
   38  not_replaceable(C).
   39replaceable(gear).
   40replaceable(wheel).
   41replaceable(chain).
   42not_replaceable(engine).
   43not_replaceable(control_unit).
   44not_worn(C):-
   45  component(C),
   46  \+ worn(C).
   47one_worn:-
   48  worn(_).
   49none_worn:-
   50  \+ one_worn.
   51:- end_bg.   52
   53fold(train,[1,2,3,4,5,6,7,8,9,10]).
   54
   55fold(test,[11,12,13,14,15]).
   56
   57fold(all,F):-
   58  fold(train,FTr),
   59  fold(test,FTe),
   60  append(FTr,FTe,F).
   61
   62:- fold(all,F),
   63   sample(10,F,FTr,FTe),
   64   assert(fold(rand_train,FTr)),
   65   assert(fold(rand_test,FTe)).   66
   67output(sendback/0).
   68
   69input_cw(replaceable/1).
   70input_cw(not_replaceable/1).
   71input_cw(worn/1).
   72input_cw(not_worn/1).
   73input_cw(none_worn/0).
   74%input(one_worn/0).
   75
   76determination(sendback/0,replaceable/1).
   77determination(sendback/0,not_replaceable/1).
   78determination(sendback/0,worn/1).
   79determination(sendback/0,not_worn/1).
   80determination(sendback/0,none_worn/0).
   81
   82modeh(*,sendback).
   83
   84
   85/*modeh(*,[class(fix),class(ok),class(sendback)],
   86  [class(fix),class(ok),class(sendback)],
   87  [replaceable/1,not_replaceable/1,worn/1]).
   88*/
   89
   90modeb(*,not_replaceable(-comp)).
   91modeb(*,replaceable(-comp)).
   92modeb(*,worn(-comp)).
   93modeb(*,not_worn(-comp)).
   94modeb(*,none_worn).
   95
   96sendback(M):-
   97  class(M,sendback).
   98
   99fix(M):-
  100  class(M,fix).
  101
  102neg(sendback(M)):-
  103  class(M,fix).
  104
  105neg(sendback(M)):-
  106  class(M,ok).
  107
  108neg(fix(M)):-
  109  class(M,ok).
  110
  111begin(model(1)).
  112testnr(1).
  113class(sendback).
  114neg(class(fix)).
  115neg(class(ok)).
  116worn(gear).
  117worn(engine).
  118end(model(1)).
  119
  120begin(model(2)).
  121testnr(2).
  122class(ok).
  123neg(class(sendback)).
  124neg(class(fix)).
  125end(model(2)).
  126
  127begin(model(3)).
  128testnr(3).
  129class(fix).
  130neg(class(sendback)).
  131neg(class(ok)).
  132worn(gear).
  133end(model(3)).
  134
  135begin(model(4)).
  136testnr(4).
  137class(sendback).
  138neg(class(fix)).
  139neg(class(ok)).
  140worn(engine).
  141end(model(4)).
  142
  143begin(model(5)).
  144testnr(5).
  145class(fix).
  146neg(class(sendback)).
  147neg(class(ok)).
  148worn(gear).
  149worn(chain).
  150end(model(5)).
  151
  152begin(model(6)).
  153testnr(6).
  154class(fix).
  155neg(class(sendback)).
  156neg(class(ok)).
  157worn(wheel).
  158end(model(6)).
  159
  160begin(model(7)).
  161testnr(7).
  162class(sendback).
  163neg(class(fix)).
  164neg(class(ok)).
  165worn(wheel).
  166worn(control_unit).
  167end(model(7)).
  168
  169begin(model(8)).
  170testnr(8).
  171class(ok).
  172neg(class(sendback)).
  173neg(class(fix)).
  174end(model(8)).
  175
  176begin(model(9)).
  177testnr(9).
  178class(fix).
  179neg(class(sendback)).
  180neg(class(ok)).
  181worn(wheel).
  182worn(chain).
  183end(model(9)).
  184
  185begin(model(10)).
  186testnr(10).
  187class(sendback).
  188neg(class(fix)).
  189neg(class(ok)).
  190worn(engine).
  191worn(chain).
  192end(model(10)).
  193
  194begin(model(11)).
  195testnr(11).
  196class(sendback).
  197neg(class(fix)).
  198neg(class(ok)).
  199worn(engine).
  200worn(control_unit).
  201end(model(11)).
  202
  203begin(model(12)).
  204testnr(12).
  205class(fix).
  206neg(class(sendback)).
  207neg(class(ok)).
  208worn(chain).
  209worn(wheel).
  210worn(gear).
  211end(model(12)).
  212
  213begin(model(13)).
  214testnr(13).
  215class(sendback).
  216neg(class(fix)).
  217neg(class(ok)).
  218worn(chain).
  219worn(wheel).
  220worn(gear).
  221worn(engine).
  222end(model(13)).
  223
  224begin(model(14)).
  225testnr(14).
  226class(ok).
  227neg(class(sendback)).
  228neg(class(fix)).
  229end(model(14)).
  230
  231begin(model(15)).
  232testnr(15).
  233class(fix).
  234neg(class(sendback)).
  235neg(class(ok)).
  236worn(wheel).
  237worn(gear).
  238end(model(15))