FactsMatrix(Calculation: IMsMethodCalculation; Coord: IMsFormulaTransformCoord): Array;
FactsMatrix[Prognoz.Platform.Interop.Ms.IMsMethodCalculation,
Prognoz.Platform.Interop.Ms.IMsFormulaTransformCoord] : System.Array
Calculation. Параметры расчёта модели.
Coord. Разрез модели, по которому осуществляется расчёт.
Свойство доступно только для чтения.
Свойство FactsMatrix возвращает массив, содержащий значения факторов модели.
Параметры Calculation и Coord не могут принимать значение Null.
Массив, содержащий корреляцию факторов, возвращает свойство IMsDeterministicTransform.PairCorrelationMatrix.
Для выполнения примера предполагается наличие контейнера моделирования с идентификатором «MS», содержащего модель детерминированного уравнения с идентификатором «ModelDeterm». Добавьте ссылки на системные сборки «Metabase», «Ms», «Matrix».
Sub UserProc;
Var
mb: IMetabase;
MsKey: Integer;
hModel: IMetabaseObjectDescriptor;
oModel: IMsModel;
trans: IMsFormulaTransform;
selector: IMsFormulaTransformSelector;
formula: IMsFormula;
output: IMsFormulaTransformVariable;
determ: IMsDeterministicTransform;
coord: IMsFormulaTransformCoord;
calculation: IMsMethodCalculation;
calcPeriod, modPeriod: IMsModelPeriod;
matrix: Array Of Double;
i, j: Integer;
nFactors: Integer;
Begin
mb := metabaseClass.Active;
MsKey : = mb.ItemById("MS").Key;
hModel := mb.ItemByIdNamespace("MODEL_DETERM", MsKey);
oModel := hModel.Bind As IMsModel;
trans := oModel.Transform;
output := trans.Outputs.Item(0);
selector := trans.CreateSelector;
selector.Slice := output.Slices.Item(0);
formula := trans.Transform(selector);
determ := formula.Method As IMsDeterministicTransform;
coord := trans.CreateCoord(output);
calculation := trans.CreateCalculation;
calcPeriod := calculation.Period;
modPeriod := oModel.Period;
calcPeriod.ForecastEndDate := modPeriod.ForecastEndDate;
calcPeriod.ForecastStartDate := modPeriod.ForecastStartDate;
calcPeriod.IdentificationEndDate := modPeriod.IdentificationEndDate;
calcPeriod.IdentificationStartDate := modPeriod.IdentificationStartDate;
matrix := determ.FactsMatrix(calculation, coord);
nFactors := determ.Operands.Count;
For i := 0 To nFactors - 1 Do
Debug.WriteLine("Фактор: " + determ.Operands.Item(i).TermToText + ". Значения:");
For j := matrix.GetLowerBound(1) To matrix.GetUpperBound(1) Do
Debug.WriteLine(" " + matrix[j, i].ToString);
End For;
End For;
End Sub UserProc;
После выполнения примера в окно консоли будут выведены наименования факторов модели и их значения.
Для выполнения примера предполагается наличие контейнера моделирования с идентификатором «MS», содержащего модель детерминированного уравнения с идентификатором «ModelDeterm».
Imports Prognoz.Platform.Interop.Ms;
Imports Prognoz.Platform.Interop.Matrix;
…
Public Shared Sub Main(Params: StartParams);
Var
mb: IMetabase;
MsKey: uinteger;
hModel: IMetabaseObjectDescriptor;
oModel: IMsModel;
trans: IMsFormulaTransform;
selector: IMsFormulaTransformSelector;
formula: IMsFormula;
output: IMsFormulaTransformVariable;
determ: IMsDeterministicTransform;
coord: IMsFormulaTransformCoord;
calculation: IMsMethodCalculation;
calcPeriod, modPeriod: IMsModelPeriod;
matrix: System.Array;
i, j, k: Integer;
nFactors: Integer;
Begin
mb := Params.Metabase;
MsKey := mb.ItemById["MS"].Key;
hModel := mb.ItemByIdNamespace["MODEL_DETERM", MsKey];
oModel := hModel.Bind() As IMsModel;
trans := oModel.Transform;
output := trans.Outputs.Item[0];
selector := trans.CreateSelector();
selector.Slice := output.Slices.Item[0];
formula := trans.Transform[selector];
determ := formula.Method As IMsDeterministicTransform;
coord := trans.CreateCoord(output);
calculation := trans.CreateCalculation();
calcPeriod := calculation.Period;
modPeriod := oModel.Period;
calcPeriod.ForecastEndDate := modPeriod.ForecastEndDate;
calcPeriod.ForecastStartDate := modPeriod.ForecastStartDate;
calcPeriod.IdentificationEndDate := modPeriod.IdentificationEndDate;
calcPeriod.IdentificationStartDate := modPeriod.IdentificationStartDate;
matrix := determ.FactsMatrix[calculation, coord];
nFactors := determ.Operands.Count;
For i := 0 To nFactors - 1 Do
System.Diagnostics.Debug.WriteLine("Фактор: " + determ.Operands.Item[i].TermToText() + ". Значения:");
k := matrix.GetUpperBound(1);
For j := matrix.GetLowerBound(1) To k Do
System.Diagnostics.Debug.WriteLine(" " + matrix[i, j].ToString());
End For;
End For;
End Sub;
После выполнения примера в окно консоли будут выведены наименования факторов модели и их значения.
См. также: