NormalizeDailyWeights;
Метод NormalizeDailyWeights выполняет нормирование весовых коэффициентов дней недели.
Нормирование весовых коэффициентов дней недели - это изменение их таким образом, чтобы в сумме они составляли 7.
При расчёте нормирование выполняется автоматически, а вызов метода NormalizeDailyWeights позволяет выполнить нормирование и получить значения весовых коэффициентов дней недели с помощью свойства IMsCensus2Transform.DailyWeights еще до расчёта метода. Данная модель должна рассчитываться методом X11.
Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором MS, содержащего модель с идентификатором MODEL_CENSUS2.
Добавьте ссылки на системные сборки: Metabase, Ms.
Sub UserProc;
Var
MB: IMetabase;
ModelCont: IMetabaseObjectDescriptor;
Model: IMsModel;
Transform: IMsFormulaTransform;
Formula: IMsFormula;
CENS: IMsCensus2Transform;
W: Array Of Double;
i: Integer;
Begin
// Получаем текущий репозиторий
MB := MetabaseClass.Active;
// Получаем контейнер моделирования
ModelCont := MB.ItemById("MS");
// Получаем модель
Model := MB.ItemByIdNamespace("MODEL_CENSUS2", ModelCont.Key).Edit As IMsModel;
// Получаем объект для настройки параметров модели
Transform := Model.Transform;
// Получаем параметры метода расчета
Formula := Transform.FormulaItem(0);
CENS := Formula.Method As IMsCensus2Transform;
// Задаем весовые коэффициенты дней недели и выводим их в окно консоли
W := New Double[7];
W[0] := 1.17;
W[1] := 1.00;
W[2] := 1.12;
W[3] := 1.10;
W[4] := 0.95;
W[5] := 0.98;
W[6] := 1.07;
CENS.DailyWeights := W;
Debug.WriteLine("Весовые коэффициенты дней недели до нормирования:");
Debug.Indent;
For i := 0 To W.Length - 1 Do
Debug.WriteLine(W[i]);
End For;
Debug.Unindent;
// Выполняем нормирование
весовых коэффициентов дней недели
CENS.NormalizeDailyWeights;
// Выводим значения весовых коэффициентов дней недели после нормирования
Debug.WriteLine("Весовые коэффициенты дней недели после нормирования:");
Debug.Indent;
W := CENS.DailyWeights;
For i := 0 To W.Length - 1 Do
Debug.WriteLine(W[i]);
End For;
Debug.Unindent;
// Сохраняем изменения
(Model As IMetabaseObject).Save;
End Sub UserProc;
В результате выполнения примера в окно консоли будут выведены значения весовых коэффициентов дней недели до и после нормализации.
См. также: