В Matlab у меня есть глобальная процедура оптимизации (имитация отжига, для любопытных), и я хочу использовать промежуточные результаты для следующего:
- Для каждой итерации (температуры) в имитируемом отжиге, У меня есть оценка глобального минимума функции до полного завершения алгоритма, используйте здесь функции set () и get () для этого значения.
- Затем я хочу использовать эту оценку, чтобы породить другой экземпляр и снова выполнить оптимизацию параллельно. Оптимизация будущей функции зависит от текущего значения сверху.
- В общей сложности Spawn X 'дочерние' экземпляры параллельно, используя все текущие оценки 'родительских' глобальных минимумов, которые были созданы до текущего 'child'
- Когда оцененный глобальный минимум (ы) обновляется по мере выполнения процедуры, передайте соответствующие значения соответствующим «потомкам» и продолжите дочерние процедуры, даже если начальные условия технически изменились
- После Завершив процедуру оптимизации верхнего уровня, начните завершать все дочерние элементы после завершения их текущей итерации
- Вернуть все оценки. Это эффективно обеспечит оптимальный результат в настоящее время, и несколько неоптимальных оценок в будущем все будут взаимозависимы от дочернего процесса, созданного до него.
Я знаю, что вышеизложенное очень на высшем уровне, поэтому мои конкретные c вопросы таковы:
- В Matlab есть простой способ порождать параллельные дочерние процессы, когда у меня есть оценка глобального минимума? parfeval, afterEach выглядит многообещающе, но документация довольно скудная позже. Возможно ли это?
- В основном я ищу создание дерева дочерних процессов, выполняющихся параллельно, которые порождают в определенных c условиях. В идеале входные данные для этих дочерних элементов должны быть динамическими c, поскольку они зависят от процессов, выполняемых в ветвях выше. Есть ли легкодоступные примеры в Matlab или другом языке чего-то подобного?