Алгоритмы. Поиск десятичного числа при известных границах поиска (мин/макс), Algorithms. Find the decimal number under certain boundaries of a search (min/max)
Ігор Гончаренко написал: ничем не поспособствовал пониманию задачи(((
Мне не понятна задача, первое что пришло на ум уже здесь озвучено:
Цитата
Ігор Гончаренко написал: число уже найдено, см.п.1 (оно задано)
Количество итераций - одна, возвращаем искомое число, если оно находится в диапазоне поиска
Но, скорее всего, задача в другом. Может быть нужно найти аргумент функции, зная ее значение Метод Ньютона не подойдет или Метод хорд? Он должен быстрее сходится, чем метод половинного деления
Хотелось бы более подробно получить описание задачи.
Если каждое слагаемое может быть использовано только один раз, то получим 2^15 = 32768 вариантов сложения, что не много для перебора. но т.к.
Цитата
Maximich написал: что складываемых произведений может быть от одного до 30 шт. максимум и одно и тоже произведение может складываться от одного до 30 раз.
то вариативность значительно больше, чем было посчитано как 15!
Какова конечная задача, что нужно посчитать? Нужно подобрать какую то сумму зная цену на товар, управляя количеством? Для этого не обязательно делать полный перебор, задачу можно свести к линейному программированию либо использовать МВиГ (метод ветвей и границ), который значительно сократить количество перебираемых вариантов.
В итоге задачу можно свести в задачу: из числа ПИ() получить любое другое число, как вариант 1 =-COS(ПИ()) 2 =-ЦЕЛОЕ(-LN(ПИ())) 3 =ЧАС(ПИ()) 4 =-ЦЕЛОЕ(-ПИ()) 5 =ЧАС(TAN(EXP(ПИ()))) 6 =ФАКТР(ПИ()) 7 =-ЦЕЛОЕ(-ПИ()-ПИ()) 8 =СЕКУНДЫ(COS(LN(ПИ()))) 9 =ЧАС(-COS(EXP(ПИ()))) и т.д.
Вот пример решения задачи: Задаем любое целое число (не более 99999999) Можно расставить любые арифметические операции (+, -, *, /) между любыми цифрами, а также скобки, чтобы изменить порядок вычисления Нужно получить число 100 (или любое другое число, если задать искомое число)
Evgenyy написал: В формуле должно быть всего три ссылки на ячейки, а именно: A6, C6, E6, не больше и не меньше.
т.е. ссылаемся на числа только 3 раза (по одной ссылке на число) и если все три числа равны то получаем 6, если числа не совпадают, то получаем другой результат, я правильно понял задачу?
Констатин Л написал: при Этом, если в стране пропала доска 6м (или доску 3м предлагают в 2 раза дешевле) - то нужно быстро сориентироваться сколько нужно доски 3м (и сколько элементов длиннее 3м, чтобы по ним заложить еще доски на сращивание + вытекающие расходы на крепеж, работу и тп
Могу помочь с выбором Приложите реальный набор данных, стыковки углов у меня нет, над этим нужно поработать, а так смогу раскроить даже сложные наборы данных
PS: Есть готовые программные решения которые делают линейный раскрой, есть как бесплатные, так и платные Качество раскроя может быть разным
PPS: Можете приложить свои данные, даже очень сложные, раскрою любой (разумный) набор данных Варианты используемых алгоритмов: жадный алгоритм, решение задачи о рюкзаке (сумма подмножеств), линейное программирование с перебором всех вариантов раскроя Совокупное сочетание данных алгоритмов может дать приемлемый результат по скорости решения и качеству раскроя.
Сочетания без повторений из разных числовых комбинаций, Нужно из определённой комбинации с различным числом чисел извлечь максимальное число сочетаний без повторений
Сочетания без повторений из разных числовых комбинаций, Нужно из определённой комбинации с различным числом чисел извлечь максимальное число сочетаний без повторений
Для перебора сочетания посмотрите реализацию здесь: http://www.excelworld.ru/forum/3-36449-1 Если не получится адаптировать к своей задаче - сообщите, можно будет применить макрос к текущей задаче Также можно сделать перебор 2^n комбинаций, что также будет полным аналогом, но в другой последовательности А лучше сообщите, какая конечная цель данного перебора, что будете дальше с ним делать?
Артур Артур написал: Не полностью расписывать свою задачу, а просто ее упрощу:
Цитата
Артур Артур написал: Имеется ряд чисел: 40, 55, 30, 61, 20, например... Также есть уравнение: X1+X2+X3=90
Данную задачу можно свести к линейному программированию и решить через "Поиск решения" симплекс методом Если в реальности задача другая (не просто сумма, а нелинейная зависимость результата), то нужно применять другие алгоритмы в "поиске решения" Либо делать собственный перебор решений макросом с выбором оптимального решения
Логика формулы следующая: Первые 15,5 минут (полминуты для нивелирования погрешности при округлении) бесплатно, далее округляем в большую сторону до целых часов и умножаем на часовой тариф
Если числа уникальны и находятся в интервале от 1 до 20, то можно посчитать по формуле арифметической прогрессии и вычесть сумму известных чисел: =(1+20)*20/2-СУММ(диапазон)