Здравствуйте!

Подскажите, пожалуйста, как решить такую задачу:

Есть несколько кусков арматуры разной длинны. Необходимо из них получить заданное число кусков равной длинны, причём длинна должна быть максимальной и в целых числах. Дано: три куска 10, 15 и 20. Из них надо нарезать 5 равных кусков. Получается, что подходящая длинна для нарезки равна 7. В виде уравнения я вижу это так: $$целое(10/x)+целое(15/x)+целое(20/x)=5$$,т.е. целое(1,428571429)+целое(2,142857143)+целое(2,857142857)=5

Как найти x?

Спасибо

задан 17 Авг '12 10:13

изменен 17 Авг '12 14:49

Только перебором.

(17 Авг '12 22:25) DocentI

Наверное, использование функций Excal не противоречит идее перебора. В конце концов, что такое МИН, НАИБОЛЬШИЙ или РАНГ, ка не перебор?

(18 Авг '12 14:46) DocentI

МИН, НАИБОЛЬШИЙ или РАНГ в своей работе используют массив целиком, не применяя перебор в цикле

(20 Авг '12 4:16) sergeyizotov

Функция МИН, Наибольший и другие реализованы на переборе. Использование функций для работы с массивами и базами данных в Excel, я думаю, позволит решить задачу. Это неплохо, что группа энтузиастов проверяет возможности Excel. Но, для решение таких задач (оптимизация) и других, создана надстройка "Поиск решения...".

(20 Авг '12 11:16) Anatoliy

Повторюсь: МИН, Наибольший и другие в своей работе используют массив целиком, без перебора (если под этим словом Вы понимаете перебор как в VBA). К тому же наикратчайшеее решение вообще не использует функций нахождения экстремумов

64:

=СУММ(1-(МУМНОЖ(ОТБР(ТРАНСП(A1:A9)/СТРОКА(1:4000));1^A1:A9)<C1))

ЗЫ Пользоваться "Поиском решения..." хорошо, когда срочно надо решить задачу по работе, а у нас интерес другой, никто не торопит, здесь именно "Мозговой штурм" :)

(20 Авг '12 16:04) sergeyizotov

Смотрите глубже. Имеется ввиду код команды МИН и др. Что касается "Мозгового штурма" в этом направлении, то желаю Вам успехов.

(20 Авг '12 19:19) Anatoliy

Поиск минимума - это перебор по своей математической сути, так как невозможно написать никакой формулы, которая вычисляла бы минимальное значение или его номер. Другое дело - как этот перебор организован.

(20 Авг '12 23:54) DocentI

http://www.fayloobmennik.net/2132647

МУМНОЖ - это функция массива, поэтому и формулу с её участием надо вводить нажатием Ctrl+Shift+Enter. По ссылке файл со всеми предложенными формулами

(21 Авг '12 9:27) sergeyizotov

Да, я так и подумала. Получилось!

(21 Авг '12 23:00) DocentI
показано 5 из 9 показать еще 4
10|600 символов нужно символов осталось
1

Можно с применение компьютера, написав несложную программу. Алгоритм такой:

  1. Занести в одномерный массив длины кусков арматуры.
  2. Найти максимальный элемент ($%max$%) этого массива.
  3. Запустить цикл по $%i=1..max$% (внешний цикл).
  4. $%x:=i$%.
  5. Запустить внутренний цикл по элементам массива, проверяя $%x$%.

Попробуйте вот это: alt text

Значение в ячейке G7 нужно изменять (перебор). Желательно начинать с наибольшего значения.

ссылка

отвечен 17 Авг '12 20:33

изменен 18 Авг '12 13:39

Минимальная длина не обязательно должна быть границей цикла. Ведь можно этот кусок совсем не резать (выкинуть). Например, из кусков 1, 6, 9 метров вырезать 5 равных. Искомая длина куска будет равна 3:
6 = 3 + 3, 9 = 3 + 3 + 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? Конечно, маленький кусок останется неразрезанным, т.е. уйдет в отходы. Но ведь и в Вашем примере отходы есть! Разве в задаче есть дополнительное условие, что от каждого куска надо что-то использовать?
В Excel вместо цикла можно использовать таблицу: на один "вход" (например, по вертикали) подаются исходные длины, а по горизонтали - варианты значения x.

(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
10|600 символов нужно символов осталось
1

Кусок скриншота: alt text

ссылка

отвечен 17 Авг '12 23:15

@Anatoliy, Ваше решение сильно отличается от этого?

(17 Авг '12 23:36) 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
10|600 символов нужно символов осталось
Ваш ответ

Если вы не нашли ответ, задайте вопрос.

Здравствуйте

Математика - это совместно редактируемый форум вопросов и ответов для начинающих и опытных математиков, с особенным акцентом на компьютерные науки.

Присоединяйтесь!

отмечен:

×229

задан
17 Авг '12 10:13

показан
2066 раз

обновлен
21 Авг '12 23:00

Отслеживать вопрос

по почте:

Зарегистрировавшись, вы сможете подписаться на любые обновления

по RSS:

Ответы

Ответы и Комментарии

Дизайн сайта/логотип © «Сеть Знаний». Контент распространяется под лицензией cc by-sa 3.0 с обязательным указанием авторства.
Рейтинг@Mail.ru