# GUSEK (GLPK Under Scite Extended Kit)

pt-br | us-en

Copyright © 2011, Luiz M. M. Bettoni.
LASCA, CPGEI, UTFPR, Curitiba, Brazil.
E-mail: <bettoni@utfpr.edu.br>

http://gusek.sourceforge.net

## Sumário

- Introdução

> - Licença

- Download e Instalação
- Guia Rápido de Utilização

> - Interface
> - Modelos GMPL

> > - Modelo Único
> > - Modelo Segmentado

> - Modelos MPS/Cplex LP

- Referências
- Changelog

## Introdução

GUSEK é uma interface de desenvolvimento para modelos de Programação Linear (LP) e Programação Linear Inteira Mista (MILP). O pacote consiste em uma versão customizada do editor SciTE integrada a uma versão pré-compilada do solver GLPK para a plataforma Win32. A página oficial do GUSEK é gusek.sourceforge.net.

Note que o GUSEK, embora baseado em versões estáveis de programas consolidados, encontra-se em fase de desenvolvimento e testes. Eventuais problemas e sugestões devem ser reportadas para o autor.

### Licença

Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral GNU, conforme publicada pela Fundação do Software Livre (FSF); na versão 3 da Licença ou (a seu critério) posterior. Este programa é distribuído na esperança que possa ser útil, mas sem nenhuma garantia. Veja a Licença Pública Geral GNU para maiores detalhes.

## Download e Instalação

O conteúdo completo do Projeto GUSEK pode ser acessado em sourceforge.net/projects/gusek. O código fonte pode ser obtido por SVN: `https://gusek.svn.sourceforge.net/svnroot/gusek/trunk`.

Para instalar o GUSEK:

- Obtenha a versão mais recente do GUSEK na lista de arquivos no sourceforge.
- Descompacte o arquivo em um diretório de sua preferência (o GUSEK é uma aplicação portable).
- Abra a interface executando o arquivo `gusek.exe`

Observação: É possível integrar o GUSEK ao menu de contexto do Windows Explorer, bem como associá-lo diretamente aos arquivos de modelagem GMPL. Veja as opções no menu `Tools > Windows Integration`. Atenção: Caso seja o executável seja movido para outro diretório é necessário reaplicar as estas opções para registrar o novo caminho.

## Guia Rápido de Utilização

### Interface

O GUSEK identifica o tipo de arquivo pela sua extensão. Diversos arquivos podem abertos simultamenamente no editor. Assim, para realizar o desenvolvimento é necessário que cada arquivo esteja salvo com a extensão correta:

- `.mod`: arquivo de modelo GMPL, eventualmente contendo dados;
- `.dat`: arquivo de dados GMPL;
- `.out`: arquivo de saída GLPK, contendo o sumário da resolução;
- `.mps`: arquivo de modelo no padrão Free MPS;
- `.lp`: arquivo de modelo no padrão Cplex LP;

Em essência, os recursos referentes ao desenvolvimento de modelos concentram-se no menu `Tools` - os demais menus fornecem funcionalidades gerais do editor original SciTE. Alguns dos recursos mais úteis contam com atalhos de teclado (verifique as indicações no menu), botões para acesso direto (verifique as dicas ao deixar o cursor do mouse repousar sobre os botões) e menus contextuais da área de edição e das guias (tabs). Os principais comandos para modelgem são:

- `Compile`: Verifica a sintaxe do arquivo;
- `Go`: Executa o solver, iniciando a resolução do modelo corrente;
- `Build GLPK LP/MIP`: Gera o modelo expandido a partir do modelo atual (formato GLPK LP/MIP);
- `Build Cplex LP`: Gera o modelo expandido a partir do modelo atual (formato Cplex LP);
- `Build MPS`: Gera a matriz MPS a partir do modelo atual (formato Free MPS);
- `Use External .dat`: Habilita / desabilita o uso de arquivos de dados externos (vide Modelos GMPL);
- `Set as Default .dat File`: Define o arquivo de dados atual como "arquivo padrão de dados", forçando seu uso em qualquer modelo executado (vide Modelos GMPL);
- `Add as Extra .dat File`: Adiciona o arquivo de dados atual como "arquivo de dados auxiliar" (somente usado para vários arquivos de dados - vide GMPL Models);
- `Clear Extra .dat Files`: Limpa o registro dos "arquivos de dados auxiliares" (somente usado para vários arquivos de dados - vide GMPL Models);
- `Generate Output File on Go`: Habilita / desabilita a geração e exibição do arquivo de saída após a execução do modelo;
- `Generate LP Sensitivity Analysis`: Habilita / desabilita a geração e exibição do arquivo de análise de sensibilidade após a execução do modelo (somente LP);
- `Use Improved MILP (All Cuts)`: Habilita / desabilita o uso de parâmetros que melhoram o desempenho do solver em problemas MILP, incluindo todos os cortes. Para usuários avançados: estes parâmetros podem ser alterados individualmente no campo 1 em `View > Parameters`;
- `Use with Free MPS Format`: Usa o formato "Free MPS" ao invés do "Fixed MPS" para executar e gerar arquivos MPS;

### Modelos GMPL

Os modelos são desenvolvidos de acordo com a linguagem de modelagem própria do GLPK, a GMPL (GNU MathProg Language). Exemplos originalmente distribuídos com o solver são disponibilizados no subdiretório "examples" do pacote. Essencialmente, o modelo pode ter dois formatos:

#### Modelo Único

Neste caso o modelo e os dados concentram-se em um único arquivo com extensão `.mod`. Usual em modelos didáticos ou com conjunto de dados único.

Antes de executar o modelo certifique-se que a opção `Tools > Use External .dat` esteja desmarcada (default).

#### Modelo Segmentado

Neste caso o modelo encontra-se em um arquivo com extensão `.mod` enquanto os dados são fornecidos em um arquivo separado, com extensão `.dat`. Usual em modelos complexos ou com diversos estudos de caso.

Para executar o modelo é necessário marcar a opção `Tools > Use External .dat`. Neste caso é necessário que o arquivo de dados tenha o mesmo nome do modelo, diferenciando-se apenas a extensão (como em `prob1.mod` e `prob1.dat`).

##### Utilizando Um Arquivo de Dados Padrão

Como alternativa, a fim de faciliar o uso de arquivos de modelo/dados com nomes distintos, foi criado o conceito "arquivo de dados padrão", permitindo fixar um arquivo de dados para todas as próximas execuções (até que outro seja definido como padrão). Para tanto:

- Abra os arquivos de modelo e de dados a serem utilizados;
- Selecione um arquivo de dados e clique no menu `Tools > Set as Default .dat File` (presente também no menu contextual das guias);
- Alterne para a guia de um modelo e solicite a execução;
- Repita a operação para cada arquivo de dados/modelo desejado.

> Observações:

> - Para retornar ao modo de uso de arquivos de mesmo nome deve-se desativar e reativar a opção `Tools > Use External .dat`;
> - É possível especificar vários arquivos de dados adicionais. Para isso ative a guia de cada arquivo `.dat` adicional desejado e selecione menu `Tools > Add as Extra .dat File`. Observe que, em relação à estrutura especificada no modelo, o conteúdo de todos arquivos de dados utilizados deve ser complementar e não redundante. Para desativar o uso de arquivos adicionais é necessário utilizar o menu `Tools > Clear Extra .dat Files`;
> - Para auxiliar o monitoramento dos arquivos de dados e parâmetros definidos: clique na barra de status para alterar entre os modos de exibição "dados de edição" e "parâmetros do GLPK".
> - Para usuários avançados: os parâmetros contendo o nome do arquivo de dados padrão e dos arquivos adicionais podem ser editados diretamente em `View > Parameters`, campos 2 e 3, respectivamente.

### Modelos MPS/Cplex LP

O Gusek também suporta o desenvolvimento de modelos MPS e Cplex LP. Você pode editar, verificar, executar e converter modelos entre estes formatos utsando os itens do menu `Tools`.

O formato padrão adotado para modelos MPS é o "Fixed MPS". Você pode mudar isso em `Tools > Work with Free MPS` para rodar modelos "Free MPS". Este item também altera o tipo de arquivos gerados a partir de modelos GMPL e Cplex LP.

## Referências

GLPK - O solver livre LP/MILP GNU

Copyright (C) 2000-2009 Andrew Makhorin, <mao@mai2.rcnet.ru>

Sc1 - Versão compacta do editor livre SciTE

Copyright (C) 1998-2003 Neil Hodgson, <neilh@scintilla.org>

GLPK for Windows - Executáveis do GLPK para Windows

GLPK Lab for Windows - Conjunto de ferramentas e bibliotecas para modelagem GLPK

GLPK Wikibook - Documentação vasta não oficial sobre o GLPK e projetos relacionados

PyMathProg - Modelagem para GLPK em Python

Scite RU-Board - Patches para melhorias e correções no SciTE

MinGW - Compilador livre GCC portado para Windows

## Changelog

GUSEK 0.2.12 (15/03/2011)

GLPK updated to 4.45.

GUSEK 0.2.11 (07/06/2010)

GLPK updated to 4.44.

GUSEK 0.2.10 (22/02/2010)

Added support to GLPK LP/MIP format. Some tools itens modified (names, order and shortcuts). GLPK updated to 4.43.

GUSEK 0.2.9 (14/01/2010)

GLPK updated to 4.42.

GUSEK 0.2.8 (30/12/2009)

GLPK updated to 4.41. Added Java files support (as in native SciTE). Added gnuplot files support (testing - thanks to Noli Sicad).

GUSEK 0.2.7 (26/11/2009)

GLPK updated to 4.40 - now GUSEK uses GLPK for Windows pre-build GLPK binaries (thanks to Xypron). Added tips folder (gusek_tips), introducing useful samples to gusek users. Added python files support (as in native SciTE) for PyMathProg modelling (testing).

GUSEK 0.2.6 (27/07/2009)

GLPK updated to 4.39. Minor fix in windows integration.

GUSEK 0.2.5 (05/05/2009)

GLPK updated to 4.38.

GUSEK 0.2.4 (03/04/2009)

Bug correction: now "Stop Execution" really finish glpsol.exe process. GLPK updated to 4.37.

GUSEK 0.2.3 (06/02/2009)

GLPK updated to 4.36.

GUSEK 0.2.2 (23/01/2009)

Added sensitivity bounds menu option (thanks to Wendel de Melo for suggestion). GLPK updated to 4.35.

GUSEK 0.2.1 (10/12/2008)

Improved output panel refresh time (thanks to Andrew Makhorin for GLPK patch). Improved support to MPS / Cplex LP files. Minor fixes and improvements. GLPK Reference Manual included for MPS and Cplex LP helps

GUSEK 0.2.0 (06/12/2008)

First public release. Using GLPK 4.34.

Last changed in 15/03/2011 by Luiz Bettoni

Project Web Hosted by