Страницы: 1
RSS
Help!!! Подбор нормо-часов исходя из общей суммы
 
Помоги плз.  
Задача: Есть 4 специалиста с разными ставками, которые работаю по нормо-часам. Сумму затрат на специалистов получаем перемножением ставки на нормо-час.  
Но проблема в том что есть только ставки и общая сумма затрат по всем специалистам и нужно подобрать нормо-часы, так, чтобы суммы затрат по каждому специалисту сошлись в идеале копейка в копейку или наиболее близко к известной заранее общей сумме.  
Допустим у нас ставки специалистов следующие:  
1. Инженер - 105,47 руб/час  
2. Программист - 112,21 руб/час  
3. Тестировщик - 124,32 руб/час  
4. Дизайнер - 145,33 руб/час  
Общая сумма затрат на всех специалистов 15333,75 руб.  
Нужно подобрать кол-во часов для каждого специалиста.  
Ограничений кол-ву часов для специалистов нет, но хотелось бы, чтобы часы распределялись более-менее равномерно по всем специалистам.    
Есть спецы, кто может подсказать как это сделать в excel`e?
 
с помощью надстройки анализа поиск решения  
ограничение часы целое  
часы больше нуля  
исходные данные все по 30  
105.47 30  
112.21 18  
142.32 56  
145.33 15  
15333.75  
 
но считает зараза долго
 
Такой алгоритм вряд ли подойдет, потому что "поиск решения" пытается подогнать все расчеты под сотые доли общей суммы, и если одному человеку надо отработать 90 часов, а другому - 1 для того, чтобы просто сошлась арифметика, то это глупо. Делите всю сумму на 4 равные части, потом на ставку каждого - это будет лучшее решение для распределения денег:)
 
Вот оптимальное распределение:  
105,47 - 32  
112,21 - 31  
142,32  - 31  
145,33 - 28  
Итого - 15334,71
 
Sub podbor()  
Dim stavka  
stavka = Array(105.47, 112.21, 124.32, 145.33)  
Dim i, j, k, l  
For i = 10 To 60  
'    Debug.Print i, j, k, l  
For j = 10 To 60  
For k = 10 To 60  
For l = 10 To 60  
   If WorksheetFunction.SumProduct(Array(i, j, k, l), stavka) > 15333.75 Then Exit For  
   If WorksheetFunction.SumProduct(Array(i, j, k, l), stavka) > 15333.74 Then Stop  
Next  
Next  
Next  
Next  
End Sub  
 
ответ:  
105,47 11  
112,21 20  
124,32 34  
145,33 53
 
{quote}{login=Raptor}{date=07.08.2008 03:27}{thema=}{post}Вот оптимальное распределение:  
105,47 - 32  
112,21 - 31  
142,32  - 31  
145,33 - 28  
Итого - 15334,71{/post}{/quote}  
raptor я ошибся там в данных нужно    
не 142,32  а 124.32  
 
кстати для исправленных данных  
1 попытка  
105.47 19  
112.21 10  
124.32 0  
145.33 84  
15333.75  
воспользовавшись решением слэна установил ограничение  
>15  
105.47 33  
112.21 18  
124.32 30  
145.33 42  
15333.75
 
ну и окончательно возможно лучшее точное решение  
105.47 29  
112.21 29  
124.32 41  
145.33 27  
15333.75  
 
 
возможно лучшее потому что 41-31 = 10 > 31-27=4  
так что улучшение скученности к 31 по прежнему возможно
 
Спасибо всем огромное, сейчас попробуем.  
Честно, не ожидал столь скорой реакции.
Страницы: 1
Читают тему
Наверх