Escolar Documentos
Profissional Documentos
Cultura Documentos
Solucoes em Matlab PDF
Solucoes em Matlab PDF
Soluo de problemas
usando Matlab
Sumrio
Sistemas lineares.................................................................................................................................. 3
Problema exemplo........................................................................................................................... 3
Espao de estados............................................................................................................................ 4
Funo de transferncia................................................................................................................... 8
Converso de formas de representao............................................................................................8
Plos, zeros, freqncia natural e fator de amortecimento............................................................. 9
Reposta a entradas padronizadas................................................................................................... 10
Resposta em freqncia................................................................................................................. 13
A ferramenta LTIview................................................................................................................... 16
Controle linear bsico.................................................................................................................... 17
Controle proporcional............................................................................................................... 18
Outras configuraes de controle..............................................................................................22
Ferramenta SISOtool (SISO Single input single output)............................................................22
Simulao de sistemas de controle no Simulink................................................................................ 25
Otimizao..........................................................................................................................................34
Problema exemplo ........................................................................................................................ 35
Otimizao multiobjetivo.............................................................................................................. 36
Problema exemplo.....................................................................................................................37
Computao simblica....................................................................................................................... 39
Exemplo: sistemas lineares............................................................................................................ 40
Exemplo: equaes diferenciais.....................................................................................................41
Sistemas lineares
Ao chamar um sistema fsico de linear estamos impondo sobre ele a hiptese da validade do
princpio da superposio, ou seja, para uma combinao linear das entradas, a sada uma
combinao linear das sadas para cada entrada individualmente. Matematicamente, um sistema
linear se suas equaes de evoluo dinmica (ao longo do tempo) so difenrenciais lineares e
ordinrias.
Um sem nmero de sistemas de importncia na engenharia so tratados como lineares. A
exemplo: circuitos analgicos, motores de corrente contnua, sistema de troca de calor e estruturas
flexveis (metlica); outros so considerados lineares por trechos, comportam-se como lineares em
uma faixa restrita de operao, como estruturas no lineares, atuadores hidrulicos, entre outros.
Problema exemplo
Para utilizar as funes do Matlab apropriadas para simulao e controle de sistemas
lineares, utilizaremos o exemplo bastante comum de controle de um motor de corrente contnua. A
representao utilizada aqui a usual de um conjunto de equaes diferenciais com o tempo como
varivel dependente, o que configura o que se chama de sistema dinmico em tempo contnuo.
Um esquema da interao entre as partes eltrica e mecnica do motor mostrado na figura
abaixo:
L ia Ra Rs i aK =V
=
em que a posio angular do rotor, , a velocidade; J a inrcia associada; K, a constante
eletromecnica; L, a indutncia da armadura, Ra , a resistncia de armadura; Rs , resistncia
em srie com a armadura; e i a a corrente de armadura.
Os valores medidos para um motor em particular so mostrados na tabela:
Parmetro
Valor
3,4E-4 Kg.m2
5,03E-3 H
1,3E-2 N.m/A
6,7E-5 N.s/m
Ra
4,03
Rs
Espao de estados
Como discutido em cursos de introduo a sistemas lineares e modelagem, um sistema
como esse admite a converso para forma de espao de estados, o que corresponde a escrev-lo na
forma de um conjunto de equaes diferenciais de primeira ordem. Para um sistema linear, isso
leva, em notao vetorial, a
x=
A xB u
y=C xD u
em que x representa um vetor com as funes no tempo que so solues do sistema de equaes
diferenciais e chamado vetor de estado. y o vetor com as funes do tempo que se deseja
observar: as sadas. u, o vetor com sinais impostos ao sistema descrito ao longo do tempo de
observao, o vetor de entradas. As matrizes A, B, C e D contm a representao do sistema
dinmico.
Um resultado elementar da teoria de sistemas lineares o de que existem infinitas matrizes
dessa forma que representam a mesma relao entre entrada e sada (o mesmo sistema), bastando
escolher vetores de estado diferentes, ajustados entre um e outro por transformaes lineares.
No caso particular em que o vetor de estados constitudo de variveis fsicas, diz-se que se
possui um modelo fsico nas matrizes citadas.
Para o caso do motor de corrente contnua citado um modelo fsico pode ser escrito como:
R aR s K
ia
L
L
=
K
c
J
J
0
1
[]
[]
][ ] [ ]
1
ia
L V
0
0
0
0
ia
y=[ 0 1 0 ] [ 0 ] V
Dessa forma tem-se a entrada representada por V, a sada pela velocidade angular e o vetor
de estados dados pela seqncia corrente, velocidade e posio. A sada observada, a velocidade
angular, definida pela forma como foi escrita a matriz C.
No Matlab, sugere-se declarar o modelo como:
>>
>>
>>
>>
>>
>>
>>
>>
>>
J = 3.4e-4;
c = 6.7e-5;
K = 1.3e-2;
L = 5.03e-3;
R = 5.03;
A = [-R/L -K/L 0;
B = [1/L; 0; 0];
C = [0 1 0];
D =[0];
Como j dito, h outras formas possveis de representar a mesma relao matemtica entre a
entrada e a sada do sistema, porm com interpretaes diferentes para os estados. Qualquer uma
dessas representaes pode ser usada para calcular, a cada instante de tempo desejado, a evoluo
dos estados no tempo usando os mtodo usuais de integrao direta. Dadas as matrizes, isso seria
conseguido definindo uma funo e usando um mtodo como o ode45. Para tanto, necessrio
tambm definir uma entrada, por exemplo senoidal.
function u=entrada(t)
u=sin(t);
function z = f_motor(t,x);
global A B
u = entrada(t);
z = A*x+B*u;
>>
>>
>>
>>
>>
Note que as matrizes, usadas recorrentemente dentro e fora da funo, foram definidas como
variveis globais. A figura abaixo mostra as respostas temporais do sistema, ou seja, mostra a
evoluo no tempo da corrente de armadura, da velocidade angular e da posio angular. Observase que foi calculada a evoluo temporal de todos os estados.
>> u = entrada(t);
>> figure, plot(t,y,t,u);
>> legend('Corrente de armadura [A]' , 'Velocidade Angular [rad/s]' , 'Posio angular [rad]' ,
'Tenso de alimentao [V]');
30
C o rre n te d e a rm a d u ra [A ]
V e lo c id a d e A n g u la r [ ra d / s ]
P o s i o a n g u la r [ ra d ]
T e n s o d e a lim e n t a o [ V ]
25
20
15
10
-5
-1 0
10
O Matlab contm estruturas de dados especficas para lidar com sistemas lineares
representados nesse padro. Um sistema linear declarado numa estrutura de Matlab que mantm a
representao em espao de estados com o comando:
>> p = ss(A,B,C,D)
t = 0:0.1:10;
u = sin(t);
x0 = [0;0;0];
figure, lsim(p,u,t,x0)
Nota-se que visualizada apenas a sada selecionada pela matriz C do modelo no espao de
estados. Caso seja de interesse calcular a evoluo temporal de todos os estados, bastaria redefinir a
matriz C, criar sua nova representao no espao de estados e ento utilizar novamente o comando
lsim.
>> C2=[1 0 0;0 1 0;0 0 1]; % Clculo de todas as possveis sadas
>> p2 = ss(A,B,C2,D);
>> figure, lsim(p2,u,t,x0)
Verifica-se a nova resposta na figura com as trs sadas. Assim, fica evidente a importncia
do conhecimento da posio de cada estado dentro do vetor de variveis de estado para a correta
observao da sada desejada.
6
L in e a r S im u la t io n R e s u lt s
12
10
8
6
A m p lit u d e
4
2
0
-2
-4
-6
-8
10
10
T im e ( s e c )
L in e a r S im u la t io n R e s u lt s
1
T o : O u t( 1 )
0 .5
-0 .5
-1
20
15
T o : O u t( 2 )
5
0
-5
-1 0
40
30
20
T o : O u t( 3 )
A m p lit u d e
10
10
0
-1 0
-2 0
5
T im e ( s e c )
Os grficos gerados a partir do comando lsim podem ser editados clicando-se o boto direito
do mouse e selecionando as opes desejadas.
Caso o interesse seja armazenar os valores no tempo da sada em um vetor, ao invs de
traar um grfico, basta fazer o seguinte:
>> y = lsim(p,u,t,x0);
Funo de transferncia
Outra maneira de representar um sistema linear atravs de funes de transferncia. A
funo de transferncia definida como a razo entre a transformada de Laplace da funo de sada
sobre a transformada de Laplace da funo da entrada. Conforme estudado no cursos elementares
de equaes diferenciais, essa razo, para condies iniciais nulas, pode ser facilmente obtida das
equaes diferenciais do sistema dinmico representado. H uma funo de transferncia para cada
par de entrada e sada do sistema.
Para o sistema do motor de corrente contnua a funo de transferncia entre a alimentao e
a velocidade escrita como
s
=
V s
K / JL
Ra Rs c
c Ra R s K 2 .
s
s
L
J
JL
JL
A varivel criada (H) tambm um sistema linear, porm representado na forma de funo
de transferncia. Os comandos de manipulao, caracterizao e simulao de sistemas lineares
que sero vistos a seguir aplicam-se tanto a uma quanto a outra forma de representao.
>>
>>
>>
>>
>>
sys_fisico = ss(A,B,C,D);
[num,den]=ss2tf(a,b,c,d);
H=tf(num,den)
[num,den]=ss2tf(A,B,C,D);
H=tf(num,den)
Os plos podem ser obtidos atravs da matriz A do sistema no espao de estados pois so
iguais aos autovalores dessa matriz:
>> polos = eig(A)
P o le - Z e r o M a p
1
0 .8
0 .6
I m a g in a r y A x is
0 .4
0 .2
0
- 0 .2
- 0 .4
- 0 .6
- 0 .8
-1
-1 0 0 0
-9 0 0
-8 0 0
-7 0 0
-6 0 0
-5 0 0
-4 0 0
-3 0 0
-2 0 0
-1 0 0
R e a l A x is
Conhecidos os plos e os zeros de um dado sistema, alm de seu ganho esttico (ganho em
regime permanente, ou seja, s = 0 na funo de transferncia), pode-se definir um outra forma de
representao de sistemas lineares:
>>
>>
>>
>>
k=dcgain(H);
z=roots(np);
p=roots(dp);
zp = zpk (z,p,k)
Para um sistema definido em uma varivel de uma certa estrutura (funo de transferncia
ou espao de estados) possvel calcular a freqncia natural e o fator de amortecimento associados
a cada um dos plos:
>> damp(H)
>> damp(sys_fisico)
>> [wn,z,polos]=damp(H)
10
>> step(H)
Com esse comando traado o grfico da resposta ao degrau do sistema. Uma das vantagens
da utilizao da funo step a possibilidade de avaliar diretamente no grfico os parmetros da
resposta ao degrau (sobressinal, tempo de estabilizao, tempo de subida e valor de regime). Para
isso, basta pressionar o boto direito do mouse, selecionar a opo characteristics e em seguida
selecionar os parmetros desejados (Peak Response, Settling Time, Rise Rime, Steady State).
Ou ainda, pode-se desejar obter os valores no tempo da resposta e no traar o grfico:
>> [y,t] = step(p);
>> [y,t] = step(H);
Assim possvel armazernar os valores desejados para clculos futuros ou para traar
grficos de forma mais conveniente. Outro exemplo clsssico a resposta ao impulso:
>> impulse(p)
>> impulse(s)
>> [y,t] = impulse(p);
>> [y,t] = impulse(s);
O grfico gerado pela funo impulse tambm pode ser editado clicando-se o boto direito
do mouse.
11
Im p u ls e R e s p o n s e
8
S y s te m : H
P e a k a m p lit u d e : 7 . 5 2
A t t im e ( s e c ) : 0 . 0 3 7 3
A m p lit u d e
S y s te m : H
S e t t lin g T im e ( s e c ) : 1 3 . 3
0
10
12
14
16
18
20
T im e ( s e c )
S te p R e s p o n s e
30
S y s te m : H
S e t t lin g T im e ( s e c ) : 1 3 . 2
25
S y s te m : H
F in a l V a lu e : 2 5 . 7
S y s te m : H
R is e T im e ( s e c ) : 7 . 4 3
A m p lit u d e
20
15
10
10
12
14
16
18
20
T im e ( s e c )
12
Resposta em freqncia
O termo resposta em freqncia significa a resposta em regime permanente de um sistema a
uma entrada senoidal. Nos mtodos de resposta em freqncia varia-se a freqncia do sinal de
entrada dentro de um certo intervalo e estuda-se a resposta resultante. Uma das vantagens dos
mtodos de resposta em freqncia a possibilidade de se utilizar os dados obtidos diretamente a
partir das medies em um certo sistema fsico sem necessitar recorrer a modelos matemticos.
Os mtodos de resposta em freqncia foram desenvolvidos no perodo entre 1930 e 1940
por Nyquist, Bode, Nichols e muitos outros. Esses mtodos so dos mais poderosos na teoria de
controle convencional.
As respostas em regime permanente s entradas senoidais podem ser obtidas diretamente a
partir da substituio de s por na j funo de transferncia, onde a freqncia. Dessa forma, a
resposta em regime permanente dada por:
H j =Me j
onde M o mdulo da funo de transferncia senoidal (ou relao de amplitude entre a entrada e a
sada) e a defasagem (ou diferena de fase entre a entrada e a sada). Ressalta-se que qualquer
nmero complexo pode ser escrito em funo um mdulo e uma fase.
O diagrama de Bode constitudo de dois grficos: um o grfico do mdulo em dB (20 log
|H(j)|) de uma funo de transferncia senoidal; o outro o grfico do ngulo de fase (em graus).
Ambos so traados em relao freqncia em escala logartmica. Ou seja, os grficos so
traados a partir do cmputo dos valores do mdulo e da fase para toda uma faixa de freqncias.
A principal vantagem de se utilizar o diagrama de Bode que a multiplicao dos mdulos
pode ser convertida em soma. Alm disso, as curvas podem ser traadas a partir de aproximaes
assintticas simples. A expanso da faixa de baixas freqncias pelo uso da escala logartmica de
freqncia muito vantajosa, visto que as caractersticas dos sistemas em baixas freqncias, na
prtica, so as mais importantes.
muito simples obter o diagrama de Bode no Matlab. O cdigo em Matlab a seguir mostra
duas formas de se obter graficamente o diagrama utilizando a funo bode.
>> figure, bode(H)
>>
>>
>>
>>
>>
>>
w = 0:0.01:10e4;
[mag,phase] = bode(H,w);
magdb = zeros(1,length(mag)); % ajuste de dimenso
phase_mod = zeros(1,length(phase)); % ajuste de dimenso
magdb(1,:) = 20*log10(mag(1,1,:));
phase_mod(1,:) = phase(1,1,:);
13
B o d e D ia g r a m
50
M a g n it u d e ( d B )
-5 0
-1 0 0
-1 5 0
0
P h a s e (d e g )
-4 5
-9 0
-1 3 5
-1 8 0
10
-2
10
-1
10
10
10
10
10
10
F r e q u e n c y ( r a d /s e c )
14
50
0
-5 0
-1 0 0
-1 5 0
-2
10
10
10
10
0
-5 0
-1 0 0
-1 5 0
-2 0 0
-2
10
10
10
10
10
Para analisar a estabilidade de um sistema linear pode ser utilizado o diagrama de Nyquist,
que o lugar geomtrico de H(j) no plano complexo medida que varia de - a +. o
grfico possvel perceber a marcao do ponto -1 no eixo real. Esse ponto fundamental para a
anlise da estabilidade do sistema. Sem entrar em detalhes, nesse caso percebe-se que o sistema
estvel porque o ponto -1+j0 no envolvido pela curva fechada que representa o lugar geomtrico
de H(j).
15
N y q u is t D ia g r a m
15
10
I m a g in a r y A x is
-5
-1 0
-1 5
-5
10
15
20
25
30
R e a l A x is
A ferramenta LTIview
As funcionalidades de anlise de sistemas LIT (lineares invariantes no tempo) so
centralizadas na ferramenta LTIview, que permite acessar diversos tipos de grficos j vistos, como
dagrama de Bode, de Nyquist, resposta ao degrau, diagrama de lugar das razes e outras como carta
de Nichols e diagrama de valor singular. Nada pode ser alterado no sistema, esse apenas um
gerenciador grfico para as diversas abordagens de visualizar um sistema LIT.
acessada por:
>> ltiview
Usando o menu Edit Plot configurations escolhe-se quatro grficos por janela e as opes
de resposta seguintes na ordem: resposta ao degrau, resposta ao impulso, diagrama de bode em
magnitude e diagrama de Nyquist. A configurao e as respostas obtidas so mostradas nas duas
figuras abaixo.
16
17
Entrada
Sada
Planta
Controlador
Essa configurao corresponde ao controle em realimentao de sada. O controlador um
sistema linear que dispe da informao da sada da planta. A entrada da planta com o controlador
passa a ser a diferena entre a entrada original e o sinal de controle.
H uma infinidade de outras configuraes possveis, por exemplo:
Entrada
Controlador
Planta
Sada
em que o controlador recebe o sinal de erro, ou seja, a diferena entre a entrada e a sada da planta.
Controle proporcional
O primeiro controlador possvel o controlador proporcional, representado por uma
constante multiplicativa na segunda configurao mostrada acima. Isto , regula-se o controle como
um mltiplo do sinal de erro.
Para ajustar o sinal o comportamento do sistema controlado pelos plos que ele possui podese usar o diagrama no lugar das razes. Esse diagrama traa a localizao dos plos do sistema
quando h um controlador proporcional. Variando-se o ganho desse controlador, os plos variam; o
grfico resultante o citado diagrama. Ou seja, o ganha proporcional altera a localizao dos plos
no plano complexo.
Para o sistema do motor de corrente contnua que usamos como exemplo, o diagrama de
lugar das razes produzido pode ser usado para ajustar um ganho de 32,9 levando a plos de malha
fechada complexos e de parte real -500 e imaginria 15,8. Esse valor foi escolhido ao acaso apenas
para ilustrao, levando-se em conta obviamente que o ganho deve levar a plos de malha fechada
que mantenham o sistema estvel (plos no semiplano esquerdo do plano complexo).
>> rlocus(p)
18
Nesse caso, a varivel recm criada um sistema linear que representa o motor original com
o controlador proporcional. Nota-se que esse controlador est inserido no ramo da realimentao
(conforme a primeira figura dos diagramas de controle). Podem ser traados sua resposta ao
impulso e mapa de plos e zeros para verificar as caractersticas do novo sistema com a incluso do
controlador projetado.
>> step(mf)
>> pzmap(mf)
19
A posio atingida ao final das variaes prxima de 0,03, distante do valor do degrau (1).
Esse erro pode ser corrigido multiplicando a entrada do sistema por um valor de ajuste.
regio, ou seja, apenas uma erro devido forma como feita a interpolao dos pontos do grfico.
Uma outra abordagem seria utilizar o modelo com a sada em posio e no em velocidade.
O diagrama para esse caso, depois de aproximado por zoom:
21
Acessa-se o menu File Import para obter a varivel com os dados do sistema. Ou, j
informando o sistema a ser analisado:
>> sisotool(H)
22
Na janela que se abre na parte superior direita h um diagrama de blocos indicando qual a
estrutura de controle usada. Clicando sobre o boto FS as posies dos blocos so alteradas. Nota-se
que so considerados os seguintes tipos de bloco: a planta (G), o sensor (H caso precise ser levado
em conta no modelo), um pr-filtro da entrada (F) e o controlador (C).
A funo do sensor tem o objetivo de modelar a dinmica do transdutor utilizado para medir
a sada do sistema quando da modelagem de uma planta real. O pr-filtro simula a caracterstica de
limitao em banda de freqncia do sinal que se pode impor planta e ao controlador. No caso
aqui apresentado supe-se que o sensor mede perfeitamente, sem atraso e sem ganho a sada e que a
entrada no possuir componentes em freqncia que no possam ser realmente impostas planta e
ao controlador. Ou seja, F = H = 1.
esquerda mostra-se a forma do controlador a ser ajustada (current compensator). Abaixo,
os trs grficos padro so o diagrama do lugar das razes e os dois grficos do diagrama de Bode.
O SISOtool se aplica apenas a sistemas com uma entrada e uma sada (como diz o nome em
ingls). Sua operao consiste em escolher uma forma no domnio de Laplace para o controlador e
ajustar seus parmetros variando caractersticas requeridas nos grficos de resposta mostrados.
Usando o modelo do motor com sada em velocidade e a configurao de controle fornecida
pela janela inicial, clica-se sobre a caixa de edio do controlador.
Al pode-se escolher a funo de transferncia desejada acrescentado ou retirando plos e
zeros. Para adicionar plos ou zeros reais ou imaginrios basta clicar no boto correspondente e
digitar o valor inicial desejado. Para excluir, marca-se a opo delete.
23
Sugere-se incluir um plo e um zero reais e negativos. Essa configurao corresponde aos
controladores em avano ou em atraso. Ou seja, um controlador com a seguinte funo de
transferncia:
C s=K
s z
.
s p
24
duas hipteses foram simuladas. Para tanto, utilizou-se o mesmo ganho proporcional (Kp) projetado
anteriormente, ou seja, um ganho de 32,9.
A figura a seguir mostra os dois esquemas de controle proporcional utilizados para
simulao.
Para a simulao, utilizada como entrada uma funo do tipo degrau unitrio. Esse tipo de
entrada gerada a partir do bloco Step disponvel na opo Sources da biblioteca de blocos. Ao ser
inserido na rea de criao, o bloco pode ser editado clicando-se duas vezes sobre o mesmo. Aqui o
valor do degrau mantido unitrio, mas caso fosse necessrio poderia ser escolhido uma
amplitude diferente de 1 e tambm poderia ser alterado o instante no qual o degrau aplicado.
26
O sistema sob controle (motor CC) definido a partir de seu modelo de estados (matrizes A,
B, C e D) utilizando-se o bloco State-Space encontrado na opo Continuous. necessrio duplo
clique sobre a caixa inserida para que se defina as matrizes de estado desejadas. Pode-se digitar as
matrizes diretamente nos espaos disponveis ou apenas digitar nos espaos adequados as variveis
j calculadas e disponveis na rea de comando do Matlab, conforme mostra a figura a seguir.
27
28
29
A simulao dos dois sistemas de controle pode ser vista nas duas figuras a seguir. A
primeira figura resultado da aplicao de Kp no ramo direto e a segunda da aplicao de Kp no
ramo inverso.
Outro tipo de controlador projetado anteriormente, com o auxlio da ferramenta SISOtool,
foi um controlador em avano (ou em atraso) de fase. Para inserir um controlador desse tipo, basta
escolher a estrutura Zero-Pole encontrada na opo Continuous, e ento definir os plos, os zeros e
o ganho desejados para realizar o controle em avano (ou atraso). A figura a seguir mostra o
esquema desse tipo de controlador.
30
Tambm possvel definir o sistema a ser simulado diretamente a partir de sua funo de
transferncia. Para isso basta definir seu diagrama de blocos, o qual pode ser facilmente construdo
no Simulink, conforme mostrado na figura abaixo. Nesse caso no so mostrados os valores dos
ganhos, os quais so tirados diretamente da funo de transferncia entre alimentao e velocidade
(motor CC).
31
Nota-se novamente a existncia de um bloco somador, Sum, o qual est disponvel na opo
Commonly Used Blocks. Esse bloco pode ser editado conforme os demais. Assim, possvel alterar
o nmero de entradas e os sinais das mesmas.
H ainda blocos integradores, que so os responsaveis por integrar a derivada da posio
para fornecer a posio. Esses blocos esto disponveis na opo Continuous com o nome
Integrator.
possvel criar subsistemas selecionando certos blocos, clicando-se o boto direito e
selecionando a opo Create Subsystem. Selecionando todo o subsistema correspondente ao motor
de corrente contnua, ser criado um subsistema conforme mostrado na figura a seguir.
32
A figura com o resultado da simulao pode ser observada abaixo. Percebe-se que os
33
resultados so os mesmos j obtidos quando o sistema foi definido com o bloco State-Space.
Otimizao
O problema matemtico da otimizao o de encontrar, para uma dada funo, seu valor
mnimo (ou mximo) e o ponto ou intervalo em que ele ocorre. Isso pode ser escrito como:
min f x ou max f x .
x
x
funo objetivo descontnua ou caixa preta (sem informao das derivadas nem
aproximaes) mtodo de Nelder-Mead (busca), algoritmo genticos;
Classe de problema
Funo(es)
fminunc,
fminsearch
Programao linear
linprog
Prograo quadrtica
quadprog
Minimizao restrita
fmincon
bintprog
fzero
fsolve
Problema exemplo
Como exemplo prope-se o seguinte problema de otimizao restrita:
x
2
2
min f x=e 4x 12x 24x 1 x 22x 21
x 1 x 2x 1 x 21,50
sujeito a
.
x1 x 210
Convertendo a segunda restrio para a forma menor do que zero, podem-se definir duas
funes no Matlab para representar a funo objetivo e as restries.
1
35
A funo das restries, pelo padro da mtodo a ser usado (fmincon) deve fornecer
tambm restries de igualdade como matriz vazia caso no existam.
function [c, ceq] = confun(x)
% Restries de desigualdade.
c = [1.5 + x(1)*x(2) - x(1) - x(2);
-x(1)*x(2) - 10];
% Restries de igualdade.
Ceq = [];
function z = fobj(x);
% Funo objetivo.
Z = exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);
Esse um problema de duas variveis. Uma chamada possvel para a funo fmincon,
supondo um ponto inicial de busca da soluo [-1, 1]
x0 = [-1,1];
options = optimset('LargeScale','off');
[x, fval] = ...
fmincon(@fobj,x0,[],[],[],[],[],[],@confun,options)
A restries foram quase exatamente satisfeitas (quase nulas), como pode ser verificado
avaliando-as:
>> [c,ceq] = confun(x)
c=
1.0e-007 *
-0.9032
0.9032
ceq =
[]
Otimizao multiobjetivo
Todos esses problemas envolvem uma funo objetivo escalar, ou seja, apenas um objetivo
de otimizao. Uma extenso da otimizao est em imaginar que vrias funes devem ser
otimizadas simultaneamente. Nesse ponto entra a otimizao multiobjetivo. A abordagem mais
36
comum a de definir uma funo que combina de forma monotnica todas as funes envolvidas e
minimizar essa funo definida. Outra abordagem a de obter computacionalmente o que se chama
se superfcie de Pareto: o conjunto dos pontos para os quais h pelo menos uma das funes
objetivos otimizada sem que se possa melhorar outra funo sem piorar alguma que j timo.
O Matlab no implementa, at a presente verso, mtodos de otimizao que produzem
automaticamente superfcies de Pareto, isso precisaria ser programado pelo usurio. No entanto, a
primeira maneira citada de lidar com o problema pode ser usada.
Problema exemplo
O problema exemplo de minimizao multiobjetivo consiste de encontrar valores timos
para um controlador PID para otimizar o erro na resposta no controle de um sistema afetado por no
linearidades de atuao.
Considere o sistema descrito pela funo de transferncia:
H s=
1,5
,
2
50s 43s 3s1
3
em cuja entrada existam duas no linearidades: um limite de saturao e um limite no slew rate, que
o tempo mnimo para uma rampa de 1 V.
Coloca-se um controlador PID na entrada com parmetros iniciais provisrios inicializados
no espao de trabalho e constri-se o modelo no Simulink.
Coloca-se um degrau como entrada no sistema e o sinal de erro entre referncia e sada
alimentado no controlador. Dentro do bloco do controlador colocam-se variveis como valores dos
parmetros: Kp, Kd e Ki.
O diagrama em Simulink ser ento usado para simular repetidamente e obter a resposta do
sistema variando os valores dos parmtros do controlador at atingir valores timos no sentido de
minimizar a soma dos quadrados dos erros entre a entrada em degrau e a sada. Aqui entra o
conceito de multiobjetivo, pois a idia minimizar todos os erros simultaneamente, o critrio
adotador o de minimizar a soma dos quadrados de todos eles.
Basta definir em Matlab uma funo que invoca o diagrama e o simula dados os parmetros
37
do controlador. A sugesto aqui a de usar uma funo que produzir os parmetros timos pela
seqncia: inicializao e chamada da funo de minimizao de quadrados.
Sugere-se tambm, por organizao, definir a funo que produz o sinal de erro a ser
minimiado dentro da funo geral.
function [Kp,Ki,Kd] = otimizaPID
% Otimizao de parmetros de um PID por mnimos quadrados.
pid0 = [0.63 0.0504 1.9688]; % valores iniciais
% Opes do algoritmo de otimizao.
options = optimset('LargeScale','off','Display','iter',...
'TolX',0.001,'TolFun',0.001);
% minimizao do erro usando a fun definida abaixo
pid = lsqnonlin(@erro, pid0, [], [], options);
Kp = pid(1); Ki = pid(2); Kd = pid(3);
function F = erro(pid)
% Produz o sinal de erro entre a sada e o degrau unitrio.
Kp = pid(1);
Ki = pid(2);
Kd = pid(3);
% Parmetros de simulao
simopt = simset('solver','ode5','SrcWorkspace','Current');
% Simulao
[tout,xout,yout] = sim('optsim',[0 100],simopt);
% Erro entre sada e degrau
F = yout-1;
end
end
O resultado obtido ao se invocar [Kp,Ki,Kd] = otimizaPID
>> Kp
Kp =
0.6300
>> Kd
Kd =
1.9688
>> Ki
Ki =
0.0504
38
Computao simblica
A manipulao matemtica de smbolos representando variveis chamada computao
simblica. uma rea da matemtica ainda de desenvolvimento e cheia de problemas ainda no
resolvidos, por exemplo, no h algoritmo definitivo ou mesmo robusto para simplificao de
expresses matemticas que opere para um conjunto amplo de tipos de expresses. Teoricamente,
os programas de computao simblica usam de estruturas de rvores para armazenam e manipular
as expresses.
O Matlab implementa algumas tcnicas de manipulao simblica atravs do Symbolic
Toolbox. bastante conhecido que esse o ponto fraco do programa e h pacotes mais adaptados
para manipulao simblica no mercado, como o Mathematica. No entanto a presena desse pacote
atende a um requisito de completude do programa.
Define-se uma varivel simblica atravs de um nome de varivel (como em outros casos) e
uma string que a representao escrita na tela desta varivel. Para definir uma varivel chamada
var escrita na tela como x,
>> var = sym('x')
Para definir uma varivel simblica representada por uma string lexicamente idntica ao seu
nome pode-se usar o atalho (varivel x escrita como x)
>> syms x
Funo
collect
Expanso de polinmios
expand
Fatorar
factor
Separar numerador e
denominador
numden
simple
Simplificao
simplify
subexpr
Operao
Funo
Derivada
diff
Integral
int
Matriz jacobiana
jacobian
Limite
limit
symsum
Srie de Taylor
taylor
Determinante
det
Autovalores e autovetores
eig
Matriz inversa
inv
Tringularizao superior de
matrizes
triu
Tringularizao inferior de
matrizes
tril
Valores singulares
svd
Exponencial matricial
expm
Composio de funes
compose
Soluo de equaes
solve
Funo inversa
finverse
dsolve
ezplot
Ainda, todos os operadores do Matlab matm sua validade para variveis simblicas, tais
como /, *, .*, ./, \,.
40
O que produziria respostas em funo das constantes e com x como varivel independente.
41