Показать сообщение отдельно
Старый 31.08.2011, 10:30   #36  
Evgeniy2020 is offline
Evgeniy2020
Участник
 
309 / 68 (3) ++++
Регистрация: 10.04.2007
Адрес: Москва, САО, СЗАО
Нечто подобное этой задаче реализовывал в 2003 году для проекта биллинговой системы по продаже электроэнергии населению (в частности Троицкие электрические сети, в подмосковье)

1 раз в месяц контролеры снимают показания со счетчиков, получают потребление в месяц.

у некоторых абонентов есть разные льготы с разными скидками,
есть лимитные льготы с большей скидкой например 50% на 150 квтч,
есть безлимитные льготы но со скидкой например 30%.
по условию можно выбирать только одну льготу, в нескольких случаях можно применять две льготы.

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

например с 15.07.2011 по 15.08.2011 потребление 150 квтч.
при этом так получается что у человека льгота заканчивается до 1.08.2011
поэтому не запрещается указать 150 в одной части месяца с 15.07.2011 до 1.08.2011 и 0 квтч со 2.08.2011 по 15.08.2011.

в итоге нужно распределять киловатты наивыгоднейшим образом для льготника а также применять нивыгоднейшее сочетание льгот учитывая правила их применимости. на выходе желательно получать 0 рублей или минимальную сумму.

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

это как бы жизненная задачка.


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

Последний раз редактировалось Evgeniy2020; 31.08.2011 в 10:40.