Как найти связь между количеством входных переменных и полученным результатом - PullRequest
1 голос
/ 17 ноября 2010

У меня есть набор из трех (или более) известных переменных, которые связаны с вводом процесса.У меня также есть (измеренные) результаты процесса, в этом случае время, которое потребовалось для завершения процесса.

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

Каков наилучший способ определить, существует ли отношение и существует ли отношение для создания формулы.

У меня есть несколько наборов данных для работы (значения входных переменных и итоговое время).

Есть предложения или ссылки, связанные с этим?Было бы полезно получить подсказку о том, как решить эту проблему, используя код или указатель на некоторую теорию.

Некоторые дополнительные сведения:

Процесс состоит из ряда обрабатываемых файлов (основной ввод) с дополнительным вторичным входом, состоящим из другого набора (справочных) файлов, непосредственно связанных с содержимым основного входа.В настоящее время прогресс отображается в виде общего прогресса файла (связанного с общим количеством основных входов) в сочетании с внутренним прогрессом на основе позиции в содержимом текущего входного файла.Так как общее время, требуемое для файла (набора), может быть довольно длинным (в зависимости от содержимого), я хотел бы добавить какой-нибудь индикатор «оставшееся время» или «ожидаемое время окончания».

Фактический код состоит изобъединения подмножества данных из списка (в формате Excel) с файлами XML в файл устаревшего формата.Часть, отнимающая много времени, - это анализ файлов Excel, но на это сильно влияет фактический размер файла, количество элементов, которые необходимо обработать, и количество файлов, которые необходимо создать в качестве выходных данных.В некоторых случаях большой файл приводит к одному выводу, тогда как в других случаях маленький файл может приводить к большому количеству выходных данных.Поскольку большая часть доступа к файлам выполняется, второстепенным фактором (который трудно выразить в числах) является количество идентичных процессов, запущенных одновременно.

Идея состоит в том, чтобы дать расчетную пропускную способность на основе входных данных.

Ответы [ 3 ]

3 голосов
/ 17 ноября 2010

@ Ответ Heatsink правильный, но выбор семейства функций и количества свободных параметров требует некоторого опыта.Это называется «моделирование», и физики являются мастерами торговли.Кроме того, общая (нелинейная) проблема регрессии не всегда тривиальна для решения.

Возможно, вы можете попробовать этот пакет программ , который иногда достаточно умен, чтобы выбрать правильную функцию и параметры.У меня было несколько хороших опытов с этим.

alt textalt text

HTH!

Кстати ... Если вы можете разместить свои 4D-данные где-нибудь, мы могли бы исследовать немного больше

2 голосов
/ 18 ноября 2010

Как вы будете обновлять индикатор прогресса в процессе вычислений? Если он разделен на большое количество шагов, которые выполняются примерно за равное время, тогда вы можете просто сообщить, сколько шагов было выполнено в процентах от общего количества, без необходимости каких-либо предварительных знаний.

Если в вычислении есть несколько отдельных фаз, вам придется оценивать общий вклад каждого по некоторой формуле, как вы говорите. Тем не менее, для каждой фазы вам понадобится модель того, как далеко продвинулись вычисления в этой фазе, и это требует определенных знаний о самом коде.

Было бы полезно узнать больше о природе входных переменных. Есть ли у вас границы вычислений для самого кода, то есть, вы можете доказать, что он выполняется линейно или квадратично в каждом измерении ввода? Это метод грубой силы, который является факториальным или экспоненциальным в одном из входных данных? Попытка вывести формулу для времени выполнения кода на основе выбора алгоритма, вероятно, будет более точной, чем только эмпирическая регрессия, и может привести к поиску более быстрого алгоритма.

2 голосов
/ 17 ноября 2010

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

Например, вы можете решить, что измеряемая система может быть смоделирована слинейная зависимость, time = a*x + b*y + c*z;затем вы можете использовать линейную регрессию, чтобы найти параметры a, b, c, которые лучше всего соответствуют вашим данным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...