AddComputingSerie(
Name: String;
DisplayName: String;
BaseSerieName: String;
Type: EmComputingSerieType;
Condition: Variant): IEmComputingSerie;
AddComputingSerie(
Name: string;
DisplayName: string;
BaseSerieName: string;
Type: Prognoz.Platform.Interop.Modeller.EmComputingSerieType;
Condition: object): Prognoz.Platform.Interop.Modeller.IEmComputingSerie;
Name. Идентификатор вычисляемого ряда.
DisplayName. Наименование вычисляемого ряда.
BaseSerieName. Идентификатор ряда, на основании значений которого рассчитывается вычисляемый ряд.
Type. Метод вычисления значений ряда.
Condition. Параметр вычисления значений ряда.
Метод AddComputingSerie добавляет вычисляемый ряд в исходные ряды экспресс-моделирования.
Особенности использования метода в зависимости от значения параметра Type:
EmComputingSerieType.Lag. Лаг. В параметре Condition укажите величину лага;
EmComputingSerieType.Logarithm. Логарифмирование. В параметре Condition укажите степень логарифма;
EmComputingSerieType.User. Функция пользователя. Значение параметра BaseSerieName не учитывается, в параметре Condition укажите формулу расчёта.
Для выполнения примера добавьте ссылку на системную сборку «Modeller».
Sub CompSerie;
Var
ExprMod: IExpressModeller;
Ar: Array[6] Of Double;
Series: IEmSeries;
Serie: IEmSerie;
CSerie: IEmComputingSerie;
Begin
ExprMod := New ExpressModeller.Create;
Ar[0] := 56; Ar[2] := 45; Ar[3] := 23; Ar[4] := 45;
Ar[1] := Double.Nan; Ar[5] := Double.Nan;
Series := ExprMod.Series;
// Добавляем ряд данных
Serie := Series.Add(Ar, "X1", "Базовый ряд");
// Выводим его значения
Debug.WriteLine("Базовый ряд данных:");
PrintSerie(Serie);
// Добавляем вычисляемый ряд данных
CSerie := Series.AddComputingSerie("F1", "Базовый ряд (с учётом лага)", "X1", EmComputingSerieType.Lag, 1);
// Выводим его значения
Debug.WriteLine("Базовый ряд данных (с учётом лага):");
PrintSerie(CSerie As IEmSerie);
// Изменяем формулу вычисляемого ряда
CSerie.BaseName := "";
CSerie.Name := "F2";
CSerie.DisplayName := "Увеличенный ряд данных";
CSerie.Type := EmComputingSerieType.User;
CSerie.Condition := "X1+6";
// Выводим его измененные значения
Debug.WriteLine("Увеличенный базовый ряд данных:");
PrintSerie(CSerie As IEmSerie);
End Sub CompSerie;
// Процедура вывода значений ряда
Sub PrintSerie(Serie: IEmSerie);
Var
i: Integer;
Begin
Debug.Indent;
If Serie.Count > 0 Then
For i := 0 To Serie.Count - 1 Do
Debug.WriteLine(Serie.Item(i));
End For;
Else
Debug.WriteLine("Ряд данных пуст");
End If;
Debug.Unindent;
End Sub PrintSerie;
Результат выполнения примера: в исходные данные будет добавлен простой ряд данных, его значения выведены в окно консоли. На основе данного ряда будет создан вычисляемый ряд и его значения будут выведены в окно консоли. Затем формула расчёта вычисляемого ряда будет изменена и его новые значения будут выведены в окно консоли.
Imports Prognoz.Platform.Interop.Modeller;
…
Public Shared Sub CompSerie();
Var
ExprMod: IExpressModeller;
Ar: Array[6] Of Double;
Series: IEmSeries;
Serie: IEmSerie;
CSerie: IEmComputingSerie;
Begin
ExprMod := New ExpressModeller.Create();
Ar[0] := 56; Ar[2] := 45; Ar[3] := 23; Ar[4] := 45;
Ar[1] := Double.Nan; Ar[5] := Double.Nan;
Series := ExprMod.Series;
// Добавляем ряд данных
Serie := Series.Add(Ar, "X1", "Базовый ряд");
// Выводим его значения
System.Diagnostics.Debug.WriteLine("Базовый ряд данных:");
PrintSerie(Serie);
// Добавляем вычисляемый ряд данных
CSerie := Series.AddComputingSerie("F1", "Базовый ряд (с учётом лага)", "X1", EmComputingSerieType.cstLag, 1);
// Выводим его значения
System.Diagnostics.Debug.WriteLine("Базовый ряд данных (с учётом лага):");
PrintSerie(CSerie As IEmSerie);
// Изменяем формулу вычисляемого ряда
CSerie.BaseName := "";
CSerie.Name_2 := "F2";
CSerie.DisplayName_2 := "Увеличенный ряд данных";
CSerie.Type := EmComputingSerieType.cstUser;
CSerie.Condition := "X1+6";
// Выводим его измененные значения
System.Diagnostics.Debug.WriteLine("Увеличенный базовый ряд данных:");
PrintSerie(CSerie As IEmSerie);
End Sub CompSerie;
// Процедура вывода значений ряда
Public Shared Sub PrintSerie(Serie: IEmSerie);
Var
i: Integer;
Begin
System.Diagnostics.Debug.Indent();
If Serie.Count > 0 Then
For i := 0 To Serie.Count - 1 Do
System.Diagnostics.Debug.WriteLine(Serie.Item[i]);
End For;
Else
System.Diagnostics.Debug.WriteLine("Ряд данных пуст");
End If;
System.Diagnostics.Debug.Unindent();
End Sub PrintSerie;
Результат выполнения примера: в исходные данные будет добавлен простой ряд данных, его значения выведены в окно консоли. На основе данного ряда будет создан вычисляемый ряд и его значения будут выведены в окно консоли. Затем формула расчёта вычисляемого ряда будет изменена и его новые значения будут выведены в окно консоли.
См. также: