quarta-feira, outubro 24, 2007

Sedumi, Matlab e Linux

No meu projeto de iniciação científica, trabalho muito com otimização, em especial, com LMIs (Linear Matrix Inequalities ou Desigualdades Matriciais Lineares). Analisar a estabilidade de um determinado sistema através de LMIs é simples e prático, caso você tenha em mãos um software matemático poderoso, como o Matlab.

O Matlab tem um solver para resolver LMIs, o LMILab. Usei ele durante muito tempo, até me deparar com um preblema que não consegui implementar no LMILab. Meu tutor me propôs usar o SeDuMi e o YALMIP. O SeDuMi faz o papel do LMILab, e o YALMIP é uma interface para o SeDuMi. Utilizar estes dois softwares para resolver LMIs é muito mais fácil que usar o LMILab. Além disso, testes realizados pela equipe de desenvolvimento do SeDuMi apontam para uma eficiência maior com o aumento da complexidade das LMIs.

Porque eu estou escrevendo isso? E o Linux, onde entra nessa história? Recentemente instalei o SeDuMi e o YALMIP no Matlab 7.2 R2006a no Linux. Mas não foi tão simples assim. Para instalar o SeDuMi no Matlab do Linux é preciso compilar os arquivos. E para compilar os arquivos, você precisa saber qual é a versão do gcc que seu Matlab usa. Para descobrir, acesse este link. No meu caso, a versão é a 3.4. Meu sistema é o Ubuntu 7.10, que não vem com o gcc-3.4 instalado. Para instalar, é só digitar:
$ sudo apt-get install gcc-3.4 g++-3.4
Para fazer o sistema reconhecer o gcc-3.4 como compilador padrão, digite:
$ cd /usr/bin
$ sudo rm gcc
$ sudo ln -s gcc-3.4 gcc
Agora, no inicie o Matlab e vá para a pasta onde estão os arquivos do SeDuMi. É preciso configurar o compilador utilizado pelo Matlab. Digite:
>> mex -setup
Escolha a opção 2. Por fim, digite o comando abaixo para compilar o SeDuMi:
>> install_sedumi
Para testar se tudo deu certo, teste se o YALMIP está funcionando:
>> yalmiptest
É importante lembrar que, para realizar os comandos do Matlab acima, você deve antes adicionar os diretórios ao path do Matlab, além de ter permissão de escrita para estes diretórios. Por fim, fazemos o gcc-4.1 voltar a ser o compilador padrão:
$ cd /usr/bin
$ sudo rm gcc
$ sudo ln -s gcc-4.1 gcc

Nenhum comentário: