#region calculate goodness and select best fit

def sumAbsValues(list):
	sum = 0
	for val in list:
		sum += abs(val)
	return sum

tsRef = measuredTimeSeries.GetValues()

deviation =[]
startIndex = 20 #remove influence of initial conditions
for i in range(1,timeSeriesToCompare.Count):
	devItem = sumAbsValues(list(substractLists(timeSeriesToCompare[i].GetValues(),tsRef,startIndex)))
	deviation.append(devItem)

bestFitDeviation = min(deviation)
bestFitIndex = deviation.index(bestFitDeviation)+1


if bestFitIndex == 1: #basis model
	bc1BestFit = bc1Ini
	roughnessBestFit = rghnsIni
else:
	idxBestBC = (bestFitIndex-1)/len(rangeRoughness)
	idxBestRoughness = (bestFitIndex-1)%len(rangeRoughness)
	bc1BestFit = rangeBC1[idxBestBC]
	roughnessBestFit = rangeRoughness[idxBestRoughness]

print "selected bc: " + str(bc1BestFit) + "m3/s"
print "selected roughness " + str(roughnessBestFit) + "m^(1/3) s^-1"
print timeSeriesToCompare[bestFitIndex].Components[0].Name

#endregion
  • No labels