if (duration > 0) { double utilPerf = this.params.marginalUtilityOfPerforming_s * typicalDuration * Math.log((duration / 3600.0) / actParams.getZeroUtilityDuration_h()); double utilWait = this.params.marginalUtilityOfWaiting_s * duration; tmpScore += Math.max(0, Math.max(utilPerf, utilWait)); if ( duration >= 3600.*actParams.getZeroUtilityDuration_h() ) { double utilPerf = this.params.marginalUtilityOfPerforming_s * typicalDuration * Math.log((duration / 3600.0) / actParams.getZeroUtilityDuration_h()); double slopeAtZeroUtility = this.params.marginalUtilityOfPerforming_s * typicalDuration / ( 3600.*actParams.getZeroUtilityDuration_h() ) ; if ( slopeAtZeroUtility < 0. ) { System.err.println( "zero utl duration: " + actParams.getZeroUtilityDuration_h() ); throw new RuntimeException( "slope at zero utility < 0.; this should not happen ..."); double durationUnderrun = actParams.getZeroUtilityDuration_h()*3600. - duration ; if ( durationUnderrun < 0. ) { throw new RuntimeException( "durationUnderrun < 0; this should not happen ...") ;
if (duration > 0) { double utilPerf = this.params.marginalUtilityOfPerforming_s * typicalDuration * Math.log((duration / 3600.0) / actParams.getZeroUtilityDuration_h()); double utilWait = this.params.marginalUtilityOfWaiting_s * duration; tmpScore += Math.max(0, Math.max(utilPerf, utilWait)); if ( duration >= 3600.*actParams.getZeroUtilityDuration_h() ) { double utilPerf = this.params.marginalUtilityOfPerforming_s * typicalDuration * Math.log((duration / 3600.0) / actParams.getZeroUtilityDuration_h()); double slopeAtZeroUtility = this.params.marginalUtilityOfPerforming_s * typicalDuration / ( 3600.*actParams.getZeroUtilityDuration_h() ) ; if ( slopeAtZeroUtility < 0. ) { System.err.println( "zero utl duration: " + actParams.getZeroUtilityDuration_h() ); throw new RuntimeException( "slope at zero utility < 0.; this should not happen ..."); double durationUnderrun = actParams.getZeroUtilityDuration_h()*3600. - duration ; if ( durationUnderrun < 0. ) { throw new RuntimeException( "durationUnderrun < 0; this should not happen ...") ;
double zeroUtilityDurationHome_s = params.getZeroUtilityDuration_h() * 3600. ;
double zeroUtilityDurationHome_s = params.getZeroUtilityDuration_h() * 3600. ;
double zeroUtilityDurationHome_s = params.getZeroUtilityDuration_h() * 3600. ;
double zeroUtilityDurationHome_s = params.getZeroUtilityDuration_h() * 3600. ;
factory.setZeroUtilityComputation(computation); ActivityUtilityParameters params = factory.build(); assertEquals(zeroUtilDurW, params.getZeroUtilityDuration_h(), EPSILON); factory.setZeroUtilityComputation(computation); ActivityUtilityParameters params = factory.build(); assertEquals(zeroUtilDurH, params.getZeroUtilityDuration_h(), EPSILON); factory.setZeroUtilityComputation(computation); ActivityUtilityParameters params = factory.build(); assertEquals(zeroUtilDurW2, params.getZeroUtilityDuration_h(), EPSILON);