Показать сообщение отдельно
Старый 04.09.2007, 17:36   #1  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Да. У нас текущий алгоритм, придуманный сходу, пока где-то так и работает:

1. Сортируем по кол-ву в убывающем порядке.
2. Рассчитываем (общее отклонение - кол-во). если оно по модулю меньше чем общее отклонение, то уменьшаем/увеличиваем в зависимости от знака результата цену на 0.01.
2.1. Повторяем пока разница цены не будет больше 10% или (общее отклонение - кол-во) по модулю не будет больше чем общее отклонение.
3. Переходим к след. кол-ву.

Ну, если отклонение стало равно 0.00, то понятное дело, выходим из любого цикла.

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

делать приведенный выше алгоритм итетационно, то есть за раз уменьшать/увеличивать цену не больше чем "Заданный параметр в %".
При этом нужен еще один параметр - "Максимальное кол-во циклов"

Прям параметры, как у пересчета себестоимотси получаются