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!!!