$title Ten-fold cross validation example using GUSS $eolcom ! $setglobal num_folds 10 set p /1*%num_folds%/; ! folds to perform ! Read in data $include "wdbc.gms" set test(p,i); ! testing set ! Define problem parameter C /1/; positive variables z(i); variables obj, w(k), gamma, slack(i); equations obj_def, sep_def(i); obj_def.. obj =e= 1/2*sum(k, sqr(w(k))) + C*sum(i, z(i)); sep_def(i).. D(i)*(sum(k, A(i,k)*w(k)) - gamma) + z(i) + slack(i) =g= 1; model train /all/; ! Generate testing sets (to be deleted in each problem) loop(p, $batinclude gentestset2.inc "p,i" ); set headers report / modelstat, solvestat, objval /; parameter scenrep(p,headers) scopt / SkipBaseCase 1, LogOption 2 /; set dict / p. scenario.'' scopt.opt. scenrep z. upper. iupper slack.upper. ifree /; Parameter iupper(p,i), ifree(p,i); iupper(p,i)$(not test(p,i)) = inf; ifree(p,i)$test(p,i) = inf; option qcp=conopt, optcr=0, optca=0; solve train using qcp minimizing obj scenario dict; display scenrep; $if not set runtraditional $exit * Traditional Solve parameter rep(p,headers); option limrow=0, limcol=0, solprint=silent, solvelink=%Solvelink.LoadLibrary%; loop(p, z.up(i) = inf; z.up(i)$test(p,i) = 0; slack.up(i) = 0; slack.up(i)$test(p,i) = inf; solve train using qcp minimizing obj; rep(p,'modelstat') = train.modelstat; rep(p,'solvestat') = train.solvestat; rep(p,'objval') = train.objval; ); display rep;