comparison pkg/controllers/gauges.go @ 3101:41ed69dbf9bb

Nash Sutcliffe: Optimization: When append predicted values only accept predictions where the issue date is 24/48/72h in the past of the measure date.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 25 Apr 2019 11:39:17 +0200
parents f516ac26f4db
children 54a3e40cfbed
comparison
equal deleted inserted replaced
3100:d79e6045452e 3101:41ed69dbf9bb
446 ); err != nil { 446 ); err != nil {
447 return nil, err 447 return nil, err
448 } 448 }
449 defer rows.Close() 449 defer rows.Close()
450 450
451 acceptedDeltas := []time.Duration{
452 -time.Hour * 24,
453 -time.Hour * 48,
454 -time.Hour * 72,
455 }
456
457 isAccepted := func(observed, predicted time.Time) bool {
458 for _, delta := range acceptedDeltas {
459 t := observed.Add(delta)
460 d := predicted.Sub(t)
461 if -10*time.Millisecond < d && d < 10*time.Millisecond {
462 return true
463 }
464 }
465 return false
466 }
467
451 var ( 468 var (
452 hasCurrent bool 469 hasCurrent bool
453 current observedPredictedValues 470 current observedPredictedValues
454 values []observedPredictedValues 471 values []observedPredictedValues
455 ) 472 )
489 when: measureDate, 506 when: measureDate,
490 } 507 }
491 } 508 }
492 509
493 if predicted { 510 if predicted {
494 current.predicted = append( 511 if isAccepted(measureDate, issueDate) {
495 current.predicted, 512 current.predicted = append(
496 common.TimedValue{When: issueDate, Value: value}, 513 current.predicted,
497 ) 514 common.TimedValue{When: issueDate, Value: value},
498 /* 515 )
499 // current prediction same as last two? 516 }
500 if l := len(current.predicted); l > 1 && current.predicted[l-1].Value == value && current.predicted[l-2].Value == value {
501 // only update last time.
502 current.predicted[l-1].When = issueDate
503 } else {
504 current.predicted = append(
505 current.predicted,
506 common.TimedValue{When: issueDate, Value: value},
507 )
508 }
509 */
510 } else { 517 } else {
511 current.observed = value 518 current.observed = value
512 } 519 }
513 } 520 }
514 521