Реализует вычислительный эксперимент пользовательской системы, заданной в виде xcos-диаграммы, на основе идентификации параметров этой системы из экспериментальных данных
[SystemOutputChatacteristics,.. SystemIdentificationParametersValues.. ]=ModelingSystemIdentificationDynamic(SystemIdentificateShema,.. SystemIdentificateOutputCharacteristicsNames,.. SystemIdentificateOutputCharacteristicsIndexes,.. SystemIdentificateOutputCharacteristicsCompressionFunctions,.. SystemIdentificateModesParametersNames,.. SystemIdentificateModesParametersValues,.. SystemIdentificationParametersNames,.. SystemIdentificationParametersMinValues,.. SystemIdentificationParametersMaxValues,.. IdentificationFunction,SystemShema,.. SystemOutputCharacteristicsNames,.. SystemOutputCharacteristicsIndexes,.. "Evidence",SystemOutputCharacteristicsCompressionFunctions,.. SystemModesParametersNames,SystemModesParametersValues,.. [SystemHyperParametrsNames,SystemHyperParametrsValues,.. [identificationAbsolutTolErr,[absolutTolErr,.. [identificationRelativeTolErr,[relativeTolErr,.. [identificationSimulationTime,[simulationTime,.. [identificationTimeStepMax,[timeStepMax,.. [identificationSolver,[Solver,.. [identificationToleranceTime,[toleranceTime]]]]]]]]]]]]]) [SystemOutputChatacteristics,.. SystemIdentificationParametersValues.. ]=ModelingSystemIdentificationDynamic(SystemIdentificateShema,.. SystemIdentificateOutputCharacteristicsNames,.. SystemIdentificateOutputCharacteristicsIndexes,.. SystemIdentificateOutputCharacteristicsCompressionFunctions,.. SystemIdentificateModesParametersNames,.. SystemIdentificateModesParametersValues,.. SystemIdentificationParametersNames,.. SystemIdentificationParametersMinValues,.. SystemIdentificationParametersMaxValues,.. IdentificationFunction,SystemShema,.. SystemOutputCharacteristicsNames,.. SystemOutputCharacteristicsIndexes,.. "Evidence",SystemOutputCharacteristicsCompressionFunctions,.. SystemModesParametersNames,SystemModesParametersValues,.. [identificationAbsolutTolErr,[absolutTolErr,.. [identificationRelativeTolErr,[relativeTolErr,.. [identificationSimulationTime,[simulationTime,.. [identificationTimeStepMax,[timeStepMax,.. [identificationSolver,[Solver,.. [identificationToleranceTime,[toleranceTime]]]]]]]]]]]])
[SystemOutputChatacteristics,.. SystemIdentificationParametersValues,.. SystemModesParametersIndexes,.. SystemModesParametersValues,.. TimesMomemts.. ]=ModelingSystemIdentificationDynamic(SystemIdentificateShema,.. SystemIdentificateOutputCharacteristicsNames,.. SystemIdentificateOutputCharacteristicsIndexes,.. SystemIdentificateOutputCharacteristicsCompressionFunctions,.. SystemIdentificateModesParametersNames,.. SystemIdentificateModesParametersValues,.. SystemIdentificationParametersNames,.. SystemIdentificationParametersMinValues,.. SystemIdentificationParametersMaxValues,.. IdentificationFunction,SystemShema,.. SystemOutputCharacteristicsNames,.. SystemOutputCharacteristicsIndexes,.. "TimeGrid",TimeMoments,.. SystemModesParametersNames,SystemModesParametersValues,.. [SystemHyperParametrsNames,SystemHyperParametrsValues,.. [identificationAbsolutTolErr,[absolutTolErr,.. [identificationRelativeTolErr,[relativeTolErr,.. [identificationSimulationTime,[simulationTime,.. [identificationTimeStepMax,[timeStepMax,.. [identificationSolver,[Solver,.. [identificationToleranceTime,[toleranceTime]]]]]]]]]]]]]) [SystemOutputChatacteristics,.. SystemIdentificationParametersValues,.. SystemModesParametersIndexes,.. SystemModesParametersValues.. ]=ModelingSystemIdentificationDynamic(SystemIdentificateShema,.. SystemIdentificateOutputCharacteristicsNames,.. SystemIdentificateOutputCharacteristicsIndexes,.. SystemIdentificateOutputCharacteristicsCompressionFunctions,.. SystemIdentificateModesParametersNames,.. SystemIdentificateModesParametersValues,.. SystemIdentificationParametersNames,.. SystemIdentificationParametersMinValues,.. SystemIdentificationParametersMaxValues,.. IdentificationFunction,SystemShema,.. SystemOutputCharacteristicsNames,.. SystemOutputCharacteristicsIndexes,.. "TimeGrid",TimeMoments,.. SystemModesParametersNames,SystemModesParametersValues,.. [SystemHyperParametrsNames,SystemHyperParametrsValues,.. [identificationAbsolutTolErr,[absolutTolErr,.. [identificationRelativeTolErr,[relativeTolErr,.. [identificationSimulationTime,[simulationTime,.. [identificationTimeStepMax,[timeStepMax,.. [identificationSolver,[Solver,.. [identificationToleranceTime,[toleranceTime]]]]]]]]]]]]]) [SystemOutputChatacteristics,.. SystemIdentificationParametersValues,.. SystemModesParametersIndexes.. ]=ModelingSystemIdentificationDynamic(SystemIdentificateShema,.. SystemIdentificateOutputCharacteristicsNames,.. SystemIdentificateOutputCharacteristicsIndexes,.. SystemIdentificateOutputCharacteristicsCompressionFunctions,.. SystemIdentificateModesParametersNames,.. SystemIdentificateModesParametersValues,.. SystemIdentificationParametersNames,.. SystemIdentificationParametersMinValues,.. SystemIdentificationParametersMaxValues,.. IdentificationFunction,SystemShema,.. SystemOutputCharacteristicsNames,.. SystemOutputCharacteristicsIndexes,.. "TimeGrid",TimeMoments,.. SystemModesParametersNames,SystemModesParametersValues,.. [SystemHyperParametrsNames,SystemHyperParametrsValues,.. [identificationAbsolutTolErr,[absolutTolErr,.. [identificationRelativeTolErr,[relativeTolErr,.. [identificationSimulationTime,[simulationTime,.. [identificationTimeStepMax,[timeStepMax,.. [identificationSolver,[Solver,.. [identificationToleranceTime,[toleranceTime]]]]]]]]]]]]]) [SystemOutputChatacteristics,.. SystemIdentificationParametersValues.. ]=ModelingSystemIdentificationDynamic(SystemIdentificateShema,.. SystemIdentificateOutputCharacteristicsNames,.. SystemIdentificateOutputCharacteristicsIndexes,.. SystemIdentificateOutputCharacteristicsCompressionFunctions,.. SystemIdentificateModesParametersNames,.. SystemIdentificateModesParametersValues,.. SystemIdentificationParametersNames,.. SystemIdentificationParametersMinValues,.. SystemIdentificationParametersMaxValues,.. IdentificationFunction,SystemShema,.. SystemOutputCharacteristicsNames,.. SystemOutputCharacteristicsIndexes,.. "TimeGrid",TimeMoments,.. SystemModesParametersNames,SystemModesParametersValues,.. [SystemHyperParametrsNames,SystemHyperParametrsValues,.. [identificationAbsolutTolErr,[absolutTolErr,.. [identificationRelativeTolErr,[relativeTolErr,.. [identificationSimulationTime,[simulationTime,.. [identificationTimeStepMax,[timeStepMax,.. [identificationSolver,[Solver,.. [identificationToleranceTime,[toleranceTime]]]]]]]]]]]]]) [SystemOutputChatacteristics,.. SystemIdentificationParametersValues,.. SystemModesParametersIndexes,.. SystemModesParametersValues,.. TimesMomemts.. ]=ModelingSystemIdentificationDynamic(SystemIdentificateShema,.. SystemIdentificateOutputCharacteristicsNames,.. SystemIdentificateOutputCharacteristicsIndexes,.. SystemIdentificateOutputCharacteristicsCompressionFunctions,.. SystemIdentificateModesParametersNames,.. SystemIdentificateModesParametersValues,.. SystemIdentificationParametersNames,.. SystemIdentificationParametersMinValues,.. SystemIdentificationParametersMaxValues,.. IdentificationFunction,SystemShema,.. SystemOutputCharacteristicsNames,.. SystemOutputCharacteristicsIndexes,.. "TimeGrid",TimeMoments,.. SystemModesParametersNames,SystemModesParametersValues,.. [identificationAbsolutTolErr,[absolutTolErr,.. [identificationRelativeTolErr,[relativeTolErr,.. [identificationSimulationTime,[simulationTime,.. [identificationTimeStepMax,[timeStepMax,.. [identificationSolver,[Solver,.. [identificationToleranceTime,[toleranceTime]]]]]]]]]]]]) [SystemOutputChatacteristics,.. SystemIdentificationParametersValues,.. SystemModesParametersIndexes,.. SystemModesParametersValues.. ]=ModelingSystemIdentificationDynamic(SystemIdentificateShema,.. SystemIdentificateOutputCharacteristicsNames,.. SystemIdentificateOutputCharacteristicsIndexes,.. SystemIdentificateOutputCharacteristicsCompressionFunctions,.. SystemIdentificateModesParametersNames,.. SystemIdentificateModesParametersValues,.. SystemIdentificationParametersNames,.. SystemIdentificationParametersMinValues,.. SystemIdentificationParametersMaxValues,.. IdentificationFunction,SystemShema,.. SystemOutputCharacteristicsNames,.. SystemOutputCharacteristicsIndexes,.. "TimeGrid",TimeMoments,.. SystemModesParametersNames,SystemModesParametersValues,.. [identificationAbsolutTolErr,[absolutTolErr,.. [identificationRelativeTolErr,[relativeTolErr,.. [identificationSimulationTime,[simulationTime,.. [identificationTimeStepMax,[timeStepMax,.. [identificationSolver,[Solver,.. [identificationToleranceTime,[toleranceTime]]]]]]]]]]]]) [SystemOutputChatacteristics,.. SystemIdentificationParametersValues,.. SystemModesParametersIndexes.. ]=ModelingSystemIdentificationDynamic(SystemIdentificateShema,.. SystemIdentificateOutputCharacteristicsNames,.. SystemIdentificateOutputCharacteristicsIndexes,.. SystemIdentificateOutputCharacteristicsCompressionFunctions,.. SystemIdentificateModesParametersNames,.. SystemIdentificateModesParametersValues,.. SystemIdentificationParametersNames,.. SystemIdentificationParametersMinValues,.. SystemIdentificationParametersMaxValues,.. IdentificationFunction,SystemShema,.. SystemOutputCharacteristicsNames,.. SystemOutputCharacteristicsIndexes,.. "TimeGrid",TimeMoments,.. SystemModesParametersNames,SystemModesParametersValues,.. [identificationAbsolutTolErr,[absolutTolErr,.. [identificationRelativeTolErr,[relativeTolErr,.. [identificationSimulationTime,[simulationTime,.. [identificationTimeStepMax,[timeStepMax,.. [identificationSolver,[Solver,.. [identificationToleranceTime,[toleranceTime]]]]]]]]]]]]) [SystemOutputChatacteristics,.. SystemIdentificationParametersValues.. ]=ModelingSystemIdentificationDynamic(SystemIdentificateShema,.. SystemIdentificateOutputCharacteristicsNames,.. SystemIdentificateOutputCharacteristicsIndexes,.. SystemIdentificateOutputCharacteristicsCompressionFunctions,.. SystemIdentificateModesParametersNames,.. SystemIdentificateModesParametersValues,.. SystemIdentificationParametersNames,.. SystemIdentificationParametersMinValues,.. SystemIdentificationParametersMaxValues,.. IdentificationFunction,SystemShema,.. SystemOutputCharacteristicsNames,.. SystemOutputCharacteristicsIndexes,.. "TimeGrid",TimeMoments,.. SystemModesParametersNames,SystemModesParametersValues,.. [identificationAbsolutTolErr,[absolutTolErr,.. [identificationRelativeTolErr,[relativeTolErr,.. [identificationSimulationTime,[simulationTime,.. [identificationTimeStepMax,[timeStepMax,.. [identificationSolver,[Solver,.. [identificationToleranceTime,[toleranceTime]]]]]]]]]]]])
Xcos-диаграмма пользовательской системы (тип Xcos diagram structure) или имя файла Xcos-диаграммы пользовательской системы (расширение .zcos, .xcos) для идентификации параметров
Массив имен выходных характеристик системы, по которым осуществляется идентификация системы, в xcos-диаграмме (блок TOWS_c). Размерность массива 1xM
Массив индексов динамик выходных характеристик в именах выходных характеристик системы, по которым осуществляется идентификация системы, в xcos-диаграмме (блок TOWS_c). Размерность массива 1xM
Cell-массив (см. cell-массивы) функций или массив строк имен функций получения параметров вычисленных динамик, задаваемых индексами SystemOutputCharacteristicsIndexes, по которым осуществляется идентификация системы
Имена параметров системы в xcos-диаграмме (см. свойство context в Xcos diagram structure), которые определяют контрольные режимы работы системы, в которых осуществляется идентификация ее характеристик. Массив строк размерности 1xM
Значения параметров системы в xcos-диаграмме (см. свойство context в Xcos diagram structure), заданных соответсвующими именами SystemIdentificateModesParametrsNames, которые определяют контрольные режимы работы системы, в которых осуществляется идентификация ее характеристик. Массив вещественных чисел, строк, логических значений размерности NxM (каждая n-я строка из N строк в матрице - соответсвующая n-я динамика).
Имена идентифицируемых параметров системы в xcos-диаграмме (см. свойство context в Xcos diagram structure). Массив строк размерности 1xM
Минимальные значения идентифицируемых параметров системы в xcos-диаграмме (см. свойство context в Xcos diagram structure), заданных соответсвующими именами SystemIdentificationParametersNames. Массив вещественных чисел, строк, логических значений размерности NxM (каждая n-я строка из N строк в матрице - соответсвующая n-я динамика).
Максимальные значения идентифицируемых параметров системы в xcos-диаграмме (см. свойство context в Xcos diagram structure), заданных соответсвующими именами SystemIdentificationParametersNames. Массив вещественных чисел, строк, логических значений размерности NxM (каждая n-я строка из N строк в матрице - соответсвующая n-я динамика).
Функция для идентификации параметров пользовательской системы, задаваемой идентификационной Xcos-диаграммой пользовательской системы (тип Xcos diagram structure) или именем файла Xcos-диаграммы пользовательской системы (расширение .zcos, .xcos)
Xcos-диаграмма пользовательской системы (тип Xcos diagram structure) или имя файла Xcos-диаграммы пользовательской системы (расширение .zcos, .xcos)
Массив имен выходных характеристик системы в xcos-диаграмме (блок TOWS_c). Размерность массива 1xM
Массив индексов динамик выходных характеристик в именах выходных характеристик системы в xcos-диаграмме (блок TOWS_c). Размерность массива 1xM
Cell-массив (см. cell-массивы) функций или массив строк имен функций получения параметров вычисленных динамик, задаваемых индексами SystemOutputCharacteristicsIndexes
Cell-массив (см. cell-массивы) массивов (размерность каждого массива 1xN, N - разная для каждой динамики) дискретных моментов времени по каждой динамике выходных характеристик, задаваемых индексами SystemOutputCharacteristicsIndexes
Имена параметров режима работы системы системы в xcos-диаграмме (см. свойство context в Xcos diagram structure). Массив строк размерности 1xM
Значения параметров режима работы системы в xcos-диаграмме (см. свойство context в Xcos diagram structure), заданных соответсвующими именами SystemParametrsNames. Массив вещественных чисел, строк, логических значений размерности NxM (каждая n-я строка из N строк в матрице - соответсвующая n-я динамика).
Имена гиперпараметров системы в xcos-диаграмме (основной и идентификационной) (см. свойство context в Xcos diagram structure). Массив строк размерности 1xM
Значения гиперпараметров системы в xcos-диаграмме (основной и идентификационной) (см. свойство context в Xcos diagram structure), заданных соответсвующими именами SystemParametrsNames. Массив вещественных чисел, строк, логических значений размерности 1xM.
Абсолютные погрешности интегрирования в xcos (в идентификационной диаграмме) (см. свойство tol(1) atol в Xcos diagram structure) каждой динамики. Массив положительных вещественных чисел размерности 1xN
Абсолютные погрешности интегрирования в xcos (см. свойство tol(1) atol в Xcos diagram structure) каждой динамики. Массив положительных вещественных чисел размерности 1xN
Относительные погрешности интегрирования в xcos (в идентификационной диаграмме) (см. свойство tol(2) rtol в Xcos diagram structure) каждой динамики. Массив положительных вещественных чисел размерности 1xN
Относительные погрешности интегрирования в xcos (см. свойство tol(2) rtol в Xcos diagram structure) каждой динамики. Массив положительных вещественных чисел размерности 1xN
Времена симуляции в xcos (в идентификационной диаграмме) (см. свойство tf в Xcos diagram structure) каждой динамики. Массив положительных вещественных чисел размерности 1xN
Времена симуляции в xcos (см. свойство tf в Xcos diagram structure) каждой динамики. Массив положительных вещественных чисел размерности 1xN
Максимальные шаги интегрирования по времени в xcos (в идентификационной диаграмме) (см. свойство tol(7) hmax в Xcos diagram structure) каждой динамики. Массив положительных вещественных чисел размерности 1xN
Максимальные шаги интегрирования по времени в xcos (см. свойство tol(7) hmax в Xcos diagram structure) каждой динамики. Массив положительных вещественных чисел размерности 1xN
Виды решателей в xcos (в идентификационной диаграмме) (см. свойство tol(6) solver в Xcos diagram structure) каждой динамики. Массив целых чисел в диапазоне от 0 до 100 - кодов решателя. Размерность кодов решателя - 1xN
Виды решателей в xcos (см. свойство tol(6) solver в Xcos diagram structure) каждой динамики. Массив целых чисел в диапазоне от 0 до 100 - кодов решателя. Размерность кодов решателя - 1xN
Погрешности величин времени в xcos (в идентификационной диаграмме) - соответствующие минимальные шаги интегрирования по времени (см. свойство tol(3) ttol в Xcos diagram structure) по каждой динамике. Массив положительных вещественных чисел размерности 1xN
Погрешности величин времени в xcos - соответствующие минимальные шаги интегрирования по времени (см. свойство tol(3) ttol в Xcos diagram structure) по каждой динамике. Массив положительных вещественных чисел размерности 1xN
Матрица параметров выходных характеристик системы. Размерность матрицы PxN
Идентифицированные параметры системы системы
Вектор-столбец индексов значений задаваемых параметров системы, определяющих режим ее работы, имена которых заданных в массиве SystemModesParametrsNames
Матрица задаваемых параметров системы, имена которых заданных в массиве SystemModesParametrsNames и для которой рассчитаны дискретные значения выходных характеристик системы в дискретные моменты времени. Размерность матрицы MxQ
Вектор-столбец моментов времени, соотвествующих параметрам выходных характеристик системы SystemOutputChatacteristics
Выполняет на основе идентификации параметров по результатам наблюдений симуляцию (вычислительный эксперимент) пользовательской системы, заданной в виде xcos-диаграммы, для различных ее параметров (заданных в контексте).
Возвращает матрицу параметров динамик заданных пользователем выходных характеристик системы (в диаграмме заданны в виде блоков TOWS_c)
Все открытые в ходе симуляции графические окна автоматически удаляются.
//Формируем путь к xcos-диаграмме Proba10.zcos [a, pathlib] = libraryinfo("computing_experimentlib"); clear a; pathlib = strncpy(pathlib, length(pathlib) - length('macros')) + 'xcos'; //Идентификационные функции фильтра function [parametrs]=IdentificationDynamicFilterFunction1(time, value) parametrs=3.3*max(abs(value)); endfunction function [parametrs]=IdentificationDynamicFilterFunction2(time, value) parametrs=9.63*max(abs(value)); endfunction //Массив идентификационных функций фильтров IdentificationDynamicFiltersFunctions = cell(1, 2); IdentificationDynamicFiltersFunctions{1} = IdentificationDynamicFilterFunction1; IdentificationDynamicFiltersFunctions{2} = IdentificationDynamicFilterFunction2; //Функция фильтра function [parametrs]=DynamicFilterFunction1(time, value) parametrs=[sum(time.*value) / length(time), sum((time.^2).*value) / (3*length(time))]; endfunction function [parametr]=DynamicFilterFunction2(time, value) parametr=sum(time.*value) / (2*length(time)); endfunction //Массив функций фильтров DynamicFiltersFunctions = cell(1, 3); DynamicFiltersFunctions{1} = DynamicFilterFunction1; DynamicFiltersFunctions{2} = DynamicFilterFunction2; DynamicFiltersFunctions{3} = DynamicFilterFunction1; //Путь к файлу диаграммы SystemShemaPath = fullfile(pathlib, 'Proba10.zcos'); SystemIdentificationShemaPath = fullfile(pathlib, 'Proba10iden.zcos'); //Гиперпараметры диаграммы Alpha1 = 1.05; SystemHyperParametrsNames = ['Alpha1'];//Имена гиперпараметров, определяющих динамику SystemHyperParametrsValues = [Alpha1];//Значения гиперпараметров, определяющих динамику //Выходные характеристики системы, по которым идентифицируем диаграмму SystemIdentificateOutputCharacteristicsNames = ['DY2','DY3']; SystemIdentificateOutputCharacteristicsIndexes = [1,1]; //Выходные характеристики системы SystemOutputCharacteristicsNames = ['Y1','Y2','Y3']; SystemOutputCharacteristicsIndexes = [1,1,1]; //Функции для расчета контрольных динамик function [sCurYs]=CurYsToString(CurYs) sCurYs = '[' + strcat(string(CurYs),',') + ']'; endfunction function [CurY2s]=fCurY2s(A1, A2, B1, B2, C, Alpha1, Alpha2, CurTs) CurY2s = CurYsToString(C*(CurTs .^ 3) + B2*log(1 + Alpha1*CurTs) + A1); endfunction function [CurY3s]=fCurY3s(A1, A2, B1, B2, C, Alpha1, Alpha2, CurTs) CurY3s = CurYsToString(0.5*A1 + 10*A2*log(1 + Alpha2*CurTs) + B1*(CurTs .^ 2) + 10*B2); endfunction //Эталонные значения параметров A1et = 5.7; A2et = 4.5; B1et = 0.3; B2et = 2.7; Cet = 0.63; //Значения параметров, по которым идентифицируем систему T = 10;//Время моделирования CurTs = [0:(T/(10^2)):T];//Текущие моменты времени, в которых берем значения CurY2_1s = fCurY2s(A1et,A2et,B1et,B2et,Cet,Alpha1,0.0,CurTs); CurY3_1s = fCurY3s(A1et,A2et,B1et,B2et,Cet,Alpha1,0.0,CurTs); CurY2_2s = fCurY2s(A1et,A2et,B1et,B2et,Cet,Alpha1,1.23,CurTs); CurY3_2s = fCurY3s(A1et,A2et,B1et,B2et,Cet,Alpha1,1.23,CurTs); //Параметры контрольных режимов системы SystemIdentificateModesParametersNames = ['CurY2s','CurY3s','Alpha2'];//Имена параметров SystemIdentificateModesParametersValues = [CurY2_1s,CurY3_1s, '0.0';.. CurY2_2s,CurY3_2s,'1.23'];//Значения параметров //Параметры режимов работы системы SystemModesParametersNames = ['Omega1','Lambda1','Omega2','Omega3','Lambda2','Alpha2','Beta'];//Имена параметров SystemModesParametersValues = [ 1.29,0.21, 0.09, 1.5,0.369,1.83,6.123;.. 1.323,0.27, 0.15,1.83,0.339,1.23,6.153;.. 1.29,0.33,0.063,1.23,0.699, 1.5,3.183];//Значения параметров //Идентифицируемые параметры системы SystemIdentificationParametersNames = ['A1','A2','B1','B2','C'];//Имена параметров SystemIdentificationParametersMinValues = [5.1,4.23,0.15,2.43,0.57];//Минимальные значения параметров SystemIdentificationParametersMaxValues = [6.3,4.83,0.75,3.03,0.69];//Максимальные значения параметров //Идентификационная функция function [parameters]=IdentificationFunction(fSys, MinValues, MaxValues) //Генерируем случайные значения параметров MinValues = repmat(MinValues,[10,1]); MaxValues = repmat(MaxValues,[10,1]); parameters = MinValues + (MaxValues - MinValues) .* rand(MinValues); //Получаем невязки errs = fSys(parameters); //Суммируем невязки errs = sum(errs,1); errs = sum(errs,2); errs = matrix(errs,1,-1); //Выбираем минимальную невязку [MinErrs, indMinErrs] = min(errs); //Берем соответсвующие параметры parameters = parameters(indMinErrs,:); endfunction //Запускаем базовую функцию [SystemOutputChatacteristics,..//Выходные характеристики системы SystemIdentificationParametersValues,..//Значения идентифицированных параметров системы SystemModesParametersIndexes,..//Индексы параметров системы, определяющих ее режимы SystemModesParametersValues,..//Значения параметров системы, определяющих ее режимы TimesMomemts..//Моменты времени ]=ModelingSystemIdentificationDynamic(SystemIdentificationShemaPath,..//Идентификационная схема системы или имя файла идентификационной схемы ситемы SystemIdentificateOutputCharacteristicsNames,..//Имена выходных характеристик системы, по которым осуществляется идентификация (по отклонениям этих величин от соответсвующих экспериментальных значений) SystemIdentificateOutputCharacteristicsIndexes,..//Индексы выходных характеристик системы (в именах), по которым осуществляется идентификация (по отклонениям этих величин от соответсвующих экспериментальных значений) IdentificationDynamicFiltersFunctions,..//Функция сжатия динамик выходных характеристик системы, по которым осуществляется идентификация (по отклонениям этих величин от соответсвующих экспериментальных значений) SystemIdentificateModesParametersNames,..//Имена параметров системы, определяющих ее контрольные режимы SystemIdentificateModesParametersValues,..//Значения параметров системы, определяющих ее контрольные режимы SystemIdentificationParametersNames,..//Имена идентифицируемых параметров системы SystemIdentificationParametersMinValues,..//Миниальные значения идентифицируемых параметров системы SystemIdentificationParametersMaxValues,..//Максимальные значения идентифицируемых параметров системы IdentificationFunction,..//Идентификационная функция SystemShemaPath,..//Cхема системы или имя файла схемы ситемы SystemOutputCharacteristicsNames,..//Имена выходных характеристик системы SystemOutputCharacteristicsIndexes,..//Индексы выходных характеристик системы (в именах) "Evidence",DynamicFiltersFunctions,..//Функции сжатия динамик SystemModesParametersNames,..//Имена параметров системы, определяющих ее режимы SystemModesParametersValues,..//Значения параметров системы, определяющих ее режимы SystemHyperParametrsNames,..//Имена гиперпараметров, определяющих динамику SystemHyperParametrsValues,..//Значения гиперпараметров, определяющих динамику [0.5E-6,0.51E-6],..//Максимальное значение абсолютной ошибки для режимов идентификации системы [0.5E-6,0.51E-6,0.57E-6],..//Максимальное значение абсолютной ошибки [0.69E-6,0.57E-6],..//Минимальное значение относительной ошибки для режимов идентификации системы [0.69E-6,0.57E-6,0.75E-6],..//Минимальное значение относительной ошибки [10.0,11.1],..//Время симуляции для режимов идентификации системы [10.0,11.1,15.3],..//Время симуляции [0.93E-4,0.87E-4],..//Максимальный шаг интергирования по времени для режимов идентификации системы [0.93E-4,0.87E-4,0.81E-4],..//Максимальный шаг интергирования по времени [0,3],..//Решатель для режимов идентификации системы [0,3,4],..//Решатель [2.1E-10,1.5E-10],..//Максимальная ошибка времени для режимов идентификации системы [2.1E-10,1.5E-10,1.23E-10]..//Максимальная ошибка времени ); //Выводим результаты disp(SystemOutputChatacteristics); disp(SystemIdentificationParametersValues); | ![]() | ![]() |
//Формируем путь к xcos-диаграмме Proba10.zcos [a, pathlib] = libraryinfo("computing_experimentlib"); clear a; pathlib = strncpy(pathlib, length(pathlib) - length('macros')) + 'xcos'; //Идентификационные функции фильтра function [parametrs]=IdentificationDynamicFilterFunction1(time, value) parametrs=3.3*max(abs(value)); endfunction function [parametrs]=IdentificationDynamicFilterFunction2(time, value) parametrs=9.63*max(abs(value)); endfunction //Массив идентификационных функций фильтров IdentificationDynamicFiltersFunctions = cell(1, 2); IdentificationDynamicFiltersFunctions{1} = IdentificationDynamicFilterFunction1; IdentificationDynamicFiltersFunctions{2} = IdentificationDynamicFilterFunction2; //Функция фильтра function [parametrs]=DynamicFilterFunction1(time, value) parametrs=[sum(time.*value) / length(time), sum((time.^2).*value) / (3*length(time))]; endfunction function [parametr]=DynamicFilterFunction2(time, value) parametr=sum(time.*value) / (2*length(time)); endfunction //Массив функций фильтров DynamicFiltersFunctions = cell(1, 3); DynamicFiltersFunctions{1} = DynamicFilterFunction1; DynamicFiltersFunctions{2} = DynamicFilterFunction2; DynamicFiltersFunctions{3} = DynamicFilterFunction1; //Путь к файлу диаграммы SystemShemaPath = fullfile(pathlib, 'Proba10.zcos'); SystemIdentificationShemaPath = fullfile(pathlib, 'Proba10iden.zcos'); //Выходные характеристики системы, по которым идентифицируем диаграмму SystemIdentificateOutputCharacteristicsNames = ['DY2','DY3']; SystemIdentificateOutputCharacteristicsIndexes = [1,1]; //Выходные характеристики системы SystemOutputCharacteristicsNames = ['Y1','Y2','Y3']; SystemOutputCharacteristicsIndexes = [1,1,1]; //Функции для расчета контрольных динамик function [sCurYs]=CurYsToString(CurYs) sCurYs = '[' + strcat(string(CurYs),',') + ']'; endfunction function [CurY2s]=fCurY2s(A1, A2, B1, B2, C, Alpha1, Alpha2, CurTs) CurY2s = CurYsToString(C*(CurTs .^ 3) + B2*log(1 + Alpha1*CurTs) + A1); endfunction function [CurY3s]=fCurY3s(A1, A2, B1, B2, C, Alpha1, Alpha2, CurTs) CurY3s = CurYsToString(0.5*A1 + 10*A2*log(1 + Alpha2*CurTs) + B1*(CurTs .^ 2) + 10*B2); endfunction //Эталонные значения параметров A1et = 5.7; A2et = 4.5; B1et = 0.3; B2et = 2.7; Cet = 0.63; //Значения параметров, по которым идентифицируем систему T = 10;//Время моделирования CurTs = [0:(T/(10^2)):T];//Текущие моменты времени, в которых берем значения CurY2_1s = fCurY2s(A1et,A2et,B1et,B2et,Cet,1.05,0.0,CurTs); CurY3_1s = fCurY3s(A1et,A2et,B1et,B2et,Cet,1.05,0.0,CurTs); CurY2_2s = fCurY2s(A1et,A2et,B1et,B2et,Cet,1.05,1.23,CurTs); CurY3_2s = fCurY3s(A1et,A2et,B1et,B2et,Cet,1.05,1.23,CurTs); //Параметры контрольных режимов системы SystemIdentificateModesParametersNames = ['CurY2s','CurY3s','Alpha2'];//Имена параметров SystemIdentificateModesParametersValues = [CurY2_1s,CurY3_1s, '0.0';.. CurY2_2s,CurY3_2s,'1.23'];//Значения параметров //Параметры режимов работы системы SystemModesParametersNames = ['Omega1','Lambda1','Omega2','Omega3','Lambda2','Alpha2','Beta'];//Имена параметров SystemModesParametersValues = [ 1.29,0.21, 0.09, 1.5,0.369,1.83,6.123;.. 1.323,0.27, 0.15,1.83,0.339,1.23,6.153;.. 1.29,0.33,0.063,1.23,0.699, 1.5,3.183];//Значения параметров //Идентифицируемые параметры системы SystemIdentificationParametersNames = ['A1','A2','B1','B2','C'];//Имена параметров SystemIdentificationParametersMinValues = [5.1,4.23,0.15,2.43,0.57];//Минимальные значения параметров SystemIdentificationParametersMaxValues = [6.3,4.83,0.75,3.03,0.69];//Максимальные значения параметров //Идентификационная функция function [parameters]=IdentificationFunction(fSys, MinValues, MaxValues) //Генерируем случайные значения параметров MinValues = repmat(MinValues,[10,1]); MaxValues = repmat(MaxValues,[10,1]); parameters = MinValues + (MaxValues - MinValues) .* rand(MinValues); //Получаем невязки errs = fSys(parameters); //Суммируем невязки errs = sum(errs,1); errs = sum(errs,2); errs = matrix(errs,1,-1); //Выбираем минимальную невязку [MinErrs, indMinErrs] = min(errs); //Берем соответсвующие параметры parameters = parameters(indMinErrs,:); endfunction //Запускаем базовую функцию [SystemOutputChatacteristics,..//Выходные характеристики системы SystemIdentificationParametersValues,..//Значения идентифицированных параметров системы SystemModesParametersIndexes,..//Индексы параметров системы, определяющих ее режимы SystemModesParametersValues,..//Значения параметров системы, определяющих ее режимы TimesMomemts..//Моменты времени ]=ModelingSystemIdentificationDynamic(SystemIdentificationShemaPath,..//Идентификационная схема системы или имя файла идентификационной схемы ситемы SystemIdentificateOutputCharacteristicsNames,..//Имена выходных характеристик системы, по которым осуществляется идентификация (по отклонениям этих величин от соответсвующих экспериментальных значений) SystemIdentificateOutputCharacteristicsIndexes,..//Индексы выходных характеристик системы (в именах), по которым осуществляется идентификация (по отклонениям этих величин от соответсвующих экспериментальных значений) IdentificationDynamicFiltersFunctions,..//Функция сжатия динамик выходных характеристик системы, по которым осуществляется идентификация (по отклонениям этих величин от соответсвующих экспериментальных значений) SystemIdentificateModesParametersNames,..//Имена параметров системы, определяющих ее контрольные режимы SystemIdentificateModesParametersValues,..//Значения параметров системы, определяющих ее контрольные режимы SystemIdentificationParametersNames,..//Имена идентифицируемых параметров системы SystemIdentificationParametersMinValues,..//Миниальные значения идентифицируемых параметров системы SystemIdentificationParametersMaxValues,..//Максимальные значения идентифицируемых параметров системы IdentificationFunction,..//Идентификационная функция SystemShemaPath,..//Cхема системы или имя файла схемы ситемы SystemOutputCharacteristicsNames,..//Имена выходных характеристик системы SystemOutputCharacteristicsIndexes,..//Индексы выходных характеристик системы (в именах) "Evidence",DynamicFiltersFunctions,..//Функции сжатия динамик SystemModesParametersNames,..//Имена параметров системы, определяющих ее режимы SystemModesParametersValues,..//Значения параметров системы, определяющих ее режимы [0.5E-6,0.51E-6],..//Максимальное значение абсолютной ошибки для режимов идентификации системы [0.5E-6,0.51E-6,0.57E-6],..//Максимальное значение абсолютной ошибки [0.69E-6,0.57E-6],..//Минимальное значение относительной ошибки для режимов идентификации системы [0.69E-6,0.57E-6,0.75E-6],..//Минимальное значение относительной ошибки [10.0,11.1],..//Время симуляции для режимов идентификации системы [10.0,11.1,15.3],..//Время симуляции [0.93E-4,0.87E-4],..//Максимальный шаг интергирования по времени для режимов идентификации системы [0.93E-4,0.87E-4,0.81E-4],..//Максимальный шаг интергирования по времени [0,3],..//Решатель для режимов идентификации системы [0,3,4],..//Решатель [2.1E-10,1.5E-10],..//Максимальная ошибка времени для режимов идентификации системы [2.1E-10,1.5E-10,1.23E-10]..//Максимальная ошибка времени ); //Выводим результаты disp(SystemOutputChatacteristics); disp(SystemIdentificationParametersValues); | ![]() | ![]() |
//Формируем путь к xcos-диаграмме Proba10.zcos [a, pathlib] = libraryinfo("computing_experimentlib"); clear a; pathlib = strncpy(pathlib, length(pathlib) - length('macros')) + 'xcos'; //Идентификационные функции фильтра function [parametrs]=IdentificationDynamicFilterFunction1(time, value) parametrs=3.3*max(abs(value)); endfunction function [parametrs]=IdentificationDynamicFilterFunction2(time, value) parametrs=9.63*max(abs(value)); endfunction //Массив идентификационных функций фильтров IdentificationDynamicFiltersFunctions = cell(1, 2); IdentificationDynamicFiltersFunctions{1} = IdentificationDynamicFilterFunction1; IdentificationDynamicFiltersFunctions{2} = IdentificationDynamicFilterFunction2; //Функция фильтра function [parametrs]=DynamicFilterFunction1(time, value) parametrs=[sum(time.*value) / length(time), sum((time.^2).*value) / (3*length(time))]; endfunction function [parametr]=DynamicFilterFunction2(time, value) parametr=sum(time.*value) / (2*length(time)); endfunction //Массив функций фильтров DynamicFiltersFunctions = cell(1, 3); DynamicFiltersFunctions{1} = DynamicFilterFunction1; DynamicFiltersFunctions{2} = DynamicFilterFunction2; DynamicFiltersFunctions{3} = DynamicFilterFunction1; //Путь к файлу диаграммы SystemShemaPath = fullfile(pathlib, 'Proba10.zcos'); SystemIdentificationShemaPath = fullfile(pathlib, 'Proba10iden.zcos'); //Гиперпараметры диаграммы Alpha1 = 1.05; SystemHyperParametrsNames = ['Alpha1'];//Имена гиперпараметров, определяющих динамику SystemHyperParametrsValues = [Alpha1];//Значения гиперпараметров, определяющих динамику //Выходные характеристики системы, по которым идентифицируем диаграмму SystemIdentificateOutputCharacteristicsNames = ['DY2','DY3']; SystemIdentificateOutputCharacteristicsIndexes = [1,1]; //Выходные характеристики системы SystemOutputCharacteristicsNames = ['Y1','Y2','Y3']; SystemOutputCharacteristicsIndexes = [1,1,1]; //Функции для расчета контрольных динамик function [sCurYs]=CurYsToString(CurYs) sCurYs = '[' + strcat(string(CurYs),',') + ']'; endfunction function [CurY2s]=fCurY2s(A1, A2, B1, B2, C, Alpha1, Alpha2, CurTs) CurY2s = CurYsToString(C*(CurTs .^ 3) + B2*log(1 + Alpha1*CurTs) + A1); endfunction function [CurY3s]=fCurY3s(A1, A2, B1, B2, C, Alpha1, Alpha2, CurTs) CurY3s = CurYsToString(0.5*A1 + 10*A2*log(1 + Alpha2*CurTs) + B1*(CurTs .^ 2) + 10*B2); endfunction //Эталонные значения параметров A1et = 5.7; A2et = 4.5; B1et = 0.3; B2et = 2.7; Cet = 0.63; //Значения параметров, по которым идентифицируем систему T = 10;//Время моделирования CurTs = [0:(T/(10^2)):T];//Текущие моменты времени, в которых берем значения CurY2_1s = fCurY2s(A1et,A2et,B1et,B2et,Cet,Alpha1,0.0,CurTs); CurY3_1s = fCurY3s(A1et,A2et,B1et,B2et,Cet,Alpha1,0.0,CurTs); CurY2_2s = fCurY2s(A1et,A2et,B1et,B2et,Cet,Alpha1,1.23,CurTs); CurY3_2s = fCurY3s(A1et,A2et,B1et,B2et,Cet,Alpha1,1.23,CurTs); //Параметры контрольных режимов системы SystemIdentificateModesParametersNames = ['CurY2s','CurY3s','Alpha2'];//Имена параметров SystemIdentificateModesParametersValues = [CurY2_1s,CurY3_1s, '0.0';.. CurY2_2s,CurY3_2s,'1.23'];//Значения параметров //Параметры режимов работы системы SystemModesParametersNames = ['Omega1','Lambda1','Omega2','Omega3','Lambda2','Alpha2','Beta'];//Имена параметров SystemModesParametersValues = [ 1.29,0.21, 0.09, 1.5,0.369,1.83,6.123;.. 1.323,0.27, 0.15,1.83,0.339,1.23,6.153;.. 1.29,0.33,0.063,1.23,0.699, 1.5,3.183];//Значения параметров //Идентифицируемые параметры системы SystemIdentificationParametersNames = ['A1','A2','B1','B2','C'];//Имена параметров SystemIdentificationParametersMinValues = [5.1,4.23,0.15,2.43,0.57];//Минимальные значения параметров SystemIdentificationParametersMaxValues = [6.3,4.83,0.75,3.03,0.69];//Максимальные значения параметров //Идентификационная функция function [parameters]=IdentificationFunction(fSys, MinValues, MaxValues) //Генерируем случайные значения параметров MinValues = repmat(MinValues,[10,1]); MaxValues = repmat(MaxValues,[10,1]); parameters = MinValues + (MaxValues - MinValues) .* rand(MinValues); //Получаем невязки errs = fSys(parameters); //Суммируем невязки errs = sum(errs,1); errs = sum(errs,2); errs = matrix(errs,1,-1); //Выбираем минимальную невязку [MinErrs, indMinErrs] = min(errs); //Берем соответсвующие параметры parameters = parameters(indMinErrs,:); endfunction //Запускаем базовую функцию [SystemOutputChatacteristics,..//Выходные характеристики системы SystemIdentificationParametersValues,..//Значения идентифицированных параметров системы SystemModesParametersIndexes,..//Индексы параметров системы, определяющих ее режимы SystemModesParametersValues,..//Значения параметров системы, определяющих ее режимы TimesMomemts..//Моменты времени ]=ModelingSystemIdentificationDynamic(SystemIdentificationShemaPath,..//Идентификационная схема системы или имя файла идентификационной схемы ситемы SystemIdentificateOutputCharacteristicsNames,..//Имена выходных характеристик системы, по которым осуществляется идентификация (по отклонениям этих величин от соответсвующих экспериментальных значений) SystemIdentificateOutputCharacteristicsIndexes,..//Индексы выходных характеристик системы (в именах), по которым осуществляется идентификация (по отклонениям этих величин от соответсвующих экспериментальных значений) IdentificationDynamicFiltersFunctions,..//Функция сжатия динамик выходных характеристик системы, по которым осуществляется идентификация (по отклонениям этих величин от соответсвующих экспериментальных значений) SystemIdentificateModesParametersNames,..//Имена параметров системы, определяющих ее контрольные режимы SystemIdentificateModesParametersValues,..//Значения параметров системы, определяющих ее контрольные режимы SystemIdentificationParametersNames,..//Имена идентифицируемых параметров системы SystemIdentificationParametersMinValues,..//Миниальные значения идентифицируемых параметров системы SystemIdentificationParametersMaxValues,..//Максимальные значения идентифицируемых параметров системы IdentificationFunction,..//Идентификационная функция SystemShemaPath,..//Cхема системы или имя файла схемы ситемы SystemOutputCharacteristicsNames,..//Имена выходных характеристик системы SystemOutputCharacteristicsIndexes,..//Индексы выходных характеристик системы (в именах) "Evidence",DynamicFiltersFunctions,..//Функции сжатия динамик SystemModesParametersNames,..//Имена параметров системы, определяющих ее режимы SystemModesParametersValues,..//Значения параметров системы, определяющих ее режимы SystemHyperParametrsNames,..//Имена гиперпараметров, определяющих динамику SystemHyperParametrsValues,..//Значения гиперпараметров, определяющих динамику ); //Выводим результаты disp(SystemOutputChatacteristics); disp(SystemIdentificationParametersValues); | ![]() | ![]() |
//Формируем путь к xcos-диаграмме Proba10.zcos [a, pathlib] = libraryinfo("computing_experimentlib"); clear a; pathlib = strncpy(pathlib, length(pathlib) - length('macros')) + 'xcos'; //Идентификационные функции фильтра function [parametrs]=IdentificationDynamicFilterFunction1(time, value) parametrs=3.3*max(abs(value)); endfunction function [parametrs]=IdentificationDynamicFilterFunction2(time, value) parametrs=9.63*max(abs(value)); endfunction //Массив идентификационных функций фильтров IdentificationDynamicFiltersFunctions = cell(1, 2); IdentificationDynamicFiltersFunctions{1} = IdentificationDynamicFilterFunction1; IdentificationDynamicFiltersFunctions{2} = IdentificationDynamicFilterFunction2; //Функция фильтра function [parametrs]=DynamicFilterFunction1(time, value) parametrs=[sum(time.*value) / length(time), sum((time.^2).*value) / (3*length(time))]; endfunction function [parametr]=DynamicFilterFunction2(time, value) parametr=sum(time.*value) / (2*length(time)); endfunction //Массив функций фильтров DynamicFiltersFunctions = cell(1, 3); DynamicFiltersFunctions{1} = DynamicFilterFunction1; DynamicFiltersFunctions{2} = DynamicFilterFunction2; DynamicFiltersFunctions{3} = DynamicFilterFunction1; //Путь к файлу диаграммы SystemShemaPath = fullfile(pathlib, 'Proba10.zcos'); SystemIdentificationShemaPath = fullfile(pathlib, 'Proba10iden.zcos'); //Выходные характеристики системы, по которым идентифицируем диаграмму SystemIdentificateOutputCharacteristicsNames = ['DY2','DY3']; SystemIdentificateOutputCharacteristicsIndexes = [1,1]; //Выходные характеристики системы SystemOutputCharacteristicsNames = ['Y1','Y2','Y3']; SystemOutputCharacteristicsIndexes = [1,1,1]; //Функции для расчета контрольных динамик function [sCurYs]=CurYsToString(CurYs) sCurYs = '[' + strcat(string(CurYs),',') + ']'; endfunction function [CurY2s]=fCurY2s(A1, A2, B1, B2, C, Alpha1, Alpha2, CurTs) CurY2s = CurYsToString(C*(CurTs .^ 3) + B2*log(1 + Alpha1*CurTs) + A1); endfunction function [CurY3s]=fCurY3s(A1, A2, B1, B2, C, Alpha1, Alpha2, CurTs) CurY3s = CurYsToString(0.5*A1 + 10*A2*log(1 + Alpha2*CurTs) + B1*(CurTs .^ 2) + 10*B2); endfunction //Эталонные значения параметров A1et = 5.7; A2et = 4.5; B1et = 0.3; B2et = 2.7; Cet = 0.63; //Значения параметров, по которым идентифицируем систему T = 10;//Время моделирования CurTs = [0:(T/(10^2)):T];//Текущие моменты времени, в которых берем значения CurY2_1s = fCurY2s(A1et,A2et,B1et,B2et,Cet,1.05,0.0,CurTs); CurY3_1s = fCurY3s(A1et,A2et,B1et,B2et,Cet,1.05,0.0,CurTs); CurY2_2s = fCurY2s(A1et,A2et,B1et,B2et,Cet,1.05,1.23,CurTs); CurY3_2s = fCurY3s(A1et,A2et,B1et,B2et,Cet,1.05,1.23,CurTs); //Параметры контрольных режимов системы SystemIdentificateModesParametersNames = ['CurY2s','CurY3s','Alpha2'];//Имена параметров SystemIdentificateModesParametersValues = [CurY2_1s,CurY3_1s, '0.0';.. CurY2_2s,CurY3_2s,'1.23'];//Значения параметров //Параметры режимов работы системы SystemModesParametersNames = ['Omega1','Lambda1','Omega2','Omega3','Lambda2','Alpha2','Beta'];//Имена параметров SystemModesParametersValues = [ 1.29,0.21, 0.09, 1.5,0.369,1.83,6.123;.. 1.323,0.27, 0.15,1.83,0.339,1.23,6.153;.. 1.29,0.33,0.063,1.23,0.699, 1.5,3.183];//Значения параметров //Идентифицируемые параметры системы SystemIdentificationParametersNames = ['A1','A2','B1','B2','C'];//Имена параметров SystemIdentificationParametersMinValues = [5.1,4.23,0.15,2.43,0.57];//Минимальные значения параметров SystemIdentificationParametersMaxValues = [6.3,4.83,0.75,3.03,0.69];//Максимальные значения параметров //Идентификационная функция function [parameters]=IdentificationFunction(fSys, MinValues, MaxValues) //Генерируем случайные значения параметров MinValues = repmat(MinValues,[10,1]); MaxValues = repmat(MaxValues,[10,1]); parameters = MinValues + (MaxValues - MinValues) .* rand(MinValues); //Получаем невязки errs = fSys(parameters); //Суммируем невязки errs = sum(errs,1); errs = sum(errs,2); errs = matrix(errs,1,-1); //Выбираем минимальную невязку [MinErrs, indMinErrs] = min(errs); //Берем соответсвующие параметры parameters = parameters(indMinErrs,:); endfunction //Запускаем базовую функцию [SystemOutputChatacteristics,..//Выходные характеристики системы SystemIdentificationParametersValues,..//Значения идентифицированных параметров системы SystemModesParametersIndexes,..//Индексы параметров системы, определяющих ее режимы SystemModesParametersValues,..//Значения параметров системы, определяющих ее режимы TimesMomemts..//Моменты времени ]=ModelingSystemIdentificationDynamic(SystemIdentificationShemaPath,..//Идентификационная схема системы или имя файла идентификационной схемы ситемы SystemIdentificateOutputCharacteristicsNames,..//Имена выходных характеристик системы, по которым осуществляется идентификация (по отклонениям этих величин от соответсвующих экспериментальных значений) SystemIdentificateOutputCharacteristicsIndexes,..//Индексы выходных характеристик системы (в именах), по которым осуществляется идентификация (по отклонениям этих величин от соответсвующих экспериментальных значений) IdentificationDynamicFiltersFunctions,..//Функция сжатия динамик выходных характеристик системы, по которым осуществляется идентификация (по отклонениям этих величин от соответсвующих экспериментальных значений) SystemIdentificateModesParametersNames,..//Имена параметров системы, определяющих ее контрольные режимы SystemIdentificateModesParametersValues,..//Значения параметров системы, определяющих ее контрольные режимы SystemIdentificationParametersNames,..//Имена идентифицируемых параметров системы SystemIdentificationParametersMinValues,..//Миниальные значения идентифицируемых параметров системы SystemIdentificationParametersMaxValues,..//Максимальные значения идентифицируемых параметров системы IdentificationFunction,..//Идентификационная функция SystemShemaPath,..//Cхема системы или имя файла схемы ситемы SystemOutputCharacteristicsNames,..//Имена выходных характеристик системы SystemOutputCharacteristicsIndexes,..//Индексы выходных характеристик системы (в именах) "Evidence",DynamicFiltersFunctions,..//Функции сжатия динамик SystemModesParametersNames,..//Имена параметров системы, определяющих ее режимы SystemModesParametersValues..//Значения параметров системы, определяющих ее режимы ); //Выводим результаты disp(SystemOutputChatacteristics); disp(SystemIdentificationParametersValues); | ![]() | ![]() |
//Формируем путь к xcos-диаграмме Proba10.zcos [a, pathlib] = libraryinfo("computing_experimentlib"); clear a; pathlib = strncpy(pathlib, length(pathlib) - length('macros')) + 'xcos'; //Идентификационные функции фильтра function [parametrs]=IdentificationDynamicFilterFunction1(time, value) parametrs=3.3*max(abs(value)); endfunction function [parametrs]=IdentificationDynamicFilterFunction2(time, value) parametrs=9.63*max(abs(value)); endfunction //Массив идентификационных функций фильтров IdentificationDynamicFiltersFunctions = cell(1, 2); IdentificationDynamicFiltersFunctions{1} = IdentificationDynamicFilterFunction1; IdentificationDynamicFiltersFunctions{2} = IdentificationDynamicFilterFunction2; //Моменты времени TimeMoments = cell(1, 3); TimeMoments{1} = [0.0:0.05:9.95]'; TimeMoments{2} = [0.0:0.1:9.9]'; TimeMoments{3} = [0.0:0.2:9.8]'; //Путь к файлу диаграммы SystemShemaPath = fullfile(pathlib, 'Proba10.zcos'); SystemIdentificationShemaPath = fullfile(pathlib, 'Proba10iden.zcos'); //Гиперпараметры диаграммы Alpha1 = 1.05; SystemHyperParametrsNames = ['Alpha1'];//Имена гиперпараметров, определяющих динамику SystemHyperParametrsValues = [Alpha1];//Значения гиперпараметров, определяющих динамику //Выходные характеристики системы, по которым идентифицируем диаграмму SystemIdentificateOutputCharacteristicsNames = ['DY2','DY3']; SystemIdentificateOutputCharacteristicsIndexes = [1,1]; //Выходные характеристики системы SystemOutputCharacteristicsNames = ['Y1','Y2','Y3']; SystemOutputCharacteristicsIndexes = [1,1,1]; //Функции для расчета контрольных динамик function [sCurYs]=CurYsToString(CurYs) sCurYs = '[' + strcat(string(CurYs),',') + ']'; endfunction function [CurY2s]=fCurY2s(A1, A2, B1, B2, C, Alpha1, Alpha2, CurTs) CurY2s = CurYsToString(C*(CurTs .^ 3) + B2*log(1 + Alpha1*CurTs) + A1); endfunction function [CurY3s]=fCurY3s(A1, A2, B1, B2, C, Alpha1, Alpha2, CurTs) CurY3s = CurYsToString(0.5*A1 + 10*A2*log(1 + Alpha2*CurTs) + B1*(CurTs .^ 2) + 10*B2); endfunction //Эталонные значения параметров A1et = 5.7; A2et = 4.5; B1et = 0.3; B2et = 2.7; Cet = 0.63; //Значения параметров, по которым идентифицируем систему T = 10;//Время моделирования CurTs = [0:(T/(10^2)):T];//Текущие моменты времени, в которых берем значения CurY2_1s = fCurY2s(A1et,A2et,B1et,B2et,Cet,Alpha1,0.0,CurTs); CurY3_1s = fCurY3s(A1et,A2et,B1et,B2et,Cet,Alpha1,0.0,CurTs); CurY2_2s = fCurY2s(A1et,A2et,B1et,B2et,Cet,Alpha1,1.23,CurTs); CurY3_2s = fCurY3s(A1et,A2et,B1et,B2et,Cet,Alpha1,1.23,CurTs); //Параметры контрольных режимов системы SystemIdentificateModesParametersNames = ['CurY2s','CurY3s','Alpha2'];//Имена параметров SystemIdentificateModesParametersValues = [CurY2_1s,CurY3_1s, '0.0';.. CurY2_2s,CurY3_2s,'1.23'];//Значения параметров //Параметры режимов работы системы SystemModesParametersNames = ['Omega1','Lambda1','Omega2','Omega3','Lambda2','Alpha2','Beta'];//Имена параметров SystemModesParametersValues = [ 1.29,0.21, 0.09, 1.5,0.369,1.83,6.123;.. 1.323,0.27, 0.15,1.83,0.339,1.23,6.153;.. 1.29,0.33,0.063,1.23,0.699, 1.5,3.183];//Значения параметров //Идентифицируемые параметры системы SystemIdentificationParametersNames = ['A1','A2','B1','B2','C'];//Имена параметров SystemIdentificationParametersMinValues = [5.1,4.23,0.15,2.43,0.57];//Минимальные значения параметров SystemIdentificationParametersMaxValues = [6.3,4.83,0.75,3.03,0.69];//Максимальные значения параметров //Идентификационная функция function [parameters]=IdentificationFunction(fSys, MinValues, MaxValues) //Генерируем случайные значения параметров MinValues = repmat(MinValues,[10,1]); MaxValues = repmat(MaxValues,[10,1]); parameters = MinValues + (MaxValues - MinValues) .* rand(MinValues); //Получаем невязки errs = fSys(parameters); //Суммируем невязки errs = sum(errs,1); errs = sum(errs,2); errs = matrix(errs,1,-1); //Выбираем минимальную невязку [MinErrs, indMinErrs] = min(errs); //Берем соответсвующие параметры parameters = parameters(indMinErrs,:); endfunction //Запускаем базовую функцию [SystemOutputChatacteristics,..//Выходные характеристики системы SystemIdentificationParametersValues,..//Значения идентифицированных параметров системы SystemModesParametersIndexes,..//Индексы параметров системы, определяющих ее режимы SystemModesParametersValues,..//Значения параметров системы, определяющих ее режимы TimesMomemts..//Моменты времени ]=ModelingSystemIdentificationDynamic(SystemIdentificationShemaPath,..//Идентификационная схема системы или имя файла идентификационной схемы ситемы SystemIdentificateOutputCharacteristicsNames,..//Имена выходных характеристик системы, по которым осуществляется идентификация (по отклонениям этих величин от соответсвующих экспериментальных значений) SystemIdentificateOutputCharacteristicsIndexes,..//Индексы выходных характеристик системы (в именах), по которым осуществляется идентификация (по отклонениям этих величин от соответсвующих экспериментальных значений) IdentificationDynamicFiltersFunctions,..//Функция сжатия динамик выходных характеристик системы, по которым осуществляется идентификация (по отклонениям этих величин от соответсвующих экспериментальных значений) SystemIdentificateModesParametersNames,..//Имена параметров системы, определяющих ее контрольные режимы SystemIdentificateModesParametersValues,..//Значения параметров системы, определяющих ее контрольные режимы SystemIdentificationParametersNames,..//Имена идентифицируемых параметров системы SystemIdentificationParametersMinValues,..//Миниальные значения идентифицируемых параметров системы SystemIdentificationParametersMaxValues,..//Максимальные значения идентифицируемых параметров системы IdentificationFunction,..//Идентификационная функция SystemShemaPath,..//Cхема системы или имя файла схемы ситемы SystemOutputCharacteristicsNames,..//Имена выходных характеристик системы SystemOutputCharacteristicsIndexes,..//Индексы выходных характеристик системы (в именах) "TimeGrid",TimeMoments,..//Моменты времени SystemModesParametersNames,..//Имена параметров системы, определяющих ее режимы SystemModesParametersValues,..//Значения параметров системы, определяющих ее режимы SystemHyperParametrsNames,..//Имена гиперпараметров, определяющих динамику SystemHyperParametrsValues,..//Значения гиперпараметров, определяющих динамику [0.5E-6,0.51E-6],..//Максимальное значение абсолютной ошибки для режимов идентификации системы [0.5E-6,0.51E-6,0.57E-6],..//Максимальное значение абсолютной ошибки [0.69E-6,0.57E-6],..//Минимальное значение относительной ошибки для режимов идентификации системы [0.69E-6,0.57E-6,0.75E-6],..//Минимальное значение относительной ошибки [10.0,11.1],..//Время симуляции для режимов идентификации системы [10.0,11.1,15.3],..//Время симуляции [0.93E-4,0.87E-4],..//Максимальный шаг интергирования по времени для режимов идентификации системы [0.93E-4,0.87E-4,0.81E-4],..//Максимальный шаг интергирования по времени [0,3],..//Решатель для режимов идентификации системы [0,3,4],..//Решатель [2.1E-10,1.5E-10],..//Максимальная ошибка времени для режимов идентификации системы [2.1E-10,1.5E-10,1.23E-10]..//Максимальная ошибка времени ); //Выводим результаты disp(SystemOutputChatacteristics); disp(SystemIdentificationParametersValues); | ![]() | ![]() |
//Формируем путь к xcos-диаграмме Proba10.zcos [a, pathlib] = libraryinfo("computing_experimentlib"); clear a; pathlib = strncpy(pathlib, length(pathlib) - length('macros')) + 'xcos'; //Идентификационные функции фильтра function [parametrs]=IdentificationDynamicFilterFunction1(time, value) parametrs=3.3*max(abs(value)); endfunction function [parametrs]=IdentificationDynamicFilterFunction2(time, value) parametrs=9.63*max(abs(value)); endfunction //Массив идентификационных функций фильтров IdentificationDynamicFiltersFunctions = cell(1, 2); IdentificationDynamicFiltersFunctions{1} = IdentificationDynamicFilterFunction1; IdentificationDynamicFiltersFunctions{2} = IdentificationDynamicFilterFunction2; //Моменты времени TimeMoments = cell(1, 3); TimeMoments{1} = [0.0:0.05:9.95]'; TimeMoments{2} = [0.0:0.1:9.9]'; TimeMoments{3} = [0.0:0.2:9.8]'; //Путь к файлу диаграммы SystemShemaPath = fullfile(pathlib, 'Proba10.zcos'); SystemIdentificationShemaPath = fullfile(pathlib, 'Proba10iden.zcos'); //Выходные характеристики системы, по которым идентифицируем диаграмму SystemIdentificateOutputCharacteristicsNames = ['DY2','DY3']; SystemIdentificateOutputCharacteristicsIndexes = [1,1]; //Выходные характеристики системы SystemOutputCharacteristicsNames = ['Y1','Y2','Y3']; SystemOutputCharacteristicsIndexes = [1,1,1]; //Функции для расчета контрольных динамик function [sCurYs]=CurYsToString(CurYs) sCurYs = '[' + strcat(string(CurYs),',') + ']'; endfunction function [CurY2s]=fCurY2s(A1, A2, B1, B2, C, Alpha1, Alpha2, CurTs) CurY2s = CurYsToString(C*(CurTs .^ 3) + B2*log(1 + Alpha1*CurTs) + A1); endfunction function [CurY3s]=fCurY3s(A1, A2, B1, B2, C, Alpha1, Alpha2, CurTs) CurY3s = CurYsToString(0.5*A1 + 10*A2*log(1 + Alpha2*CurTs) + B1*(CurTs .^ 2) + 10*B2); endfunction //Эталонные значения параметров A1et = 5.7; A2et = 4.5; B1et = 0.3; B2et = 2.7; Cet = 0.63; //Значения параметров, по которым идентифицируем систему T = 10;//Время моделирования CurTs = [0:(T/(10^2)):T];//Текущие моменты времени, в которых берем значения CurY2_1s = fCurY2s(A1et,A2et,B1et,B2et,Cet,1.05,0.0,CurTs); CurY3_1s = fCurY3s(A1et,A2et,B1et,B2et,Cet,1.05,0.0,CurTs); CurY2_2s = fCurY2s(A1et,A2et,B1et,B2et,Cet,1.05,1.23,CurTs); CurY3_2s = fCurY3s(A1et,A2et,B1et,B2et,Cet,1.05,1.23,CurTs); //Параметры контрольных режимов системы SystemIdentificateModesParametersNames = ['CurY2s','CurY3s','Alpha2'];//Имена параметров SystemIdentificateModesParametersValues = [CurY2_1s,CurY3_1s, '0.0';.. CurY2_2s,CurY3_2s,'1.23'];//Значения параметров //Параметры режимов работы системы SystemModesParametersNames = ['Omega1','Lambda1','Omega2','Omega3','Lambda2','Alpha2','Beta'];//Имена параметров SystemModesParametersValues = [ 1.29,0.21, 0.09, 1.5,0.369,1.83,6.123;.. 1.323,0.27, 0.15,1.83,0.339,1.23,6.153;.. 1.29,0.33,0.063,1.23,0.699, 1.5,3.183];//Значения параметров //Идентифицируемые параметры системы SystemIdentificationParametersNames = ['A1','A2','B1','B2','C'];//Имена параметров SystemIdentificationParametersMinValues = [5.1,4.23,0.15,2.43,0.57];//Минимальные значения параметров SystemIdentificationParametersMaxValues = [6.3,4.83,0.75,3.03,0.69];//Максимальные значения параметров //Идентификационная функция function [parameters]=IdentificationFunction(fSys, MinValues, MaxValues) //Генерируем случайные значения параметров MinValues = repmat(MinValues,[10,1]); MaxValues = repmat(MaxValues,[10,1]); parameters = MinValues + (MaxValues - MinValues) .* rand(MinValues); //Получаем невязки errs = fSys(parameters); //Суммируем невязки errs = sum(errs,1); errs = sum(errs,2); errs = matrix(errs,1,-1); //Выбираем минимальную невязку [MinErrs, indMinErrs] = min(errs); //Берем соответсвующие параметры parameters = parameters(indMinErrs,:); endfunction //Запускаем базовую функцию [SystemOutputChatacteristics,..//Выходные характеристики системы SystemIdentificationParametersValues,..//Значения идентифицированных параметров системы SystemModesParametersIndexes,..//Индексы параметров системы, определяющих ее режимы SystemModesParametersValues,..//Значения параметров системы, определяющих ее режимы TimesMomemts..//Моменты времени ]=ModelingSystemIdentificationDynamic(SystemIdentificationShemaPath,..//Идентификационная схема системы или имя файла идентификационной схемы ситемы SystemIdentificateOutputCharacteristicsNames,..//Имена выходных характеристик системы, по которым осуществляется идентификация (по отклонениям этих величин от соответсвующих экспериментальных значений) SystemIdentificateOutputCharacteristicsIndexes,..//Индексы выходных характеристик системы (в именах), по которым осуществляется идентификация (по отклонениям этих величин от соответсвующих экспериментальных значений) IdentificationDynamicFiltersFunctions,..//Функция сжатия динамик выходных характеристик системы, по которым осуществляется идентификация (по отклонениям этих величин от соответсвующих экспериментальных значений) SystemIdentificateModesParametersNames,..//Имена параметров системы, определяющих ее контрольные режимы SystemIdentificateModesParametersValues,..//Значения параметров системы, определяющих ее контрольные режимы SystemIdentificationParametersNames,..//Имена идентифицируемых параметров системы SystemIdentificationParametersMinValues,..//Миниальные значения идентифицируемых параметров системы SystemIdentificationParametersMaxValues,..//Максимальные значения идентифицируемых параметров системы IdentificationFunction,..//Идентификационная функция SystemShemaPath,..//Cхема системы или имя файла схемы ситемы SystemOutputCharacteristicsNames,..//Имена выходных характеристик системы SystemOutputCharacteristicsIndexes,..//Индексы выходных характеристик системы (в именах) "TimeGrid",TimeMoments,..//Моменты времени SystemModesParametersNames,..//Имена параметров системы, определяющих ее режимы SystemModesParametersValues,..//Значения параметров системы, определяющих ее режимы [0.5E-6,0.51E-6],..//Максимальное значение абсолютной ошибки для режимов идентификации системы [0.5E-6,0.51E-6,0.57E-6],..//Максимальное значение абсолютной ошибки [0.69E-6,0.57E-6],..//Минимальное значение относительной ошибки для режимов идентификации системы [0.69E-6,0.57E-6,0.75E-6],..//Минимальное значение относительной ошибки [10.0,11.1],..//Время симуляции для режимов идентификации системы [10.0,11.1,15.3],..//Время симуляции [0.93E-4,0.87E-4],..//Максимальный шаг интергирования по времени для режимов идентификации системы [0.93E-4,0.87E-4,0.81E-4],..//Максимальный шаг интергирования по времени [0,3],..//Решатель для режимов идентификации системы [0,3,4],..//Решатель [2.1E-10,1.5E-10],..//Максимальная ошибка времени для режимов идентификации системы [2.1E-10,1.5E-10,1.23E-10]..//Максимальная ошибка времени ); //Выводим результаты disp(SystemOutputChatacteristics); disp(SystemIdentificationParametersValues); | ![]() | ![]() |
//Формируем путь к xcos-диаграмме Proba10.zcos [a, pathlib] = libraryinfo("computing_experimentlib"); clear a; pathlib = strncpy(pathlib, length(pathlib) - length('macros')) + 'xcos'; //Идентификационные функции фильтра function [parametrs]=IdentificationDynamicFilterFunction1(time, value) parametrs=3.3*max(abs(value)); endfunction function [parametrs]=IdentificationDynamicFilterFunction2(time, value) parametrs=9.63*max(abs(value)); endfunction //Массив идентификационных функций фильтров IdentificationDynamicFiltersFunctions = cell(1, 2); IdentificationDynamicFiltersFunctions{1} = IdentificationDynamicFilterFunction1; IdentificationDynamicFiltersFunctions{2} = IdentificationDynamicFilterFunction2; //Моменты времени TimeMoments = cell(1, 3); TimeMoments{1} = [0.0:0.05:9.95]'; TimeMoments{2} = [0.0:0.1:9.9]'; TimeMoments{3} = [0.0:0.2:9.8]'; //Путь к файлу диаграммы SystemShemaPath = fullfile(pathlib, 'Proba10.zcos'); SystemIdentificationShemaPath = fullfile(pathlib, 'Proba10iden.zcos'); //Гиперпараметры диаграммы Alpha1 = 1.05; SystemHyperParametrsNames = ['Alpha1'];//Имена гиперпараметров, определяющих динамику SystemHyperParametrsValues = [Alpha1];//Значения гиперпараметров, определяющих динамику //Выходные характеристики системы, по которым идентифицируем диаграмму SystemIdentificateOutputCharacteristicsNames = ['DY2','DY3']; SystemIdentificateOutputCharacteristicsIndexes = [1,1]; //Выходные характеристики системы SystemOutputCharacteristicsNames = ['Y1','Y2','Y3']; SystemOutputCharacteristicsIndexes = [1,1,1]; //Функции для расчета контрольных динамик function [sCurYs]=CurYsToString(CurYs) sCurYs = '[' + strcat(string(CurYs),',') + ']'; endfunction function [CurY2s]=fCurY2s(A1, A2, B1, B2, C, Alpha1, Alpha2, CurTs) CurY2s = CurYsToString(C*(CurTs .^ 3) + B2*log(1 + Alpha1*CurTs) + A1); endfunction function [CurY3s]=fCurY3s(A1, A2, B1, B2, C, Alpha1, Alpha2, CurTs) CurY3s = CurYsToString(0.5*A1 + 10*A2*log(1 + Alpha2*CurTs) + B1*(CurTs .^ 2) + 10*B2); endfunction //Эталонные значения параметров A1et = 5.7; A2et = 4.5; B1et = 0.3; B2et = 2.7; Cet = 0.63; //Значения параметров, по которым идентифицируем систему T = 10;//Время моделирования CurTs = [0:(T/(10^2)):T];//Текущие моменты времени, в которых берем значения CurY2_1s = fCurY2s(A1et,A2et,B1et,B2et,Cet,Alpha1,0.0,CurTs); CurY3_1s = fCurY3s(A1et,A2et,B1et,B2et,Cet,Alpha1,0.0,CurTs); CurY2_2s = fCurY2s(A1et,A2et,B1et,B2et,Cet,Alpha1,1.23,CurTs); CurY3_2s = fCurY3s(A1et,A2et,B1et,B2et,Cet,Alpha1,1.23,CurTs); //Параметры контрольных режимов системы SystemIdentificateModesParametersNames = ['CurY2s','CurY3s','Alpha2'];//Имена параметров SystemIdentificateModesParametersValues = [CurY2_1s,CurY3_1s, '0.0';.. CurY2_2s,CurY3_2s,'1.23'];//Значения параметров //Параметры режимов работы системы SystemModesParametersNames = ['Omega1','Lambda1','Omega2','Omega3','Lambda2','Alpha2','Beta'];//Имена параметров SystemModesParametersValues = [ 1.29,0.21, 0.09, 1.5,0.369,1.83,6.123;.. 1.323,0.27, 0.15,1.83,0.339,1.23,6.153;.. 1.29,0.33,0.063,1.23,0.699, 1.5,3.183];//Значения параметров //Идентифицируемые параметры системы SystemIdentificationParametersNames = ['A1','A2','B1','B2','C'];//Имена параметров SystemIdentificationParametersMinValues = [5.1,4.23,0.15,2.43,0.57];//Минимальные значения параметров SystemIdentificationParametersMaxValues = [6.3,4.83,0.75,3.03,0.69];//Максимальные значения параметров //Идентификационная функция function [parameters]=IdentificationFunction(fSys, MinValues, MaxValues) //Генерируем случайные значения параметров MinValues = repmat(MinValues,[10,1]); MaxValues = repmat(MaxValues,[10,1]); parameters = MinValues + (MaxValues - MinValues) .* rand(MinValues); //Получаем невязки errs = fSys(parameters); //Суммируем невязки errs = sum(errs,1); errs = sum(errs,2); errs = matrix(errs,1,-1); //Выбираем минимальную невязку [MinErrs, indMinErrs] = min(errs); //Берем соответсвующие параметры parameters = parameters(indMinErrs,:); endfunction //Запускаем базовую функцию [SystemOutputChatacteristics,..//Выходные характеристики системы SystemIdentificationParametersValues,..//Значения идентифицированных параметров системы SystemModesParametersIndexes,..//Индексы параметров системы, определяющих ее режимы SystemModesParametersValues,..//Значения параметров системы, определяющих ее режимы TimesMomemts..//Моменты времени ]=ModelingSystemIdentificationDynamic(SystemIdentificationShemaPath,..//Идентификационная схема системы или имя файла идентификационной схемы ситемы SystemIdentificateOutputCharacteristicsNames,..//Имена выходных характеристик системы, по которым осуществляется идентификация (по отклонениям этих величин от соответсвующих экспериментальных значений) SystemIdentificateOutputCharacteristicsIndexes,..//Индексы выходных характеристик системы (в именах), по которым осуществляется идентификация (по отклонениям этих величин от соответсвующих экспериментальных значений) IdentificationDynamicFiltersFunctions,..//Функция сжатия динамик выходных характеристик системы, по которым осуществляется идентификация (по отклонениям этих величин от соответсвующих экспериментальных значений) SystemIdentificateModesParametersNames,..//Имена параметров системы, определяющих ее контрольные режимы SystemIdentificateModesParametersValues,..//Значения параметров системы, определяющих ее контрольные режимы SystemIdentificationParametersNames,..//Имена идентифицируемых параметров системы SystemIdentificationParametersMinValues,..//Миниальные значения идентифицируемых параметров системы SystemIdentificationParametersMaxValues,..//Максимальные значения идентифицируемых параметров системы IdentificationFunction,..//Идентификационная функция SystemShemaPath,..//Cхема системы или имя файла схемы ситемы SystemOutputCharacteristicsNames,..//Имена выходных характеристик системы SystemOutputCharacteristicsIndexes,..//Индексы выходных характеристик системы (в именах) "TimeGrid",TimeMoments,..//Моменты времени SystemModesParametersNames,..//Имена параметров системы, определяющих ее режимы SystemModesParametersValues,..//Значения параметров системы, определяющих ее режимы SystemHyperParametrsNames,..//Имена гиперпараметров, определяющих динамику SystemHyperParametrsValues,..//Значения гиперпараметров, определяющих динамику ); //Выводим результаты disp(SystemOutputChatacteristics); disp(SystemIdentificationParametersValues); | ![]() | ![]() |
//Формируем путь к xcos-диаграмме Proba10.zcos [a, pathlib] = libraryinfo("computing_experimentlib"); clear a; pathlib = strncpy(pathlib, length(pathlib) - length('macros')) + 'xcos'; //Идентификационные функции фильтра function [parametrs]=IdentificationDynamicFilterFunction1(time, value) parametrs=3.3*max(abs(value)); endfunction function [parametrs]=IdentificationDynamicFilterFunction2(time, value) parametrs=9.63*max(abs(value)); endfunction //Массив идентификационных функций фильтров IdentificationDynamicFiltersFunctions = cell(1, 2); IdentificationDynamicFiltersFunctions{1} = IdentificationDynamicFilterFunction1; IdentificationDynamicFiltersFunctions{2} = IdentificationDynamicFilterFunction2; //Моменты времени TimeMoments = cell(1, 3); TimeMoments{1} = [0.0:0.05:9.95]'; TimeMoments{2} = [0.0:0.1:9.9]'; TimeMoments{3} = [0.0:0.2:9.8]'; //Путь к файлу диаграммы SystemShemaPath = fullfile(pathlib, 'Proba10.zcos'); SystemIdentificationShemaPath = fullfile(pathlib, 'Proba10iden.zcos'); //Выходные характеристики системы, по которым идентифицируем диаграмму SystemIdentificateOutputCharacteristicsNames = ['DY2','DY3']; SystemIdentificateOutputCharacteristicsIndexes = [1,1]; //Выходные характеристики системы SystemOutputCharacteristicsNames = ['Y1','Y2','Y3']; SystemOutputCharacteristicsIndexes = [1,1,1]; //Функции для расчета контрольных динамик function [sCurYs]=CurYsToString(CurYs) sCurYs = '[' + strcat(string(CurYs),',') + ']'; endfunction function [CurY2s]=fCurY2s(A1, A2, B1, B2, C, Alpha1, Alpha2, CurTs) CurY2s = CurYsToString(C*(CurTs .^ 3) + B2*log(1 + Alpha1*CurTs) + A1); endfunction function [CurY3s]=fCurY3s(A1, A2, B1, B2, C, Alpha1, Alpha2, CurTs) CurY3s = CurYsToString(0.5*A1 + 10*A2*log(1 + Alpha2*CurTs) + B1*(CurTs .^ 2) + 10*B2); endfunction //Эталонные значения параметров A1et = 5.7; A2et = 4.5; B1et = 0.3; B2et = 2.7; Cet = 0.63; //Значения параметров, по которым идентифицируем систему T = 10;//Время моделирования CurTs = [0:(T/(10^2)):T];//Текущие моменты времени, в которых берем значения CurY2_1s = fCurY2s(A1et,A2et,B1et,B2et,Cet,1.05,0.0,CurTs); CurY3_1s = fCurY3s(A1et,A2et,B1et,B2et,Cet,1.05,0.0,CurTs); CurY2_2s = fCurY2s(A1et,A2et,B1et,B2et,Cet,1.05,1.23,CurTs); CurY3_2s = fCurY3s(A1et,A2et,B1et,B2et,Cet,1.05,1.23,CurTs); //Параметры контрольных режимов системы SystemIdentificateModesParametersNames = ['CurY2s','CurY3s','Alpha2'];//Имена параметров SystemIdentificateModesParametersValues = [CurY2_1s,CurY3_1s, '0.0';.. CurY2_2s,CurY3_2s,'1.23'];//Значения параметров //Параметры режимов работы системы SystemModesParametersNames = ['Omega1','Lambda1','Omega2','Omega3','Lambda2','Alpha2','Beta'];//Имена параметров SystemModesParametersValues = [ 1.29,0.21, 0.09, 1.5,0.369,1.83,6.123;.. 1.323,0.27, 0.15,1.83,0.339,1.23,6.153;.. 1.29,0.33,0.063,1.23,0.699, 1.5,3.183];//Значения параметров //Идентифицируемые параметры системы SystemIdentificationParametersNames = ['A1','A2','B1','B2','C'];//Имена параметров SystemIdentificationParametersMinValues = [5.1,4.23,0.15,2.43,0.57];//Минимальные значения параметров SystemIdentificationParametersMaxValues = [6.3,4.83,0.75,3.03,0.69];//Максимальные значения параметров //Идентификационная функция function [parameters]=IdentificationFunction(fSys, MinValues, MaxValues) //Генерируем случайные значения параметров MinValues = repmat(MinValues,[10,1]); MaxValues = repmat(MaxValues,[10,1]); parameters = MinValues + (MaxValues - MinValues) .* rand(MinValues); //Получаем невязки errs = fSys(parameters); //Суммируем невязки errs = sum(errs,1); errs = sum(errs,2); errs = matrix(errs,1,-1); //Выбираем минимальную невязку [MinErrs, indMinErrs] = min(errs); //Берем соответсвующие параметры parameters = parameters(indMinErrs,:); endfunction //Запускаем базовую функцию [SystemOutputChatacteristics,..//Выходные характеристики системы SystemIdentificationParametersValues,..//Значения идентифицированных параметров системы SystemModesParametersIndexes,..//Индексы параметров системы, определяющих ее режимы SystemModesParametersValues,..//Значения параметров системы, определяющих ее режимы TimesMomemts..//Моменты времени ]=ModelingSystemIdentificationDynamic(SystemIdentificationShemaPath,..//Идентификационная схема системы или имя файла идентификационной схемы ситемы SystemIdentificateOutputCharacteristicsNames,..//Имена выходных характеристик системы, по которым осуществляется идентификация (по отклонениям этих величин от соответсвующих экспериментальных значений) SystemIdentificateOutputCharacteristicsIndexes,..//Индексы выходных характеристик системы (в именах), по которым осуществляется идентификация (по отклонениям этих величин от соответсвующих экспериментальных значений) IdentificationDynamicFiltersFunctions,..//Функция сжатия динамик выходных характеристик системы, по которым осуществляется идентификация (по отклонениям этих величин от соответсвующих экспериментальных значений) SystemIdentificateModesParametersNames,..//Имена параметров системы, определяющих ее контрольные режимы SystemIdentificateModesParametersValues,..//Значения параметров системы, определяющих ее контрольные режимы SystemIdentificationParametersNames,..//Имена идентифицируемых параметров системы SystemIdentificationParametersMinValues,..//Миниальные значения идентифицируемых параметров системы SystemIdentificationParametersMaxValues,..//Максимальные значения идентифицируемых параметров системы IdentificationFunction,..//Идентификационная функция SystemShemaPath,..//Cхема системы или имя файла схемы ситемы TimeMoments,..//Имена выходных характеристик системы SystemOutputCharacteristicsIndexes,..//Индексы выходных характеристик системы (в именах) "TimeGrid",DynamicFiltersFunctions,..//Моменты времени SystemModesParametersNames,..//Имена параметров системы, определяющих ее режимы SystemModesParametersValues..//Значения параметров системы, определяющих ее режимы ); //Выводим результаты disp(SystemOutputChatacteristics); disp(SystemIdentificationParametersValues); | ![]() | ![]() |