Ниже приведен пример использования операции SetMs для изменения параметров уравнения. В запросе передаются: экземпляр открытого контейнера моделирования, параметры выполнения операции, настройки уравнения для метода «Подбор вида зависимости» и шаблон получения измененных данных. В результате выполнения операция возвращает модель, содержащую измененное уравнение.
{
"Envelope" :
{
"Body" :
{
"SetMs" :
{
"tMs" :
{
"id" : "S38!M!S!C1"
},
"tArg" :
{
"pattern" :
{
"obInst" : "true",
"item" :
{
"key" : "3317",
"model" :
{
"transform" :
{
"formulas" : ""
}
}
}
},
"meta" :
{
"item" :
{
"k" : "3317",
"type" : "Model",
"modelMd" :
{
"transform" :
{
"formulas" :
{
"its" :
{
"it" :
[
{
"k" : "0",
"kind" : "CurveEstimation",
"method" :
{
"curveEstimation" :
{
"criterion" : "R2",
"dependenceFormIncluded" :
{
"it" :
[
"Linear",
"Polynomial",
"Logarithmic"
]
},
"polynomOrder" : "4",
"seasonalComponent" :
{
"mode" : "Additive",
"cycle" : "4"
},
"missingData" : "",
"confidenceLevel" : "0.96",
"value" : "0" } } } ] } } } } }
},
"metaGet" :
{
"obInst" : "true",
"scenarios" : "Get",
"item" :
{
"key" : "2803",
"problem" :
{
"metamodel" :
{
"calculationChain" : "Get",
"calcChainPattern" :
{
"modelPattern" :
{
"transform" :
{
"formulaCount" : "true",
"formulas" :
{
"method" : ""
},
"equationsFormula" :
{
"method" : ""
},
"kind" : "true"
}
}
},
"visualControllerPattern" :
{
"variableRubricatorKey" : "true",
"chainWorkbookKey" : "true",
"freeVariables" : "true"
}
}
}
}
},
"execParams" :
{
"execSaveModel" : "true"
}
}
}
}
}
}
{
"Envelope" :
{
"Body" :
{
"SetMsResult" :
{
"id" :
{
"id" : "S38!M!S!C1"
},
"meta" :
{
"obInst" :
{
"obDesc" :
{
"@isShortcut" : "0",
"i" : "MODELSPACE",
"n" : "Контейнер моделирования",
"k" : "1581",
"c" : "5121",
"p" : "1580",
"h" : "0"
}
},
"dirty" : "0",
"scenarios" :
{
"nodes" :
{
"it" :
{
"@isFolder" : "0",
"k" : "1628",
"id" : "OBJ1628",
"n" : "Базовый",
"vis" : "1",
"scenDesc" :
{
"@isShortcut" : "0",
"i" : "OBJ1628",
"n" : "Базовый",
"k" : "1628",
"c" : "5124",
"p" : "1627",
"h" : "0"
}
}
}
},
"item" :
{
"k" : "2803",
"id" : "TEMP_MODEL",
"n" : "TEMP_MODEL",
"vis" : "1",
"type" : "Problem",
"problemMd" :
{
"metamodel" :
{
"k" : "2804",
"calculationChain" :
{
"its" :
{
"Item" :
{
"k" : "3317",
"id" : "OBJ3317",
"n" : "MyInputVavable[t] = ExpSmooth(0.12, -, Авто, -)",
"vis" : "1",
"type" : "Model",
"excluded" : "0",
"model" :
{
"transform" :
{
"formulaCount" : "1",
"formulas" :
{
"its" :
{
"it" :
[
{
"k" : "0",
"kind" : "CurveEstimation",
"method" :
{
"curveEstimation" :
{
"criterion" : "R2",
"dependenceForm" : "Linear",
"dependenceFormIncluded" :
{
"it" :
[
"Linear",
"Polynomial",
"Logarithmic"
]
},
"polynomOrder" : "4",
"seasonalComponent" :
{
"mode" : "Additive",
"cycle" : "4"
},
"missingData" :
{
"specifiedVector" : "",
"method" : "Casewise",
"methodParameter" : "5",
"specifiedValue" : "0"
},
"confidenceLevel" : "0.960000",
"value" : "0",
"explained" :
{
"slice" :
{
"k" : "0",
"id" : "261",
"n" : "MyInputVavable",
"vis" : "1",
"variableKey" : "3319",
"stubKey" : "2805",
"selections" :
{
"its" :
{
"Item" :
{
"id" :
{
"id" : "2818"
},
"variant" : "261"
}
}
},
"aggregator" : "None",
"parametrizedDimensions" :
{
"its" :
{
"Item" :
{
"dimension" : "0",
"parameter" : "0"
}
}
},
"unitInfo" :
{
"unit" : "4294967295",
"measure" : "4294967295",
"baseUnit" : "4294967295",
"unitsDimensionKey" : "0"
},
"level" : "None"
},
"lag" : "",
"key" : "0",
"termToText" : "{MyInputVavable[t]}",
"termToInnerText" : "@_3319:0[]",
"termInfo" :
{
"k" : "4294967295",
"lag" : "0",
"inversion" :
{
"type" : "None",
"lag" : "PrecidingValue",
"previousLag" : "-1",
"seasonality" : "None",
"dependence" : "Linear",
"K" : "3"
}
},
"unitInfo" :
{
"unit" : "4294967295",
"measure" : "4294967295",
"baseUnit" : "4294967295",
"unitsDimensionKey" : "0"
}
}
},
"inversionInfo" :
{
"type" : "None",
"lag" : "PrecidingValue", "previousLag" : "-1", "seasonality" : "None", "dependence" : "Linear", "K" : "3" } }, "calendarLevel" : "Year", "outputSliceKey" : "0" }
] } }, "kind" : "Simple" } } } } }, "visualController" :
{
"variableRubricatorKey" : "2805",
"chainWorkbookKey" : "2837",
"freeVariables" :
{
"its" :
{
"Item" :
{
"k" : "0",
"id" : "262",
"n" : "MyOutputVavable",
"vis" : "1",
"variableKey" : "2840",
"stubKey" : "2805",
"selections" :
{
"its" :
{
"Item" :
{
"id" :
{
"id" : "2818"
},
"variant" : "262"
}
}
},
"aggregator" : "None",
"parametrizedDimensions" :
{
"its" :
{
"Item" :
{
"dimension" : "0",
"parameter" : "0"
}
}
},
"unitInfo" :
{
"unit" : "4294967295",
"measure" : "4294967295",
"baseUnit" : "4294967295",
"unitsDimensionKey" : "0"
},
"level" : "None"
}
} } } } } } } } } } }
Функция SetMsCurveEstimation изменяет метод расчёта уравнения. Входные параметры:
ms. Экземпляр открытого контейнера моделирования;
modelKey. Ключ модели, содержащей уравнение;
eq. Экземпляр открытого уравнения;
eqKey. Ключ уравнения.
В результате выполнения функция возвращает модель, содержащую уравнение.
Для создания шаблона извлечения изменённых данных используется функция createMetaGetPattern, на вход которой передаётся ключ модели, содержащей уравнение.
public static MsItem SetMsCurveEstimation(MsId ms, ulong modelKey, MsModel eq, ulong eqKey)
{
var setMsOp = new SetMs();
// Задаем параметры выполнения операции
setMsOp.tMs = ms;
setMsOp.tArg = new SetMsArg()
{ // Задаем шаблон изменения данных
pattern = new MsMdPattern()
{
item = new MsItemPattern()
{ // Указываем ключ уравнения
key = eqKey,
model = new MsModelPattern()
{
transform = new MsFormulaTransformPattern()
{
formulas = new TsFormulaPattern() { }
}
}
}
},
// Задаем данные, которые необходимо изменить
meta = new MsMd()
{
item = new MsItem()
{ // Указываем ключ уравнения
k = eqKey,
type = MsItemType.Model,
modelMd = new MsModel()
{
transform = new MsFormulaTransform()
{
formulas = new TsFormulas()
{
its = new TsFormula[]
{
new TsFormula()
{
kind = TsFormulaKind.CurveEstimation,
method = new TsMethod()
{ // Задаем параметры метода «Подбор вида зависимости»
curveEstimation = new TsCurveEstimationMethod()
{ // Задаем значимость доверительных границ
confidenceLevel = 0.96,
// Задаем моделируемую переменную explained =eq.transform.outputs.its.GetValue(0) as MsFormulaTerm, // Задаем критерий оценки criterion = StatDependenceCriterionType.R2, // Задаем исследуемые формы зависимостей dependenceForm = null,
dependenceFormIncluded = new StatDependenceType[]
{
StatDependenceType.Linear,
StatDependenceType.Polynomial,
StatDependenceType.Logarithmic }, // Задаём степень полинома polynomOrder = 4, // Задаём сезонный эффект seasonalComponent = new StatSeasonal()
{
mode = StatSeasonalityType.Additive,
cycle = 4
},
missingData = new StatMissingData(){},
// Не используем экстраполяцию
extrapolateType = null,
value = 0
}
}
} } } }
}
}
}, // Задаем шаблон извлечения измененных данных
metaGet = createMetaGetPattern(modelKey),
execParams = new MsMdExecParams(){execSaveModel = true}
};
// Создаем прокси-объект для выполнения операции var somClient = new SomPortTypeClient(); // Задаем параметры выполнения операции var result = somClient.SetMs(setMsOp);
return result.meta.item;
}
// Создание шаблона извлечения данных после расчёта метода
public static MsMdPattern createMetaGetPattern(ulong modelKey)
{
MsMdPattern metaGet = new MsMdPattern()
{
scenarios = ListOperation.Get,
item = new MsItemPattern()
{
key = modelKey,
problem = new MsProblemPattern()
{
metamodel = new MsMetaModelPattern()
{
calculationChain = ListOperation.Get,
calcChainPattern = new MsCalculationChainPattern()
{
modelPattern = new MsModelPattern()
{
transform = new MsFormulaTransformPattern()
{
kind = true,
formulaCount = true,
formulas = new TsFormulaPattern()
{
method = new TsMethodPattern() { }
},
equationsFormula = new TsFormulaPattern()
{
method = new TsMethodPattern() { }
}
}
}
},
visualControllerPattern = new MsMetaModelVisualControllerPattern()
{
variableRubricatorKey = true,
chainWorkbookKey = true,
freeVariables = true
} } } } }; return metaGet; }
См. также:
SetMs: Операция | Расчёт метода «Подбор вида зависимости»
SOAP