vsbpp_lb_2010 Code
Brought to you by:
muogoro
Modifiche alla Perboli-version
Oltre all'implementazione delle short term update nel file vsbpp-bound.cpp, è
stato aggiungo un ulteriore parametro -pf che consente di specificare un
"parameter file". Il file in questione istruisce l'eseguibile riguardo:
- quale funzione di short term update eseguire e a quale iterazione;
- che parametri utilizzare per l'esecuzione della funzione di short term update.
La sintassi di un parameter file è la seguente:
# Comment
%% <iteration> -> "<SHORT_TERM_UP_NAME>"
"<PARAMETER_FUNC>" = <VALUE>
Il file consiste in una lista di funzioni STU, seguite dagli eventuali
parametri.
Le possibili STU sono le seguenti:
- SLIDING;
- SUBSTRING_SWAP1;
- SUBSTRING_SWAP2;
- WORSTBINSFIRST;
- BESTBINSLAST.
Ogni STU è indicata come una stringa tra virgolette, preceduta dalla
stringa "%% i ->" dove i rappresenta l'iterazione al quale eseguire
la STU.
I possibili parametri per ogni STU sono i seguenti:
- sliding_M: setta M. Può essere specificato come valore intero
o come frazione/multiplo del numero di contenitori B.
Default: B/2;
- sliding_delta: setta delta. Default 0.15;
- substringswap1_M: setta M. Può essere specificato come valore intero
o come frazione/multiplo del numero di contenitori B.
Default: N/2;
- substringswap1_delta: setta delta Default 3;
- substringswap2_M: come sopra ma per la seconda versione del
substringswap;
- substringswap2_delta: come sopra ma per la seconda versione del
substringswap;
- worstbinsfirst_k: setta k. Default 3;
- worstbinsfirst_alfa: setta alfa. Default 0.15;
- bestbinslast_k: setta k. Default 3;
- bestbinslast_alfa: setta alfa. Default 0.15;
Il parametro è specificato tra virgolette, seguito da un uguale e
dal valore al quale si desidera settarlo.
Sotto un esempio di parameter file:
# Example
%% 0 -> "SLIDING"
"sliding_delta" = 0.15
#"sliding_M" = 20
"sliding_M" = B/3
#%% 250 -> "SUBSTRING_SWAP1"
"substrswap1_delta" = 2
"substrswap1_M" = 10
#%% 600 -> "SUBSTRING_SWAP2"
"substrswap2_delta" = 2
"substrswap2_M" = 10
%% 800 -> "WORSTBINSFIRST"
"worstbinsfirst_k" = 3
"worstbinsfirst_alfa" = 0.3
#%% 800 -> "BESTBINSLAST"
"bestbinslast_k" = 3
"bestbinslast_alfa" = 0.3
Un parameter file (che viene passato di default agli script che
lanciano i test) è presente nella directory data (params_file_test
per linux, params_file_test.txt per windows).
ATTENZIONE: la funzione per il parsing del params file è scritta da
cani. La sua implementazione non è altro che una banale serie di
fgets e chiamate alle funzioni della cstring: è quindi TOTALMENTE
sensibili a spaziature, righe vuote etc. Non è inoltre implementata
alcuna sorta di error checking. Ordunque: immettete valori "sensati"
e attenti alle spaziature. O al limite modificate il codice e
committate!!!