Применение целых чисел для заявленных входных данных невозможно - PullRequest
0 голосов
/ 20 декабря 2018

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

Вот фрагменты кода, которые я пробовал;

Ожидаемый вывод что-то вроде: array ([1, 1, 1])

Полученный вывод: [1.1. 1.]

from openmdao.api import ExplicitComponent,  Problem, IndepVarComp
import numpy as np

class CompAddWithArrayIndices(ExplicitComponent):
    """Component for tests for declaring with array val and array indices."""
    def setup(self):
        self.add_input('x_a', val=np.ones(6,dtype=int))
        self.add_input('x_b', val=[1]*5)
        self.add_output('y')

p = Problem(model=CompAddWithArrayIndices())
p.setup()
p.run_model()

print(p['x_a'])        
print(p['x_b'])   
#%%
from openmdao.api import ExplicitComponent,  Problem, IndepVarComp
import numpy as np

class CompAddWithArrayIndices(ExplicitComponent):
    """Component for tests for declaring with array val and array indices."""
    def setup(self):
        self.add_input('x_a', val=np.zeros(3,dtype=int))
        self.add_output('y')

prob = Problem()
ivc=IndepVarComp()
prob.model.add_subsystem('ivc', ivc,promotes=['*'])
ivc.add_output('x_a', val=np.ones(3,dtype=int))

prob.model.add_subsystem('comp1', CompAddWithArrayIndices(),promotes=['*'])

prob.setup()
prob.run_model()

print(prob['x_a'])

1 Ответ

0 голосов
/ 20 декабря 2018

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

В OpenMDAO v2.5 была добавлена ​​поддержка дискретных переменных в качестве экспериментальной функции (она все еще разрабатывается).В основной ветке с кодом фиксации 709401e535cf6933215abd942d4b4d49dbf61b2b исправлена ​​проблема с продвижением. Убедитесь, что вы используете последнюю версию OpenMDAO из этого коммита или позже

...