#!/bin/bash #this script sorts the results of all runs for all criteria and all datasets using each possible combination of run*criteria*dataset to see which is best Criteria="AR MER MRE"; Datasets="coc81 nasa93"; Runs=4; gather() { cd .. for criterion in $Criteria do for dataset in $Datasets do for ((run = 1; run <= $Runs; run++)) do cd run$run for file in mwu_$criterion"_"$dataset"_"* do gawk 'BEGIN{FS=OFS=","} $1 !~ "key" {n++; array[n,1] = $1; array[n,2] = $4;} END{ if (n > 1) for (i=1; i<=n; i++) print array[i,1],array[i,2],Criterion"|"Dataset"|"Run; }' Criterion=$criterion Dataset=$dataset Run=$run $file; done cd .. done done done } sum() { gawk ' BEGIN { FS=","; OFS="\t"; SortValue = 1; } { key = $1; value= $2; rest = $3; #record the key as seen if not already and index it if (keyArraySeen[key]+0 == 0) { keyArraySeen[key] = 1; keyArrayIndex[++keyArrayIndex[0]] = key; } #find the index of key for (i = 1; i <= keyArrayIndex[0]; i++) { if (keyArrayIndex[i] == key) { keyIndex = i; i = keyArrayIndex[0] + 1; } } #record the rest as seen if not already and index it if (restArraySeen[rest]+0 == 0) { restArraySeen[rest] = 1; restArrayIndex[++restArrayIndex[0]] = rest; } #find the index of rest for (i = 1; i <= restArrayIndex[0]; i++) { if (restArrayIndex[i] == rest) { restIndex = i; i = restArrayIndex[0] + 1; } } #store the key dataArray[keyIndex,0] = key; #add the number of losses dataArray[keyIndex,restIndex] += value; } END { #sorting the array using insertion sort for (i = 1; i <= keyArrayIndex[0]; i++) { for (value = 0; value <= restArrayIndex[0]; value++) tempValue[value] = dataArray[i,value]; j = i; while ((j > 1) && (dataArray[j-1,SortValue] > tempValue[SortValue])) { for (value = 0; value <= restArrayIndex[0]; value++) dataArray[j,value] = dataArray[j-1,value]; j = j - 1; } for (value = 0; value <= restArrayIndex[0]; value++) dataArray[j,value] = tempValue[value]; } # #print the names # printf("key"); # for (value = 1; value <= restArrayIndex[0]; value++) # printf("\t%s", restArrayIndex[value]); # print ""; for (i = 1; i <= keyArrayIndex[0]; i++) { printf("%s",i); for (value = 0; value <= restArrayIndex[0]; value++) printf("\t%s", dataArray[i,value]); print ""; } } ' SortValue=$1 $2; } plot() { gnuplot < results; cd graphs for ((i = 1; i <= $Runs*3*2; i++)) do sum $i results > final$i; plot $i final$i; done