Страницы: 1
RSS
Распределение данных согласно определенным условиям
 
Добрый день!
прошу помочь либо направить в нужное русло, новичок-не судите строго!
и заранее спасибо всем кто попытался помочь)
Итак, что имеем:
1. Доступные номиналы (количество и тип, могут меняться);
2. Подкрепление, на которое будет обеспечена "точка"

Задача: распределить по всем точкам (в нашем случае их 6, может меняться) доступные ден.средства в заданном объёме в соответствии с типом номинала.
Как-то вот так..
Спасибо!
 
если быстро, то как во вложенном файле... потом рукАми лишнюю купюру снять с максимальной потребности (т.к. это будет минимальная относительная нехватка по сравнению с остальными "точками")... т.е.  для 9й строки 1147 и 764 над жёлтыми полями - рукАми...
P.S.
там по итогу проверки =СУММПРОИЗВ(C4:H4;$C$3:$H$3) в L4 и вниз - будут небольшие расхождения (+/-), но это засчёт округлений денег, использованных, а с учётом номиналов Имеющихся (больше всё равно не выдадите) - маленький избыточный хвост снять с макс. потребности... хотя можно и с максимально уже ранее обеспеченных ден. знаками... (рукАми)...
***
если всё формулами хотите, то был недавно "мозговой штурм" на тему:
как округлить числа в массиве до целых, чтобы выйти на общую сумму
(думайте о доп.столбцах/строках)
Изменено: JeyCi - 14.08.2017 18:13:51
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
кстати если попростому - именно по количеству купюр (игнорируя погрешности денег) - отталкиваться от погрешностей округления (далее снимая или добавляя лишнюю купюру с точки с максимальной потребностью) - доп. таблица суммарных погрешностей и поправка на них в общей формуле
p.s.
и в ваш столбик с формулой по суммам всё-таки вставила свою формулу для проверок (вы, наверно, это имели ввиду)
Изменено: JeyCi - 15.08.2017 21:03:43
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Сейчас изучим, спасибо, JeyCi,
 
мне в столбике Погрешность из #3 больше понравилась бы формула =(I4-J4)/J4 [чтобы выразить процент погрешности] и тянуть вниз... но это скорее статистический подход, чем финансовый...
вобщем как нравится [процент погрешности маленький  :) ] - только Формат Ячейки там выставить с 4 знака после запятой и/или процентный (с 2мя знаками после запятой) - если с этой формулой, которая мне больше нравится
...

p.s.
доп. таблица ERROR -это таблица отклонений точных значений от откруглённых значений и их сумм - по ней и проверка в общей формуле (то ли лишняя купюра, то ли одной не хватает, и минусуем/плюсуем от/к позиции с макс значением)... кстати и общая формула может быть по-короче =ЕСЛИ(СТРОКА()-3=$J$12;ОКРУГЛ(C$15*($J4/$J$10)/C$3;0)+ВЫБОР(M$10+2;1;0;-1);ОКРУГЛ(C$15*($J4/$J$10)/C$3;0)) в основную таблицу [так, наверно, и более понятна будет идея] в C4 и тянуть по 1-й таблице...
p.p.s.
практически я бы делала так... не углубляясь в супер-сверх-точные алгоритмы распределения... именно чтобы соблюсти пропорциональность потребностей-распределений-количества купюр [на практике это приоритетная цель, и погрешности небольшие на статистически адекватных выборках]
Изменено: JeyCi - 16.08.2017 09:30:44
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
1. Рассматриваются пачки по 100 купюр (желательно), поэтому внёс кратность знаков на конце, чтобы можно было выбирать до какого знака вводим кратность.
2. Что-то не разобрался для чего мы используем максимальную потребность и возможно ли установить порядок "заполнения"? Например: имеются некоторые точки, которые нужно подкрепить купюрами большего номинала?..
3. Задача состоит обязательно выйти на подкрепление, т.е. на требуемую сумму для каждой точки, исходя из доступных денег (по их количеству всегда будем в итоге выходить на общее подкрепление по всем точкам). И тут по-любому, если работать в таком виде формулами, мы будем иметь погрешность, правильно?
 
