Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ к ЛР ПОСУ.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
2.18 Mб
Скачать

1.7. Индивидуальные задания (по бригадам)

При выполнении задания необходимо найти аналитическое решение уравнения, выполнить численное решение и построить графики переходных процессов, соответствующие аналитическому и численному решениям.

Вариант (№ бригады)

Матрица

1

2

3

4

5

6

7

8

2. Решение задач оптимизации методом поиска.

Одним из распространенных методов решения задач оптимизации является метод Нелдера-Мида. Следующие примеры показывают как с его помощью решаются статические и динамические задачи оптимизации.

2.1. Статическая задача оптимизации

Под статическими будем понимать задачи в которых соотношения между показателем качества и параметрами задается в виде алгебраических выражений.

Например, рассмотрим задачу определения значений параметров и таких, которые обеспечивают минимальное значения следующей функции:

Для решения задачи будут использованы средства пакета программ MATLAB.

Вызов функции FMINSEARCH, в которой реализован метод Нелдера-Мида выполняется с помощью следующего скрипта:

Файл Main5.m

X=fminsearch('fmsfun’,[0,0])

Папраметрами функции FMINSEARCH являются:

fmsfun – имя функции, которая вычисляет значения целевой функции в процессе поиска;

[0,0] – вектор значений параметров, соответствующий начальной точке поиска.

Файл fmsfun.m

function f=fmsfun(x)

f=(1-x(1))*(1-x(1))+100*(x(2)-x(1)*x(1))*(x(2)-x(1)*x(1));

После окончания процесса поиска найденная комбинация параметров отображается в виде вектора в командном окне системы MATLAB.

Для наглядного представления поведения целевой функции в найденной точке целесообразно построить графики линий равного уровня функции в рассматриваемой бласти. Дополнительный анализ целевой функции с помощью графиков линий равного уровня целесообразен по следующим причинам:

- проверка нахождения глобального минимума;

- оценка чувствительности величины целевой функции к изменению параметров.

Построение графиков может быть реализовано с помощью следующего MATLAB-скрипта:

Файл Main6.m

% Задание диапазона построения графиков

x1=-4:0.01:5;

x2=x1;

% Формирование вспомогательных структур данных

[X1,X2]=meshgrid(x1,x2);

Z=(1-X1).^2+100*(X2-X1.^2).^2;

% Собственно построение графиков.

% Последний параметр функции contour определяет количество

% линий на графике и значения функции, для которых

% выполняются построения (См. справку MATLAB)

contour(X1,X2,Z,[0.5 4 20]);

2.2. Динамическая задача оптимизации

Под динамическими будем понимать задачи, в которых соотношения между параметрами и целевой функцией выражаются с помощью дифференциальных уравнений или функционалов от функций времени.

В качестве первого примера рассмотрим следующую задачу:

Задан динамический объект, описываемый дифференциальным уравнением;

Входным воздействием на объект является функция времени, содержащая неизвестный параметр :

Функция является кусочнолинейной и её вид определяется следующей таблицей значений;

0

0

2

4

0

Требуется найти такое значение параметра входного воздействия , при котором .

Строго говоря, приведенная задача не является задачей на нахождение минимума, но ее можно переформулировать как задачу минмизации при сохранении исходного смысла. Переформулировка заключается в том, что мы потребуем найти такое значение параметра входного воздействия, которое обеспечит минимальное значение . Выполненная переформулировка позволяет использовать при решении поставленной задачи MATLAB – функцию FMINSEARCH. Кроме функции FMINSEARCH будет использована функция ODE45, которая предназначена для численного решения дифференциального уравнения.

Решение поставленной задачи реализовано в MATLAB c помощью следующих скриптов:

Файл Main7.m

%Для определения значения параметра um, программа вызывает

%функцию поиска минимума (fminsearch)

%Предполагается, что функция fmsfun7, на которую ссылается

%fminsearch, вычисляет квадрат состояния объекта,

%соответствующего моменту времени t=4

global t t1 x x0 u

t1=2;

x0=10;

um=fminsearch(@fmsfun7,1)

plot(t,x,t,u)

Файл fmsfun7.m

%Основное назначение программы – вычислить квадрат значения

%состояния объекта, соответствующего моменту времени t=4.

%Для вычисления значений состояния объекта используется

%функция

%ode45 которая реализует метод численного решения

%соответствующего дифференциального уравнения.

%Функция ode45fun8, на которую ссылается ode45, предназначена

%для вычисления значений правой части дифференциального

%уравнения объекта.

function f=fmsfun7(um)

global t t1 x x0 u umax

umax=um;

t=[];

x=[];

u=[];

[t,x]=ode45(@odefun7,[0 2*t1],[x0]);

for i=1:length(t),

if t(i)<t1

u(i)=(um/t1)*t(i);

else

u(i)=-(um/t1)*t(i)+2*um;

end

end

f=x(length(t))*x(length(t));

Файл odefun7.m

function f=odefun7(t,x)

global t1 umax

if t<t1

u=(umax/t1)*t;

else

u=-(umax/t1)*t+2*umax;

end

f=-0.5*x+u;