Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 120 След.
Подбор арифметических действий с использованием различных знаков.
 
Решал схожую задачу (или схожими методами) здесь:
http://www.excelworld.ru/forum/7-1962-1

Поэтому и возник вопрос, для чего это все нужно?
Подбор арифметических действий с использованием различных знаков.
 
Цитата
wholesander написал:
хочу реализовать возможность использования подбора  арифметических действий как выше указанном примере, но используя разные знаки во всех их возможных комбинациях
wholesander, опишите задачу подробнее, что нужно сделать?
Задачка
 
Код
Sub www()
    Dim i As Long, j As Long, s As Long, a(9)
    For i = 9 To 0 Step -1
        s = 1 + Len(Join(a)) - Len(Replace(Join(a), i, ""))
        If a(i) <> s Then a(i) = s: i = 10
    Next i
    Cells(1, 1).Resize(, 10) = a
End Sub

Работа со строками крайне не эффективна при длительных расчетах, сделано исключительно для сокращения кода, в реальных задачах так не целесообразно делать
Изменено: MCH - 18 Фев 2020 13:21:42
Задачка
 
перебор через комбинаторику, который выдает оба варианта:
Код
Sub wwwCombin()
    Dim n As Long, i As Long, strRes As String
    Dim a() As Long, b(9) As Long
    
    Const m As Long = 9
    ReDim a(1 To m) As Long
    For n = 19 To 20
        For i = 1 To m: a(i) = i: Next i
        Do
            b(0) = a(1)
            For i = 1 To m - 1
                b(i) = a(i + 1) - a(i)
            Next i
            b(9) = n + 1 - a(m)
            If fCheck(b()) Then
                strRes = "В этом предложении "
                For i = 0 To 9
                    strRes = strRes & "цифра " & i & IIf(i = 0, " встречается ", " - ") & b(i) & " раз" & IIf(b(i) > 1 And b(i) < 5, "а", "") & IIf(i < 9, ", ", "")
                Next
                Debug.Print strRes
            End If
        Loop While NextCombin(a(), n, m)
    Next n
End Sub

Function fCheck(b() As Long) As Boolean 'проверка массива на соответствие
    Dim c(9) As Long, i As Long
    For i = 0 To 9
        c(b(i) Mod 10) = c(b(i) Mod 10) + 1
        If b(i) > 9 Then c(b(i) \ 10) = c(b(i) \ 10) + 1
    Next i
    For i = 0 To 9
        If c(i) + 1 <> b(i) Then Exit Function
    Next i
    fCheck = True
End Function

Function NextCombin(a() As Long, n As Long, m As Long) As Boolean 'следующее сочетание
    Dim i As Long, j As Long
    For i = m To 1 Step -1
        If a(i) < n - m + i Then
            a(i) = a(i) + 1
            For j = i + 1 To m
                a(j) = a(j - 1) + 1
            Next j
            NextCombin = True
            Exit For
        End If
    Next i
End Function
Задачка
 
А мне захотелось чуть причесать код Михаила (БМВ)
Ничего нового не добавил, только изменил циклы и ущел от текстовых строк
Код
Sub www()
    Dim i As Long, j As Long, s As Long, a(9) As Long
    For i = 9 To 0 Step -1
        s = 1
        For j = 0 To 9
            s = s - (a(j) Mod 10 = i) + (a(j) \ 10 = i) * (a(j) > 9)
        Next j
        If a(i) <> s Then
            a(i) = s
            i = 10 'не совсем красиво, но работает
        End If
    Next i
    Cells(1, 1).Resize(, 10) = a 'альтернативный вывод, для упрощения, можно оставить предыдущий вариант
End Sub
Подбор слагаемых для нужной суммы
 
из исходного набора данных получается 49 вариантов получить сумму 2005
какой вариант предпочтительнее?
Скрытый текст
Подбор слагаемых для нужной суммы
 
http://www.excelworld.ru/forum/3-5196-1
Формула с суммой прописью. Что обозначают диапазоны n0x, n_1, n_2, n_3?
 
первоисточник формулы здесь: http://www.excelworld.ru/forum/3-9902-1
формула в имени n0x нужна для создания отдельного написания для чисел от 10 до 19, т.к. для этих чисел используется другой принцип образования числительных
Случайная выборка данных по общей сумме и кол-ву позиции
 
Цитата
БМВ написал:
точно выйти на указанную сумму трудоемко, а может и совсем не получается
Из имеющегося набора данных вполне можно получить точную сумму 35 000 000
Настройка "Поиск решения" - медленный и неточный поиск, наверняка что-то делаю не так
 
Цитата
Jack Famous написал:
есть идеи, с чем это может быть связано?
Возможно в реализации алгоритма у MS (связанного с целыми числами), как симплекс-метода, так и ОПГ и эволюционного алгоритма
Потому как альтернативный симплекс-метод решил задачку моментально

Ранее также сталкивался с некорректным поведением MS Solver в задачах с целочисленными решениями
Изменено: MCH - 21 Ноя 2019 11:49:10
Настройка "Поиск решения" - медленный и неточный поиск, наверняка что-то делаю не так
 
Переделал модель, но "Поиск решения" не находит нужный результат
OpenSolver находит решение за секунду
Комбинаторика и ГИПЕРГЕОМЕТ: вывод сочетаний с условием ограниченной выборки
 
Количество комбинаций успешных выборок должна определятся по формуле
Код
=ЧИСЛКОМБ(A5;A3)*ГИПЕРГЕОМЕТ(A2;A3;A4;A5)

или
Код
=ЧИСЛКОМБ(A4;A2)*ЧИСЛКОМБ(A5-A4;A3-A2)

Второй вариант используя две генерации сочетаний можно реализовать макросом
Избушка формулистов-3, не для вопросов, но для формульных задач
 
Цитата
Zasypich написал:
Я решаю довольно просто
На самом деле подобные производственные задачи необходимо решать именно таким способом:
Определяем узкое место и максимизируем прибыль (маржу) по этому узкому месту, либо пытаемся его "расшить"
В идеале лучше составить математическую модель для решения "Поиском решения", самые простые примеры можно решить перебором, если не получается, то подходим к задаче через узкие места.

Был на тренинге, где в виде бизнес-игры была производственная задача, очень похожая, но сложнее (условия во вложении):
В первом периоде ничего нельзя изменять
Во втором периоде можно обучать и мотивировать персонал изменяя скорость обработки продукции и время протекания процесса
В третьем периоде можно изменять все: брать в аренду новое оборудования, применять технологии, улучшать бизнес-процессы

Основное требование - максимизировать производительность на человека (отношение добавленной стоимости к численности) за три периода в целом.
У меня есть 3 варианта решения:
1. Максимальная прибыль (но не максимальная производительность)
2. Оптимальная производительность - на каждом периоде выбирается самое оптимальное решение
3. Совершенно не очевидное решение, но приводящее к максимальной производительности за 3 периода.

Мне так и не удалось построить единую математическую модель решающая через "Поиск решения", которая охватывала бы все 3 периода
Получалось локально для каждого периода находить оптимальное решение.
И перебором задача не решается - очень большая вариативность.
Рассчитать единый социальный налог (ЕСН) в зависимости от дохода
 
Два варианта, первый понятен логически, второй - математическое упрощение первого
Пропорциональное распределение числа на группу чисел, Плывут цифры после запятой
 
Вариант распределения во вложении, прост в реализации, дает определенную погрешность в зависимости от исходных данных
Можно конечно реализовать метод Хейера-Нимейера, чтобы минимизировать погрешность: http://www.excelworld.ru/forum/2-6852-1
Изменено: MCH - 22 Окт 2019 06:54:49
"Поиск решений" как получить ответов больше чем один
 
Если решать задачу полным перебором, то у меня нашлось 4670 вариантов:
Все числа целые от 0 до 9, перебираем 10^6 комбинаций, можно отсеивать неперспективные ветви решения для ускорения перебора
На указанном примере расчет занимает доли секунд, но в реальной задаче перебрать все варианты решения, скорее всего, невозможно

"Поиск решения" не сможет найти все варианты решения
Можно попробовать генерировать случайные исходные данные и запускать поиск решения несколько раз, получая при этом нужный результат, можно получить несколько разных решений, если решать не симплекс методом, а ОПГ
Ищу вариант расчета числа X из суммы множества числовых значений.
 
http://www.excelworld.ru/forum/3-5196-1
Сколько раз подряд по одному., Сколько раз подряд по одному.
 
Написал с упрощением одной проверки, но уже Светлый опередил
Код
=(ЧСТРОК(A$2:A3)-ПОИСКПОЗ(2;1/(A$2:A3<>1)))*(A4<>1)
Изменено: MCH - 1 Окт 2019 23:05:04
Зарплата в зависимости от продаж, Зарплата от продааж
 
Цитата
НатаДан написал:
УРАААААА! ЗАРАБОТАЛООООО!
А точно корректно работает, например при продажах 5000 и 20000 какой должен быть результат?
у меня такой вариант:
Код
=ПРОСМОТР(A2;{0:5000:9000:15000};(A2-{0:5000:9000:15000})*{0:0,03:0,04:0,05}+{0:0:120:360})

Код
=ПРОСМОТР(A2;{0:5000:9000:15000};A2*{0:3:4:5}%-{0:150:240:390})
Изменено: MCH - 23 Сен 2019 14:44:51
Избушка формулистов-3, не для вопросов, но для формульных задач
 
Цитата
написал:
Zasypich  написал: Сейчас в мыле. Позже дам + модификации к задаче.
Zasypich, можно посмотреть на Ваше решение задачи?
Арканы Таро- цифры вместо букв в таблице
 
Цитата
zelosir написал:
Тренировочное слово - гидроэлектростанция
так нужно?
Избушка формулистов-3, не для вопросов, но для формульных задач
 
Ну тогда и мое решение под задачу  - 82:
Код
=МАКС((СТОЛБЕЦ(A:CW)+СТРОКА(1:51)*2<=163)*(СТОЛБЕЦ(A:CW)*45+СТРОКА(1:51)*60))-6105

Остальные решения во вложении
Избушка формулистов-3, не для вопросов, но для формульных задач
 
Цитата
Светлый написал: Формула 80 знаков.
Ну у меня возможно другой алгоритм, формула с константами получается больше 100 знаков, а универсальная переваливает за 300
Скрытый текст
Избушка формулистов-3, не для вопросов, но для формульных задач
 
Цитата
Светлый написал: *Да, решение $300.
Решал через "Поиск решения": P = 100, Q = 30, прибыль = 300

Ну изюм, наверное, в ограничении в трудозатратах, чтобы каждый работник не перерабатывал.
У меня в Excel "Поиск решения" начал сбоить, когда я поставил для работника B следующие параметры: для детали 2 время 10 мин, для детали 3 - время 20 мин.
При этом формула считает верно, возможно не правильно сделал модель для поиска решения.

Сделал мат. модель и универсальную формулу, которая корректно считает максимальную прибыль.
Т.к. решение "в лоб", то формула получилась большая, подумаю, как сократить
Расчёт числа параллельных процессов
 
Цитата
БМВ написал:
тут уже подходы решения важнее
Именно

Цитата
Андрей VG написал:
Несколько другой подход. Так же с минимизацией числа пулов тестов, но с выравниванием количества тестов в каждом пуле.
Решил аналогичную задачу на тех же исходных данных, что и в 20 сообщении
Получилось 9 пулов, в 8ми по 11 тестов, в 9ом - 12 тестов

Расход памяти в каждом наборе тестов одинаковый (за исключением последнего)
вариант найденного решения во вложении.

Можно найти подобное решение формулами?
Изменено: MCH - 11 Сен 2019 11:24:49
Расчёт числа параллельных процессов
 
Задача напоминает классическую задачу об упаковке в контейнеры, либо задачу линейного раскроя
Цитата
Андрей VG написал:
а на таком наборе входных данных
Цитата
Светлый написал:
*Немного красоты навёл:
У меня макросами немного по другому получилось: см. вложение
Возможно жадный алгоритм из 15го сообщения не все распределил
Комбинаторика. Сочетания без повторений с дополнительными вычислениями в итогах
 
Посмотрите макрос, он небольшой (40 строчек кода), попробуйте разобраться самостоятельно.
У меня подсчет (перебор всех комбинаций и расчет функции) занимает 4-5 секунд.
Можно при очередном запуске проверять на результат 0,38 и выводит на лист все варианты, только их будет очень много - 400 тыс. вариантов
Комбинаторика. Сочетания без повторений с дополнительными вычислениями в итогах
 
Цитата
Cupon написал:
Я думаю методом подбора функций надо выйти на оптимальное решение.
Какую функцию подбираем? какой результат нужен в итоге? для чего все это?
Анализ лотереи?
Комбинаторика. Сочетания без повторений с дополнительными вычислениями в итогах
 
вариант 6 из 49
Комбинаторика. Сочетания без повторений с дополнительными вычислениями в итогах
 
Цитата
Cupon написал:
дальше мне необходимо подбить по количеству сколько будет получившихся одинаковых чисел (а они будут). Потом рисую график
Пока писал предыдущее сообщение, уже появилась конкретная задача, что нужно
Данный вариант можно решить на макросах, пока нет времени писать, если никто не реализует, то вечером или завтра набросаю
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 120 След.
Наверх