Цитата
Tolyandra написал: Задача состоит обязательно выйти на подкрепление, т.е. на требуемую сумму
полагаю, алгоритм "задачи о рюкзаке"... - это из комбинаторики (к вопросу о том, куда копать)... чтобы попробовать найти вариант "без погрешности"
***
моя разбивка пропорционально - это было к вопросу о том, как обеспечить продавцов номиналами на начало дня, чтобы сдачу могли давать  8) - выдать им примерно пропорционально потребности (например, она может быть просчитана предварительно, как потребность, исходя примерно из товарооборота)
при работе с округлениями всегда есть погрешность...
Изменено: JeyCi - 16.08.2017 15:40:54
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
Tolyandra написал: Что-то не разобрался для чего мы используем максимальную потребность
вторая формула из #5 может быть более понятна... чтобы туда недодать или дать лишнюю купюру, смотря на таблицу сумм ошибок/отклонений/погрешностей (т.е. ERROR) от округлений...
Цитата
JeyCi написал: (т.к. это будет минимальная относительная нехватка/переизбыток по сравнению с остальными "точками")...
p.s. не вникала, куда вы внесли кратность, НО то "как вы её внесли" - она очень сильно увеличивает погрешность (если погрешность выразить в процентах, как описала в #5)
Изменено: JeyCi - 16.08.2017 15:48:22
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Доброе время суток.
Версия на "жадном" алгоритме. Не оптимально, как вообще, так и по целому количеству купюр. Да и медленно несколько, с другой стороны на скорую руку. Можно несколько оптимизировать, пойти путём JeyCi, округляя до целых 100 штук её разброс по Клиентам. а уже только остатки раскидывать "жадно", но лениво. Так, по примеру за 2секунды считает, сойдёт, думаю. Может Михаил (MCH) что предложит.
Успехов.
Изменено: Андрей VG - 16.08.2017 17:46:15
 
Цитата
Tolyandra написал: Рассматриваются пачки по 100 купюр (желательно),
а номинал 5 рассмотрели 6040 штук купюр??..
p.s.
вы тогда не в штуках считайте, а в пачках... т.е. в нижней таблице 42, 18, 28 - но 6040/100 круглого значения не получится... там тогда в округления надо вносить изменения (не проверяю)... и если, действительно, хотите по 100 купюр, то не забудьте,про суммы в деньгах, да и все ост. расчёты просмотреть, как через них проходит эта ваша кратность... НО в таком случае вы apriori имеете на руках уже меньшую выборку, значит статистически мЕнее валидную И погрешность у вас большая получается...
p.p.s
спасибо Андрей VG за ваш вариант, и я по вашему посту поняла, о чём ТС... но уже не смотрю, как проходят пачки через все расчёты, если ТС ход мысли уловит, то сам проследит... а если ещё и проникнется  :) моим представлением о статистической адекватности/достоверности (минимизация ошибок при максимизации кол-ва штук в выборке) - то вообще пачками не захочет деньги раздавать... (мечтая выйти на потребность)
Изменено: JeyCi - 16.08.2017 20:06:27
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
Андрей VG написал:
Версия на "жадном" алгоритме
Признателен за пример, правда VB вообще не владею, к сожалению... Предложите с чего начать, чтобы немного освоиться в коде, потому что макросы для меня это предел мечтаний..
Цитата
Андрей VG написал:
Можно несколько оптимизировать, пойти путём  JeyCi , округляя до целых 100 штук её разброс по Клиентам. а уже только остатки раскидывать "жадно", но лениво.
Если не сложно дайте ориентир =)

и отдельное спасибо JeyCi, толкаете меня на изучение неизученного  :)  
Изменено: Tolyandra - 16.08.2017 22:26:47
 
Цитата
Tolyandra написал: с чего начать, чтобы немного освоиться в коде
Глава 9. Работа с базами данных и применение объектной модели ADO
т.к. Андрей VG предложил код с использованием ADO
Цитата
Tolyandra написал: дайте ориентир =)
уже ведь дал
Цитата
Андрей VG написал:Версия на "жадном" алгоритме.
и я линк оставила в #7 - сравнительную характеристику алгоритмов для решения задач такого типа (тип "задача о рюкзаке")... - просто воспользуйтесь Поиском в сети...
p.s. мне что-то подсказывает, что можно ещё глянуть в сторону Данные - Анализ "что если" - Таблицы данных... Уэйн Л. Винстон Microsoft Office Excel 2007. Анализ данных и бизнес-моделирование - (для общего представления о моделировании) ... - предполагаю, но не проверяла (надо самой вникать в это моделирование - время не позволяет)
Изменено: JeyCi - 17.08.2017 07:51:25
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
кажется наши купюры #85
спасибо MCH (18 Авг 2017 08:40:21)
Изменено: JeyCi - 22.08.2017 11:20:18
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Страницы: 1
Наверх