Пусть

– вектор длины

посильных тарифов, где

,

– вектор их частот. Например, для исходной задачи

,

,

. Обозначим через

– псевдобулевы переменные, принимающие значение 1 только если имеет место порог тарифа, соответствующее значению

; через

– обозначим псевдобулевы переменные, принимающие значение 1 только в том случае, если

-ый плательщик получит тариф

.
1. Очевидно, что

если тариф не по карману (

)
2. Для одного плательщика используется не более одного тарифа:

(для

)
3. Количество тарифов не более 4-х:
4. Плательщик может использовать только выбранные тарифы:

(для

)
5. Требуется максимизировать выручку:
Это классическая задача псевдобулева программирования. Может быть решена методом неявного перебора или целочисленным линейным программированием.