Лучшая практика конвертации из 0.X: деревья переменных

Существует ли рекомендуемая передовая практика преобразования деревьев переменных из 0.X в 1.X? Моя интуиция состоит в том, чтобы превратить деревья переменных в компоненты, но мне любопытно, что думает команда OpenMDAO.


person kilojoules    schedule 10.11.2016    source источник


Ответы (2)


мы отошли от переменных деревьев. Вместо этого мы просто называем переменные иерархически, например «top:sub:subsub:x, top:sub:subsub:y».

person Justin Gray    schedule 10.11.2016
comment
Спасибо, Джастин. Как насчет случая, когда в дереве переменных был экземпляр? Моя интуиция состоит в том, чтобы сделать его объектом компонента, который ранее содержал дерево переменных. - person kilojoules; 10.11.2016
comment
Мы больше не предлагаем вам передавать объекты как переменные. Это не дифференцируется и делает оптимизацию очень сложной. Так что да, сделайте его объектом группы и вместо этого передайте данные, которые вам понадобятся. - person Justin Gray; 10.11.2016

килоджоули,

Я тоже был очень расстроен устранением переменных деревьев; но меня гораздо больше расстроило то, что они не смогли интегрироваться с компонентами openmdao и молчали. Скатертью дорога.

Я экспериментировал с numpy.ndarray в качестве замены деревьев переменных. Подробности смотрите в примере Селлара. Создание многомерного ndarray с именами полей, кажется, хорошо работает для структуры данных со ссылкой на имя. Кажется, что для создания многомерности требуется вложение объявлений, аналогичное ветвям дерева переменных.

Обратите внимание, что numpy.array (sic) не совместим с openmdao, но numpy.ndarray (sic) работает хорошо, поскольку ndarray является «структурированным» объектом массива с размером, формой, типом данных и т. д., указанными во внутреннем словаре. Лучше, чем деревья переменных, многомерный ndarray предоставляет несколько «представлений» одних и тех же отношений с одним (массивным) глобальным объявлением, которое может быть создано как параметр внутри компонента. Заполнение экземпляра ndarray выполняется путем присваивания имени поля вместо некоторой итерации. Это сложнее объявить, так как ВСЯ информация о структурированном массиве должна быть предоставлена ​​​​для работы в openmdao. Кроме того, numpy.ndarray предназначен для жестко фиксированных размеров массивов и отношений, как деревья переменных.

Я не защищаю эту концепцию для каждого приложения, но обратите внимание на вашу ситуацию.
Сильвия

person SOERJ    schedule 03.12.2016