У меня есть функция, которая возвращает два массива неравных размеров (A, B). Они предназначены для определения начальных условий модели, поэтому я хотел бы, чтобы каждое из них было определено как массив parameter
в модели. Возможно ли это, и если да, то как?
Ниже приведен псевдокод вопроса:
Функция
function myfunc
input Real[:] alpha;
input Real[:] beta;
output Real[size(alpha,1)] A;
output Real[size(beta,1)] B;
algorithm
//equations, etc.
end myfunc;
Модель
model mymodel
parameter Real[2] alpha = {1,2};
parameter Real[3] beta = {3,4,5};
parameter Real (A_start,Bstart) = myfunc(alpha,beta)
Real[size(alpha ,1)] A(start=A_start);
Real[size(beta,1)] B(start=B_start);
equation
//equations, etc.
end mymodel;
Я пробовал несколько вещей, которые потерпели неудачу. Один успешный метод использовал начальный раздел уравнения. Тем не менее, это требует от меня, например, определения A_start
в качестве переменной и добавления der(A_start) = 0
в разделе уравнения, и не позволяет мне предоставлять нефиксированное значение предположения (то есть, A(start=A_start)
) для переменных, которые могут вызвать проблемы.
Спасибо за вашу помощь, даже если это подтверждает, что мне не повезло.