Считываем из некоторого источника данных классификацию продуктов в качестве коллекции. Функция //ReadProductClassifiers — условная.
List inputProductClassifersList = ReadProductClassifiers(connectionString);
Количество уровней в классификации.
int productClassificationLevelsQuantity = 5;
Создаем пул классификации.
CUniLogicInputClassifiersPool productClassifiersPool =
new CUniLogicInputClassifiersPool(inputProductClassifersList, productClassificationLevelsQuantity);
Классификация-коллекция больше не нужна.
inputProductClassifersList = null;
Считываем из некоторого источника данных статистику (исходные статистические данные). Функция //ReadStatistics — условная.
List currentRawInputStatisticsList = ReadStatistics(connectionString);
Создаем объект входящих данных.
CUniLogicInputData inputData = new CUniLogicInputData();
Добавляем пул классификации в объект входящих данных.
inputData.ClassPools.Add(productClassifiersPool);
Добавляем статистику в объект входящих данных.
inputData.Statistics.AddRange(currentRawInputStatisticsList);
CEngineFactory engineFactory = new CEngineFactory();
Задаем границы интервала исходных статистических данных, размер цикла прогнозирования и создаем //настройки процессора.
DateTime firstDate = new DateTime(2014, 1, 3);
DateTime lastDate = new DateTime(2016, 11, 30);
int cycleSize = 12;
CUniLogicProcessorSettings procSettings = new CUniLogicProcessorSettings(ETimeSeed.Month, firstDate, lastDate, cycleSize);
Создаем процессор, передавая ему входящие данные и настройки самого процессора.
UniLogicProcessor processor = engineFactory.CreateUniLogicProcessor(inputData, procSettings);
Создаем настройки процесса прогнозирования. Прогноз на 15 месяцев, распределение пропорционального типа.
CUniLogicFullProcessSettings fullProcessSettings = new CUniLogicFullProcessSettings();
fullProcessSettings.GroupForecastSettings.ForecastPeriod = 15;
fullProcessSettings.DistributeSettings.ByCalender = false;
Запускаем расчет прогноза.
CUniLogicForecastResult forecastResult = processor.FullProcess(fullProcessSettings);
Для того, чтобы выполнить то же самое, но по частям (двумя методами), в приведенном выше коде необходимо вызов метода FullProcess заменить следующим:
Запускаем этап анализа.
List<dictionary<int, int="">> analyzeResults = processor.Analyze(fullProcessSettings);
Запускаем этапы Диагностики, Прогнозирования по группам, Распределения.
CUniLogicForecastResult result = processor.Forecast(analyzeResults, fullProcessSettings);
Для расчета с двумя классификациями необходимо считать ещё одну классификацию, создать для неё пул так же, как для первой и добавить ее в объект входящих данных. Также может быть полезным в таком случае установить пропорционально-календарный метод распределения.