Как сделать форму параметра переменной?
Предположим, я оптимизирую количество ветряных турбин в ветропарке. Форма макета является переменной, управляемой оптимизатором. Если я не объявляю форму или значение параметра, я получаю ошибку:
ValueError: Shape of output 'U' must be specified because 'val' is not set
но форма U зависит от размера входного параметра, который неизвестен.
Должен ли я создать внешний модуль, в который оптимизатор записывает фигуру, и должен ли мой компонент считывать фигуру? Или есть намного более простой способ? Спасибо!
1 ответ
Это не может быть на самом деле неизвестно. Я обычно делаю это с аргументом __init__
метод. Когда вы настраиваете свой класс, вы передаете размер необходимых вам переменных (или некоторое число, которое позволяет вам вычислить размер класса, например, n_turbines). Я хотел бы сделать это в подклассе проблемы, которую вы определяете.
Оптимизатор не может изменять размер этого входа в реальном времени. Это должно быть исправлено. Если позднее вы захотите изменить размер проблемы, просто создайте новый экземпляр вашей Проблемы и передайте новый размер. Вам просто нужно перезапустить установку, но это не должно быть очень дорого.