Thank you for adding it to the right. That definitely saved my code, as it's pretty "dumb" in regards to the psummary parsing. Other than being rather inflexible, it's worked great so I haven't messed with it much. This change gives me a reason to overhaul and make it smarter.
Based on these formulas:
Code: Select all
Total points = base points * bonus factor
The bonus factor is computed based on the time from when our server issues the work unit to when it receives the work unit (WU_time), the time from work issuance to when the deadline would expire (deadline_time), the time from issuance to when the work unit times out and is marked for reissuance (timeout_time), and a constant factor k.
If WU_time > timeout time, bonus factor = 1.
If WU_time <= timeout time, bonus factor = sqrt(deadline_time * k / WU_time)
.
I feel that if a Project does not qualify for a bonus, then a k value of 0 should be assigned... since, as someone else mentioned, a k value of 1 would be valid for Bonus Projects.
The addition of this k value also give us (I think) everything we need to correctly calculate bonus PPD!
A few other questions (since I want to try and be as accurate as possible with the calculation):
- Is there anywhere we can find the timeout_time? Is this the final deadline? I'm under the impression that the current bigadv trial projects are 3 days (neither the preferred or final deadline), but I imagine this value will vary with new projects later on. It will be essential to know this value to determine when to set the bonus factor back to 1 and effectively remove all bonus PPD from the calculation.
- To follow on that, is the deadline_time preferred or final deadline... I assume the former.
If there's anywhere I can find an example calculation using available information, that would be most helpful.