Математическая модель в пространстве состояний линейного стационарного объекта управления
end
end
% Построение z-строки
z_stroka = zeros(1, 4*N+n+2);% формирование матрицы для хранения данных
% Первый элемент z-строки
z_stroka(1) = 1;
% Суммирование правых частей
for j = 1 : n
z_stroka(4*N+n+2) = z_stroka(4*N+n+2) + abs(PravChast(j));
end
% Формирование элементов z-строки между 1-м и последним элементами
%при 2N небазисных переменных, т.е.
при управлениях
for i = 2 : 2 : 2 * N
for j = 1 : n
z_stroka(i) = z_stroka(i) + FG(j, i/2);
end
for j = 1 : n
z_stroka(i+1) = z_stroka(i+1) - FG(j, i/2);
end
end
% Формирование симплекс-таблицы
CT = zeros(n+2*N+1, 4*N+n+2);
% Построение симплекс-таблицы начиная с z-строки
CT(1,:) = z_stroka(1,:);
% Формирование R-строк в симплекс-таблице
for j = 2 : n + 1
% Формирование правой части в R-строках
CT(j, 4*N+n+2) = abs(PravChast(j-1));
% Формирование элементов R-строк между 1-м и последним элементами
%при 2N небазисных переменных, т.е. при управлениях
for i = 2 : 2 : 2 * N
CT(j, i) = FG(j-1, i/2);
CT(j, i+1) = -FG(j-1, i/2);
end
end
% Формирование S-строк в симплекс-таблице
l = 2;
for j = n + 2 : 2 : n + 2 * N + 1
% Формирование правой части в S-строках
CT(j, 4*N+n+2) = u_p;
CT(j+1, 4*N+n+2) = abs(u_m);
% Формирование элементов S-строк между 1-м и последним элементами
%при 2N небазисных переменных, т.е. при управлениях
CT(j, l : l+1) = [1 -1];
CT(j+1, l : l+1) = [-1 1];
l = l + 2;
end
% Формирование базиса в симплекс-таблице, т.е коэффициентов, стоящих при
%базисных переменных от 2N небазисных переменных до правой части (до 4*N+n+1)
CT(2 : n+2*N+1, 2*N+2 : 4*N+n+1) = eye(n+2*N, n+2*N);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%
РЕШЕНИЕ ЗАДАЧИ БЫСТРОДЕЙСТВИЯ%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%СИМПЛЕКС-МЕТОДОМ%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Цикл смены базисных переменных
nn = size(find(CT(1,2:2*N+1) >= eps));
while nn > 0
[znach, N_stolb] = max(CT(1, 2 : 2*N+1));
N_stolb = N_stolb + 1; % т.к. при небазисн. перемен.
PravChast = CT(:, 4*N+n+2);
for j = 2 : n + 2 * N + 1
if CT(j, N_stolb) > 0
PravChast(j) = PravChast(j) / CT(j, N_stolb);
else
PravChast(j) = inf;
end
end
[znach, N_str] = min(PravChast(2 : n+2*N+1));
N_str = N_str + 1;
% Формирование матрицы перехода B
B = eye(n+2*N+1, n+2*N+1);
B(:, N_str) = CT(:, N_stolb);
% Обращение матрицы B
RE = B(N_str, N_str);
for j = 1 : n + 2 * N + 1
if j == N_str
B(j, N_str) = 1 / RE;
else
B(j, N_str) = -B(j, N_str) / RE;
end
end
%B = inv(B);
% Получение новой симплекс таблицы
CT = B * CT;
nn = size(find(CT(1,2:2*N+1) >= eps));
end
u = zeros(1,N);
% Формирование управления
for j = 2 : n + 2 * N + 1
for i = 2 : 2 * N + 1
if CT(j, i) >= eps
if mod(i, 2) < eps
u(i/2) = CT(j, 4*N+n+2);
else
u((i-1)/2) = -CT(j, 4*N+n+2);
end
end
end
end
% Формирование x1 и x2
X = zeros(n, N);
X(:, 1) = F * X_0 + G * u(1);
for i = 2 : N
X(:, i) = F * X(:, i-1) + G * u(i);
end
% Объединение с начальными условиями
X1 = [X_0(1) X(1, :)];
X2 = [X_0(2) X(2, :)];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% проверка на окончание выбора количества шагов
XX = [X_0 X];
% Вычисление нормы вектора состояния
normaXX = norm(XX(:,N))
% Вычисление значения переменной R
R = abs(X_N - F^N * X_0) - FG * u';
R = R';
z = sum(R);
% Погрешность приближения к точному решению
pogresh = 0.3;
if (normaXX < pogresh)
N_opt = N;
break;
else
if (z > h)
if a == 1
alfa = ceil(alfa/2);
end
N = N + alfa;
a = 0;
b = 1;
else
if b == 1
alfa = ceil(alfa/2);
end
N = N - alfa;
a = 1;
b = 0;
end
end
t_perevoda = N * h;
end
N_opt
h
t_perevoda
%%%%%%%%%%%%%%%%%%%%ОФОРМЛЕНИЕ ПОЛУЧЕННЫХ РЕЗУЛЬТАТОВ%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%В ГРАФИЧЕСКОМ ВИДЕ%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Построение графика x1(t);
figure(1)
t = (0 : 1 : length(X1)-1) * h;
plot(t, X1, 'b', 'LineWidth', 2);
hl=legend('x_1(t)');
set(hl, 'FontName', 'Courier');
xlabel('t, cek'); ylabel('x_1(t)');
grid on
% Построение графика x2(t);
figure(2)
t = (0 : 1 : length(X2)-1) * h;
plot(t, X2, 'b', 'LineWidth', 2);
hl=legend('x_2(t)');
set(hl, 'FontName', 'Courier');
xlabel('t, cek'); ylabel('x_2(t)');
grid on
% Построение графика x2 = x2(x1);
figure(3)
plot(X1, X2, 'm', 'LineWidth', 2);
hl=legend('x_2 = x_2(x_1)');
set(hl, 'FontName', 'Courier');
xlabel('x_1(t)'); ylabel('x_2(x_1(t))');
grid on
% Построение графика u(t)
figure(4)
t = (0 : 1 : length(u)-1) * h;
plot(t, u, 'r', 'LineWidth', 2);
hl=legend('u(t)');
set(hl, 'FontName', 'Courier');
xlabel('t, cek'); ylabel('u(t)');
grid on
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Optimal_L_problem_moments.m
clc
close all
clear all
format long
% ------------------------------------------------------------------------%
b_0 = 5;
b_1 = 9;
% Укороченная система данного объекта
a_5 = 0.1153;
a_4 = 1.78;
a_3 = 3.92;
a_2 = 14.42;
a_1 = 8.583;
a_0 = 0;
% ------------------------------------------------------------------------%
% Приведение системы
b0 = b_0/a_5;
b1 = b_1/a_5;
a5 = a_5/a_5;
a4 = a_4/a_5;
a3 = a_3/a_5;
a2 = a_2/a_5;
a1 = a_1/a_5;
a0 = a_0/a_5;
% ------------------------------------------------------------------------%
% Порядок системы
poryadok = 5;
% Начальные и конечные условия относительно вектора Y
Y_0 = [3 2 1 5]';
Y_T = [0 -1 0 3]';
% Конечное время перехода
T = 3;
% Матрица перехода от Н.У. Y к Н.У. X
B_ = [b0 b1 0 0 0;
0 b0 b1 0 0;
0 0 b0 b1 0;
0 0 0 b0 b1];
% ------------------------------------------------------------------------%
% ------------------------------------------------------------------------%
% Начальные условия для упорядоченной системы
X_0 = B_' * inv(B_ * B_') * Y_0
X_T = B_' * inv(B_ * B_') * Y_T
% ------------------------------------------------------------------------%
% ------------------------------------------------------------------------%
% Представление системы в пространстве состояний
A = [0 1 0 0 0;
0 0 1 0 0;
0 0 0 1 0
0 0 0 0 1;
-a0 -a1 -a2 -a3 -a4]
B = [0; 0; 0; 0; 1]
Другие рефераты на тему «Экономико-математическое моделирование»:
- Сетевое планирование и управление. Основы регрессионного анализа
- Исследование зависимости между объемом производства, капитальными вложениями и выполнением норм выработки
- Применение математического моделирования в экономике
- Управление запасами с применением анализа ABC и XYZ
- Математические методы и модели исследования операций
Поиск рефератов
Последние рефераты раздела
- Выборочные исследования в эконометрике
- Временные характеристики и функция времени. Графическое представление частотных характеристик
- Автоматизированный априорный анализ статистической совокупности в среде MS Excel
- Биматричные игры. Поиск равновесных ситуаций
- Анализ рядов распределения
- Анализ состояния финансовых рынков на основе методов нелинейной динамики
- Безработица - основные определения и измерение. Потоки, запасы, утечки, инъекции в модели