думаю реализовать самый первый вариант (с убывающей предельной полезностью) через генетические алгоритмы. должно работать довольно быстро. результат будет не слишком "точным" но это и не надо, т.к. люди при покупке товаров руководствуются скорее общими соображениями и спонтанными предпочтениями нежели детально анализируют свой выбор.