Здравствуйте! Подскажите, пожалуйста, как решить такую задачу: Есть несколько кусков арматуры разной длинны. Необходимо из них получить заданное число кусков равной длинны, причём длинна должна быть максимальной и в целых числах. Дано: три куска 10, 15 и 20. Из них надо нарезать 5 равных кусков. Получается, что подходящая длинна для нарезки равна 7. В виде уравнения я вижу это так: $$целое(10/x)+целое(15/x)+целое(20/x)=5$$,т.е. целое(1,428571429)+целое(2,142857143)+целое(2,857142857)=5 Как найти x? Спасибо задан 17 Авг '12 10:13 sergeyizotov
показано 5 из 9
показать еще 4
|
Можно с применение компьютера, написав несложную программу. Алгоритм такой:
Попробуйте вот это:
Значение в ячейке G7 нужно изменять (перебор). Желательно начинать с наибольшего значения. отвечен 17 Авг '12 20:33 Anatoliy Минимальная длина не обязательно должна быть границей цикла. Ведь можно этот кусок совсем не резать (выкинуть). Например, из кусков 1, 6, 9 метров вырезать 5 равных. Искомая длина куска будет равна 3:
(17 Авг '12 22:25)
DocentI
Спасибо за ответ Мне надо решить эту задачу в Excel, без применения VBA и итераций (т.е. циклом не получится), только формулами листа
(17 Авг '12 22:48)
sergeyizotov
DocentI, если условие из кусков 1, 6, 9 метров вырезать 5 равных, то искомая длина куска будет равна 0, т.к. мы сможем вырезать максимум три куска по 1 метру
(17 Авг '12 22:52)
sergeyizotov
В Excel есть пункт "Поиск решения ..." (Сервис -> Поиск решения..). Попробуйте воспользоваться этой возможностью. Думаю получится.
(17 Авг '12 22:59)
Anatoliy
Мне надо решить эту задачу в Excel, только формулами листа
(17 Авг '12 23:00)
sergeyizotov
При использовании "Поиск решения..." данные, формулы и результат будут размещаться на листе. Искомая длина при 1,6, 9(м) -3(м)
(17 Авг '12 23:08)
Anatoliy
1
@sergeyizotov, а чем Вам не нравится решение вида 6 = 3 + 3, 9 = 3 + 3 + 3? Конечно, маленький кусок останется неразрезанным, т.е. уйдет в отходы. Но ведь и в Вашем примере отходы есть! Разве в задаче есть дополнительное условие, что от каждого куска надо что-то использовать?
(17 Авг '12 23:08)
DocentI
@Anatoliy, Поиск решения - это не решение формулами, это решение надстройкой "Поиск решения".
(17 Авг '12 23:11)
sergeyizotov
@DocentI, это решение не подходит под условие задачи. Надо использовать все куски. Количество "отходов" не играет роли. Таблицы использовать нельзя, нужно решение только формулами листа
(17 Авг '12 23:14)
sergeyizotov
А что, требование резать ВСЕ куски явно сформулировано в задаче? В Вашем тексте его нет. Оно слишком ограничительно, как показывает мой пример.
(17 Авг '12 23:18)
DocentI
Я думаю, что можно "выкрутиться" и формулами листа. Примерно так: длины кусков занесите в столбец; в параллельных столбцах разместите формулы (используя относительную и абсолютную формы адресации) для проверки уравнения (if .. then..); затем разместите формулу для нахождения максимального.
(17 Авг '12 23:26)
Anatoliy
Если столбцов несколько, это и получится таблица, а @sergeyizotov этого не хочет. Тем более, что такая запись не универсальна: при изменении исходных данных надо менять число строк и столбцов.
(17 Авг '12 23:34)
DocentI
показано 5 из 12
показать еще 7
|
Кусок скриншота:
отвечен 17 Авг '12 23:15 DocentI Хорошо, как решить задачу, если можно использовать не все куски?
(17 Авг '12 23:50)
sergeyizotov
Отсутствие лишних ограничений только упрощает задачу. Например, формула, приведенная Вами в вопросе, как раз подходит для случая с "пропущенными" кусками, так как некоторые "целые части" могут оказаться равными 0.
(18 Авг '12 0:06)
DocentI
Вот так это должно выглядеть: http://i.imgur.com/L0mbr.gif @DocentI, а как Вы картинку сюда прикрепили? У меня img что-то не работает :(
(18 Авг '12 0:07)
sergeyizotov
Это не я усложняю :) Я с друзьями соревнуюсь в решении нестандартных задач в Excel формулами с наименьшим количеством символов в них. Хобби такое. И если со знанием функций Excel у меня всё в порядке, то в знании математики есть пробелы. Поэтому я и хотел узнать у Вас алгоритм, и сам реализовать его в Excel. Что бы всё было честно - дать ссылку на обсуждение Решение есть и их несколько. Длинна формул в 84, 80, 71 и 64 символа. Ответили три человека, первый (84) через 33 минуты, после того как был задан вопрос, так что задача видимо не сложная...
(18 Авг '12 0:22)
sergeyizotov
Вставка картинки - через пиктограмму над полем вопроса/ответа. Но сначала надо создать картинку в виде файла (только не используйте кириллицу в названии)
(18 Авг '12 0:43)
DocentI
Да, вот ребята выложили: 80: =СУММ(1-(МУМНОЖ(ОТБР(ТРАНСП(A1:A9)/СТРОКА(СМЕЩ(A1;;;МАКС(A1:A9))));1^A1:A9)<C1)) 71: =МАКС((МУМНОЖ(ОТБР(ТРАНСП(A1:A4)/СТРОКА(A:A));A1:A4^0)=C1)*СТРОКА(A:A)) 64: =СУММ(1-(МУМНОЖ(ОТБР(ТРАНСП(A1:A9)/СТРОКА(1:4000));1^A1:A9)<C1))
(19 Авг '12 15:43)
sergeyizotov
Ага, понятно. По сути, таблица в решении осталась, только она засунута внутрь формулы с помощью МУМНОЖ. Кроме того, Формула применяется к данным фиксированной размерности (4 или 9 заданных длин). У меня эти формулы не работают, дают ошибку #ЗНАЧ на уровне умножения матриц. Кстати, вторая формула при попытке пошагового вычисления приводит к зависанию Excel. Может, их надо вводить как-то по-другому (как функцию массива?) Но в одну ячейку ввести "массив" не получается...
(21 Авг '12 0:04)
DocentI
показано 5 из 8
показать еще 3
|
Только перебором.
Наверное, использование функций Excal не противоречит идее перебора. В конце концов, что такое МИН, НАИБОЛЬШИЙ или РАНГ, ка не перебор?
МИН, НАИБОЛЬШИЙ или РАНГ в своей работе используют массив целиком, не применяя перебор в цикле
Функция МИН, Наибольший и другие реализованы на переборе. Использование функций для работы с массивами и базами данных в Excel, я думаю, позволит решить задачу. Это неплохо, что группа энтузиастов проверяет возможности Excel. Но, для решение таких задач (оптимизация) и других, создана надстройка "Поиск решения...".
Повторюсь: МИН, Наибольший и другие в своей работе используют массив целиком, без перебора (если под этим словом Вы понимаете перебор как в VBA). К тому же наикратчайшеее решение вообще не использует функций нахождения экстремумов
64:
=СУММ(1-(МУМНОЖ(ОТБР(ТРАНСП(A1:A9)/СТРОКА(1:4000));1^A1:A9)<C1))
ЗЫ Пользоваться "Поиском решения..." хорошо, когда срочно надо решить задачу по работе, а у нас интерес другой, никто не торопит, здесь именно "Мозговой штурм" :)
Смотрите глубже. Имеется ввиду код команды МИН и др. Что касается "Мозгового штурма" в этом направлении, то желаю Вам успехов.
Поиск минимума - это перебор по своей математической сути, так как невозможно написать никакой формулы, которая вычисляла бы минимальное значение или его номер. Другое дело - как этот перебор организован.
http://www.fayloobmennik.net/2132647
МУМНОЖ - это функция массива, поэтому и формулу с её участием надо вводить нажатием Ctrl+Shift+Enter. По ссылке файл со всеми предложенными формулами
Да, я так и подумала. Получилось!