Мне сложно определить алгоритм оценки для чего-то вроде рецензируемой исследовательской работы.
Возьми этот класс:
public class ResearchPaper
{
int StudentID;
int PaperID;
string Title;
byte Grade;
}
Grade
- это оценка от 0 до 100 (от F до A +), которая первоначально присваивается учителем.
После того, как оценка была присвоена, она может (косвенно) быть изменена путем обратной связи с коллегами посредством сравнений на бумаге. Если коллега говорит, что бумага B (класс 75) ЛУЧШЕ, чем бумага A (класс 80), то бумага A теряет балл (новый класс 79), а бумага B получает балл (новый класс 76). Это может происходить тысячи раз, и бумага В может иметь более высокую оценку, чем бумага А (что хорошо).
Мой план состоял в том, чтобы НЕ менять оценки, если экспертная оценка согласна с тем, что бумага А на самом деле лучше, чем бумага В (так, как их оценил учитель), или бумага А набрала бы баллы в процессе бегства, пока не достигла 100 (что устанавливается как максимум).
Проблема с этим алгоритмом состоит в том, что при МНОЖЕСТВ рецензирования все бумаги в конечном итоге приближаются к одной и той же оценке через даже относительно необычные изменения оценок, которые фактически игнорируют первоначально назначенную оценку учителем.
Есть ли лучший алгоритм для чего-то подобного?