Предлагаю такое решение. Вес каждого пункта одинаков (20% в случае 5 вариантов ответа). Для каждого пункта известно, должен ли он быть включен в ответ (должна ли стоять галочка). Если галочка должна стоять и пользователь ее поставил - за этот пункт баллы начисляются. Если галочка должна стоять, пользователь ее не поставил - баллы не начисляются. Аналогично для пункта, который не должен быть включен в ответ.
Пример: 5 пунктов, 1 и 2 правильные, 3,4,5 - неправильные.
1 и 2 отмечены, 3,4,5 не отмечены - 100%
1 и 2 не отмечены, 3,4,5 не отмечены - 60%
1 отмечен, 2,3,4,5 не отмечены - 80%
1,3,4 отмечены, 2,5 не отмечены - 40%
1,2 не отмечены, 3,4,5 отмечены - 0%
и так далее (всего 32 варианта).
Человек поставил 1 верную галочку и 1 неверную - какой процент верности?
20% за одну верную поставленную галочку и 40% за две верные непоставленные галочки, всего 60%
Человек поставил 1 верную галочку и 2 неверных - какой процент верности?
20% за верную поставленную галочку, 20% за одну верную непоставленную галочку, всего 40%.
Возможно есть какие-либо статьи или известные решения?
Примерно так, по-моему, реализовано тестирование в coursera.
UPD. Как я понял, вас смущает тот факт, что при некоторых свойствах ответов (количество верных/неверных) пользователь может получить средний балл, вообще не ставя галочки. Если вы считаете это проблемой, то предлагаю два решения. Первое - соответственно составлять вопросы, чтобы количество верных ответов было выше количества неверных. Второе - при старте выставить галочки в случайном порядке. В таком случае (опять же, при правильном подборе параметров) получить высокий балл ничего не делая будет сложнее.