Grafo de Conflitos: Constru¸
c˜
ao e
Aplica¸
c˜
oes em Problemas de
Programa¸
c˜
ao Inteira
Samuel Souza Brito
Universidade Federal de Ouro Preto
UNIVERSIDADE FEDERAL DE OURO PRETOOrientador: Haroldo Gambini Santos
Disserta¸c˜ao de Mestrado submetida ao Pro-grama de P´os-Gradua¸c˜ao em Ciˆencia da Com-puta¸c˜ao da Universidade Federal de Ouro Preto, como parte dos requisitos exigidos para a obten¸c˜ao do t´ıtulo de Mestre em Ciˆencia da Computa¸c˜ao.
Grafo de Conflitos: Constru¸
c˜
ao e
Aplica¸
c˜
oes em Problemas de
Programa¸
c˜
ao Inteira
Samuel Souza Brito
Universidade Federal de Ouro Preto
Catalogação: www.sisbin.ufop.br
B862g Brito, Samuel Souza.
Grafo de conflitos [manuscrito]: construção e aplicações em problemas de programação inteira / Samuel Souza Brito. - 2015.
81f.: il.: grafs; tabs.
Orientador: Prof. Dr. Haroldo Gambini Santos.
Dissertação (Mestrado) - Universidade Federal de Ouro Preto. Instituto de Ciências Exatas e Biológicas. Departamento de Computação. Programa de Pós-Graduação em Ciência da Computação.
Área de Concentração: Ciência da Computação.
1. Grafo (Sistema de computador). 2. Programação Inteira. 3. Programação heuristica. I. Santos, Haroldo Gambini. II. Universidade Federal de Ouro Preto. III. Titulo.
`
A minha m˜ae, Maria, pelo apoio e amor incondicional durante toda a minha trajet´oria de vida.
`
A Tamara, por acreditar no meu potencial e me incentivar desde o in´ıcio.
Resumo
Este trabalho explora a informa¸c˜ao estrutural de rela¸c˜oes entre vari´aveis bin´arias em problemas de Programa¸c˜ao Inteira por meio de grafos de conflitos. Tal estrutura possui um papel fundamental na constru¸c˜ao de m´etodos exatos e heur´ısticos de resolu¸c˜ao. Nesse sentido, o presente trabalho prop˜oe e desenvolve t´ecnicas baseadas na an´alise de grafos de conflitos para obten¸c˜ao de solu¸c˜oes fact´ıveis e limites duais fortes para problemas de Programa¸c˜ao Inteira. Foram desenvolvidas otimiza¸c˜oes nas t´ecnicas de detec¸c˜ao de conflitos, que permitiram a constru¸c˜ao r´apida de grafos densos mediante a an´alise de restri¸c˜oes. A obten¸c˜ao de limites duais fortes para programas inteiros ´e realizada por uma rotina desenvolvida para gera¸c˜ao de desigualdades v´alidas. Essa rotina ´e respons´avel por gerar cortes de clique e ciclo ´ımpar e inseri-los na relaxa¸c˜ao linear, refor¸cando os limites duais e acelerando a convergˆencia para a solu¸c˜ao ´otima. Para obter solu¸c˜oes fact´ıveis para programas bin´arios foi desenvolvido um resolvedor heur´ıstico, que utiliza as rela¸c˜oes l´ogicas entre vari´aveis para construir uma solu¸c˜ao inicial e melhor´a-la por meio de uma busca local. A busca local executa uma cadeia de movimentos a cada itera¸c˜ao, que permite corrigir a infactibilidade de uma solu¸c˜ao ou, at´e mesmo, saltar de uma solu¸c˜ao fact´ıvel para outra. Considerando a produ¸c˜ao de limites duais fortes, os resultados obtidos pela rotina de gera¸c˜ao de desigualdades desenvolvida mostraram uma convergˆencia mais r´apida em rela¸c˜ao `a rotina de separa¸c˜ao de cortes do resolvedor COIN-OR Branch-and-Cut. Em rela¸c˜ao `a obten¸c˜ao de factibilidade, o resolvedor heur´ıstico foi apto a gerar solu¸c˜oes para um n´umero significativo de problemas de Programa¸c˜ao Inteira Bin´aria, considerando tempos restritos de execu¸c˜ao.
Palavras-chave: Grafo de Conflitos, Programa¸c˜ao Inteira, Programa¸c˜ao Bin´aria, Heur´ısticas, Plano de Cortes, Cliques, Ciclos ´Impares.
Abstract
This work explores the structural information of relations between binary variables in Integer Programming problems using conflict graphs. Such structure has a fundamen-tal role in the construction of exact and heuristic solving methods. In this sense, the present work proposes and develops techniques based on the analysis of conflict graphs to obtain feasible solutions and strong dual bounds for Integer Programming problems. Optimizations were developed in the conflict detection techniques that allowed the fast construction of dense graphs through the constraints analysis. The obtaining of strong dual bounds for integer programs is performed by a routine developed for the generation of valid inequalities. This routine is responsible for generating clique and odd hole cuts and insert them into the linear relaxation, strengthening the dual bounds and accele-rating the convergence to the optimal solution. To obtain feasible solutions for binary programs it was developed a heuristic solver, which uses the logical relations between variables to build an initial solution and improve it through a local search. Local search performs chains of movements at each iteration, which allows to fix infeasibilities of a solution or even jump from a feasible solution to another. Considering the production of strong dual bounds, the results obtained by the developed routine for generating inequalities showed a faster convergence compared with the cut separation routine of COIN-OR Branch-and-Cut solver. Regarding the production of feasible solutions, the heuristic solver was able to generate solutions to a significant number of Integer Binary Programming problems considering restricted runtimes.
Keywords: Conflict Graph, Integer Programming, Binary Programming, Heuristics, Cutting Planes, Cliques, Odd Holes.
Declara¸
c˜
ao
Esta disserta¸c˜ao ´e resultado de meu pr´oprio trabalho, exceto onde referˆencia explici-tat´oria ´e feita ao trabalho de outros, e n˜ao foi submetida para outra qualifica¸c˜ao nesta nem em outra universidade.
Samuel Souza Brito
Agradecimentos
Agrade¸co primeiramente `a minha m˜ae, Maria, que por muitas vezes abriu m˜ao de seus sonhos para que os meus tornassem realidade. E, tamb´em, por ser meu maior exemplo de vida. Ao meu pai, Elias, pela motiva¸c˜ao durante essa jornada. Ao meu irm˜ao, Thalles, pelo apoio cont´ınuo e uni˜ao.
`
A minha namorada, Tamara, pela dedica¸c˜ao, incentivo e carinho. Pelos belos mo-mentos e tamb´em pela paciˆencia e companheirismo nos momo-mentos mais dif´ıceis desta caminhada.
Aos amigos e familiares, em especial minha av´o, Maria das Gra¸cas, pessoa admir´avel que foi minha grande fonte de incentivo e perseveran¸ca.
Ao professor Haroldo, por todos estes anos de orienta¸c˜ao, desde o meu terceiro per´ıodo de gradua¸c˜ao. Pela confian¸ca, paciˆencia e dedica¸c˜ao durante todo esse tempo, me proporcionando um imensur´avel conhecimento, que vai al´em da simples forma¸c˜ao acadˆemica.
`
A UFOP e aos professores do DECOM pela oportunidade oferecida e pelos ensina-mentos passados.
`
A todos que ajudaram direta ou indiretamente neste trabalho.
Sum´
ario
Lista de Figuras xix
Lista de Tabelas xxi
Nomenclatura 1
1 Introdu¸c˜ao 3
1.1 Objetivos . . . 5
1.1.1 Objetivos Gerais . . . 5
1.1.2 Objetivos Espec´ıficos . . . 6
1.2 Estrutura do Trabalho . . . 6
2 Grafo de Conflitos 7 2.1 Constru¸c˜ao de Grafos de Conflitos . . . 8
2.2 Detec¸c˜ao de Cliques em Restri¸c˜oes Menos Estruturadas . . . 10
2.2.1 Cliques Envolvendo Ativa¸c˜ao de Vari´aveis . . . 11
2.2.2 Cliques Envolvendo Complementos de Vari´aveis . . . 12
2.2.3 Exemplo de Detec¸c˜ao de Cliques . . . 12
3 Planos de Corte 15 3.1 Separa¸c˜ao de Cortes de Clique . . . 16
3.2 Separa¸c˜ao de Cortes de Ciclo ´Impar . . . 18
4 Uma Abordagem Heur´ıstica Baseada em Grafos de Conflitos para a Solu¸c˜ao de Programas Bin´arios 21 4.1 Restri¸c˜oes Comuns em Programas Bin´arios . . . 22
4.2 Fase Construtiva . . . 23
4.3 Busca Local . . . 25
5 Experimentos Computacionais 29 5.1 Caracteriza¸c˜ao das instˆancias . . . 29
5.2 Constru¸c˜ao de Grafos de Conflitos . . . 31
5.3 Separa¸c˜ao de Cortes . . . 32
5.4 Resolvedor Heur´ıstico para Problemas de Programa¸c˜ao Bin´aria . . . 34
6 Considera¸c˜oes Finais 37 6.1 Trabalhos Futuros . . . 38
Referˆencias Bibliogr´aficas 39 A Detalhamento dos Experimentos Computacionais 43 A.1 Informa¸c˜oes Sobre as Instˆancias Utilizadas e seus Grafos de Conflitos . . 43
A.2 Melhoria dos Limites Duais por Instˆancia . . . 48
Lista de Figuras
2.1 Um exemplo de grafo de conflitos. . . 8
2.2 Um grafo de conflitos para P. . . 13 3.1 Exemplo de um grafoK3em que oliftingpoderia ser aplicado,
transformado-o em um K4. . . 18
3.2 Exemplo de ciclo ´ımpar e poss´ıvel extens˜ao para uma roda. . . 19
4.1 Grafo de conflitos para PB e seu grafo complementar ponderado. . . 25 5.1 Melhoria do limite dual para instˆancias da MIPLIB, usando as rotinas
lnpsep, npsep e cgl. . . 33 5.2 Melhoria do limite dual para instˆancias da INRC, usando as rotinas
lnp-sep, npsep ecgl. . . 33 5.3 Melhoria do limite dual para instˆancias do Telebus, usando as rotinas
lnpsep, npsep e cgl. . . 34
Lista de Tabelas
5.1 Resumo das caracter´ısticas dos conjuntos de instˆancias. . . 30
5.2 Resumo dos resultados obtidos na constru¸c˜ao dos grafos de conflitos. . . 31
5.3 Produ¸c˜ao de solu¸c˜oes fact´ıveis em 60 e 300 segundos. . . 35
A.1 Dados das instˆancias da MIPLIB, incluindo grafos de Conflitos. . . 43
A.2 Dados das instˆancias da INRC, incluindo grafos de Conflitos. . . 46
A.3 Dados das instˆancias do Telebus, incluindo grafos de Conflitos. . . 48
A.4 Melhoria dos limites duais para instˆancias da MIPLIB. . . 50
A.5 Melhoria dos limites duais para instˆancias da INRC. . . 53
A.6 Melhoria dos limites duais para instˆancias do Telebus. . . 56
Nomenclatura
CBC COIN-OR Branch-and-Cut
CGL COIN-OR Cut Generation Library
COIN-OR COmputational INfrastructure for Operations Research
GLPK GNU Linear Programming Kit
GUB Generalized Upper Bound
INRC International Nurse Rostering Competition
LHS Left-Hand Side - Lado Esquerdo da Restri¸c˜ao MIPLIB Mixed Integer Problem Library
OC Otimiza¸c˜ao Combinat´oria
PB Programa Linear Bin´ario
PI Programa¸c˜ao Inteira
PO Pesquisa Operacional
RHS Right-Hand Side - Lado Direito da Restri¸c˜ao RNA Randomized Non-Ascendent Method
SPP Set Packing Polytope - Politopo de Empacotamento de N´os
Cap´ıtulo 1
Introdu¸
c˜
ao
Em sua forma geral, um problema de otimiza¸c˜ao tem como objetivo maximizar ou minimizar uma fun¸c˜ao definida sobre um certo dom´ınio. Especificamente, a Otimiza¸c˜ao Combinat´oria (OC) trata do caso em que esse dom´ınio ´e finito. Tais problemas surgem numa infinidade de aplica¸c˜oes da vida real, como o roteamento de ve´ıculos, aloca¸c˜ao de trabalhadores ou m´aquinas a tarefas (Allahverdi et al., 2008), Biologia Computacional (Lancia, 2004), escalonamento de projetos (Pritsker et al., 1969), entre outros.
Uma forma de resolver problemas de OC seria simplesmente enumerar todas as poss´ıveis solu¸c˜oes e guardar aquela de melhor valor da fun¸c˜ao objetivo. Por´em, essa abor-dagem se torna invi´avel na pr´atica, pois frequentemente o n´umero de solu¸c˜oes poss´ıveis cresce exponencialmente em fun¸c˜ao do tamanho do problema. Dessa forma, surge a necessidade de desenvolver ou aprimorar t´ecnicas mais apuradas.
No campo dos modelos matem´aticos destaca-se a Programa¸c˜ao Linear Inteira, tamb´em referida como Programa¸c˜ao Inteira (PI) (Wolsey, 1998). Um problema de PI pode ser visto como um problema de programa¸c˜ao matem´atica em que a fun¸c˜ao objetivo, bem como as restri¸c˜oes, s˜ao lineares, por´em uma ou mais vari´aveis de decis˜ao podem apenas assumir valores inteiros. O modelo formal de um problema de PI pode ser expresso como:
4 Introdu¸c˜ao
Minimize:
cTx+hTy (1.1)
Sujeito a:
Ax+Gy ≤b (1.2)
x≥0, y ≥0 (1.3)
x∈Zn, y ∈
Rp (1.4)
onde x representa um conjunto de vari´aveis de decis˜ao inteiras de dimens˜ao n, sujeitas a um vetor de custos c, e y um conjunto de vari´aveis de decis˜ao cont´ınuas de dimens˜ao p, sujeitas a um vetor de custos h.
Uma informa¸c˜ao impl´ıcita dispon´ıvel na modelagem de problemas de PI e fundamen-tal para sua resolu¸c˜ao ´e o grafo de conflitos. Um grafo de conflitos representa rela¸c˜oes l´ogicas entre vari´aveis de decis˜ao bin´arias. Mais precisamente, v´ertices representam vari´aveis e seus complementos, enquanto uma aresta entre dois v´ertices indica que a ativa¸c˜ao simultˆanea de ambas as vari´aveis, representadas pelos v´ertices em quest˜ao, pro-duz uma solu¸c˜ao infact´ıvel. A constru¸c˜ao do grafo se concentra em analisar as restri¸c˜oes do problema para encontrar rela¸c˜oes do tipo “se xi = 1, ent˜ao xj = 0”, ou seja, xi e xj n˜ao podem ser ativadas ao mesmo tempo em uma solu¸c˜ao fact´ıvel. Assim, essa rela¸c˜ao l´ogica seria representada no grafo de conflitos por uma aresta entre os v´ertices que representem as vari´aveis xi e xj.
O modo tradicional de constru¸c˜ao de grafos de conflitos, constitu´ıdo de t´ecnicas
probing (Savelsbergh, 1994), realiza a explora¸c˜ao sistem´atica em cada restri¸c˜ao, anali-sando pares de vari´aveis e as poss´ıveis combina¸c˜oes de valores para elas. Desse modo, o processo de constru¸c˜ao tende a ser lento para problemas de m´edio a grande porte. Nesse sentido, o presente trabalho explora a r´apida detec¸c˜ao de conflitos como forma de acelerar o processo de constru¸c˜ao do grafo. Para isso, ´e utilizada uma estrat´egia de detec¸c˜ao de cliques em restri¸c˜oes. Assim, o processo de an´alise de uma restri¸c˜ao que an-teriormente possu´ıa complexidade computacional quadr´atica (O(n2)) pode ser reduzida a complexidade O(nlogn), onden representa o n´umero de vari´aveis n˜ao-nulas contidas na restri¸c˜ao.
Introdu¸c˜ao 5
delas constitui de um rotina de gera¸c˜ao de desigualdades v´alidas, tamb´em denominadas como cortes. Essa rotina visa a melhoria dos limites duais fornecidos pela relaxa¸c˜ao linear do programa inteiro, permitindo a acelera¸c˜ao da convergˆencia para a solu¸c˜ao ´otima. Devido `a sua grande importˆancia, a gera¸c˜ao e inser¸c˜ao de cortes est´a presente nos atuais resolvedores de PI baseados emBranch-and-Bound (Land e Doig, 1960), tais comoIBM ILOG CPLEX,Gurobi Optimizer,COmputation INfrastructure for Operations Research
(COIN-OR) Branch-and-Cut (Lougee-Heimer, 2003), entre outros.
A segunda abordagem desenvolvida consiste de um resolvedor heur´ıstico para pro-blemas de Programa¸c˜ao Inteira Bin´aria (ou Programa¸c˜ao Bin´aria). Esse resolvedor foi constru´ıdo com o objetivo de encontrar uma solu¸c˜ao fact´ıvel em tempos computacionais restritos. Para isso, utiliza as rela¸c˜oes l´ogicas entre vari´aveis, contidas no grafo de con-flitos, para construir uma solu¸c˜ao inicial. Em seguida, a solu¸c˜ao ´e melhorada por meio de uma busca local, que executa uma cadeia de movimentos a cada itera¸c˜ao, tamb´em gerada a partir da an´alise do grafo associado ao problema. A execu¸c˜ao de cadeias de movimentos permite corrigir a infactibilidade de uma solu¸c˜ao ou, at´e mesmo, saltar de uma solu¸c˜ao fact´ıvel para outra. A necessidade de realizar cadeias de movimentos se d´a devido ao grande n´umero de vari´aveis de decis˜ao e de vari´aveis auxiliares presentes em programas bin´arios, de modo que ´e bem prov´avel que a altera¸c˜ao do valor de uma vari´avel por vez produzir´a somente solu¸c˜oes infact´ıveis.
1.1
Objetivos
Nesta se¸c˜ao s˜ao apresentados os principais objetivos deste trabalho.
1.1.1
Objetivos Gerais
6 Introdu¸c˜ao
1.1.2
Objetivos Espec´ıficos
Para alcan¸car o objetivo geral faz-se necess´ario a obten¸c˜ao dos seguintes objetivos es-pec´ıficos:
• analisar e estudar formas de constru¸c˜ao de grafos de conflitos;
• propor e implementar mecanismos para acelerar a constru¸c˜ao de grafos de conflitos;
• desenvolver uma rotina de gera¸c˜ao de desigualdades v´alidas, que utiliza as rela¸c˜oes l´ogicas representadas no grafo;
• desenvolver um resolvedor heur´ıstico para Programa¸c˜ao Bin´aria baseado em busca local e grafo de conflitos, capaz de resolver problemas em tempos computacionais restritos;
• realizar experimentos computacionais utilizando conjuntos de instˆancias relevantes presentes na literatura.
1.2
Estrutura do Trabalho
O restante deste trabalho est´a organizado da seguinte maneira:
• Cap´ıtulo 2: apresenta em detalhes o conceito de grafo de conflitos, sua constru¸c˜ao tradicional e mecanismos propostos para acelerar o processo de constru¸c˜ao;
• Cap´ıtulo 3: descreve a rotina de separa¸c˜ao de cortes constru´ıda a partir da an´alise de grafo de conflitos;
• Cap´ıtulo 4: apresenta um resolvedor heur´ıstico baseado em grafo de conflitos e busca local para problemas de Programa¸c˜ao Bin´aria;
• Cap´ıtulo 5: apresenta os experimentos computacionais realizados;
Cap´ıtulo 2
Grafo de Conflitos
Um grafo de conflitos representa rela¸c˜oes l´ogicas entre vari´aveis bin´arias: v´ertices re-presentam vari´aveis (e seus complementos) e arestas s˜ao usadas para indicar que duas vari´aveis n˜ao podem assumir o valor 1 simultaneamente. Essas arestas s˜ao conhecidas como conflitos ou arestas de adjacˆencia. Para duas vari´aveis bin´arias existem quatro poss´ıveis rela¸c˜oes l´ogicas (Atamt¨urk et al., 2000):
xi = 1 ⇒xj = 0 ⇐⇒ xi + xj ≤1
xi = 0 ⇒xj = 0 ⇐⇒ (1−xi) + xj ≤1
xi = 1 ⇒xj = 1 ⇐⇒ xi + (1−xj) ≤1
xi = 0 ⇒xj = 1 ⇐⇒ (1−xi) + (1−xj) ≤1 A Figura 2.1 apresenta um grafo de conflitos para as seguintes inequa¸c˜oes:
xi + (1−xj) ≤1
xi + xj ≤1
(1−xj) + xk ≤1
(1−xj) + (1−xk) ≤1
Nessa figura, o v´ertice i representa a vari´avel xi e o v´ertice ¯i representa (1 − xi), o
8 Grafo de Conflitos
i
j
k
j
i
k
Figura 2.1: Um exemplo de grafo de conflitos.
complemento bin´ario de xi. A rela¸c˜ao entre uma vari´avel e seu complemento ´e forte: exatamente uma delas deve ser igual a 1 em qualquer solu¸c˜ao fact´ıvel. Assim, existe uma aresta envolvendo cada vari´avel e seu respectivo complemento, representada por uma linha pontilhada no grafo de exemplo.
Dado um problema de PI ´e poss´ıvel construir um grafo de conflitos G = (V, A), com um conjunto de v´erticesV e um conjunto de arestas A, usando t´ecnicas de probing
baseadas em considera¸c˜oes de factibilidade. Tais t´ecnicas s˜ao apresentadas nas se¸c˜oes a seguir. Visando a facilitar a apresenta¸c˜ao, s˜ao considerados problemas de PI cujas vari´aveis de decis˜ao s˜ao todas bin´arias (Programa¸c˜ao Bin´aria). Vale ressaltar que as t´ecnicas podem ser aplicadas em qualquer problema de PI com vari´aveis bin´arias.
2.1
Constru¸
c˜
ao de Grafos de Conflitos
A constru¸c˜ao de grafos de conflitos ´e tipicamente realizada por meio de t´ecnicas de
probing (Savelsbergh, 1994). A ideia b´asica ´e analisar o impacto da atribui¸c˜ao de valores para cada par de vari´aveis em cada restri¸c˜ao. Cada restri¸c˜ao i∈ {1, ..., m}, onde m ´e o n´umero de restri¸c˜oes do problema, pode ser reescrita como:
X
j∈N
aijxj ≤bi (2.1)
onde N ´e o conjunto de ´ındices das vari´aveis bin´arias x, aij ´e o coeficiente da vari´avel
Grafo de Conflitos 9
serem analisadas em rela¸c˜ao `a restri¸c˜aoi, atribu´ıdas com valoresuev, respectivamente. Seja:
Lxˆj=u, xˆk=v
i =
X
j∈Ni−\{ˆj,ˆk}
aij +aiˆju+aiˆkv (2.2)
onde Ni− = {j ∈ N : aij < 0}. Dessa forma, Lxˆj=u, xˆk=v
i ´e um limite inferior para o
lado esquerdo (LHS) da restri¸c˜ao i, considerando as atribui¸c˜oes xˆj = u e xˆk = v. Se
Lxˆj=u, xˆk=v
i > bi, ent˜ao existe um conflito entre as atribui¸c˜oes de xˆj e xˆk.
Realizando esse c´alculo para cada combina¸c˜ao de valores de duas vari´aveis bin´arias, considerando cada par de vari´aveis em cada restri¸c˜ao, ´e poss´ıvel criar um grafo de con-flitos para qualquer problema de PI em O(m×n2).
Uma caracter´ıstica comum observada em programas inteiros ´e a repeti¸c˜ao de valo-res de coeficientes de vari´aveis em uma mesma valo-restri¸c˜ao. A partir dessa informa¸c˜ao, foi poss´ıvel desenvolver uma otimiza¸c˜ao simples, mas eficiente, que no momento do desenvol-vimento deste trabalho n˜ao havia sido abordada na literatura. Tal otimiza¸c˜ao consiste em agrupar vari´aveis com coeficientes iguais em cada restri¸c˜ao, visando a diminuir o tamanho do problema a ser tratado. Por exemplo, a restri¸c˜ao:
x1+ 3x2 + 3x3+x4+x5+ 3x6 ≤5 (2.3)
pode ter suas vari´aveis agrupadas em dois grupos: g′ ={x1, x4, x5} e g′′ ={x2, x3, x6}. Assim, ao inv´es de realizar c´alculos para cada par de vari´aveis, o limite para LHS ´e calculado apenas uma ´unica vez para cada par de coeficientes diferentes (e uma ´unica an´alise com pares de coeficientes iguais para cada grupo gerado).
10 Grafo de Conflitos
X
j∈S(N)
xj ≤1 (2.4)
onde S(N) ´e um subconjunto dos ´ındices das vari´aveis bin´arias x. Todas as vari´aveis contidas em restri¸c˜oes desse tipo apresentam conflitos entre si, gerando um clique no grafo. Assim, n˜ao ´e necess´ario aplicar probing.
A detec¸c˜ao de cliques tamb´em pode ser realizada em restri¸c˜oes menos estruturadas, isto ´e, restri¸c˜oes que n˜ao apresentem conflitos de forma expl´ıcita. A se¸c˜ao seguinte apresenta propostas desenvolvidas neste trabalho para detectar cliques em restri¸c˜oes, objetivando a acelera¸c˜ao do processo de constru¸c˜ao de grafos de conflitos.
2.2
Detec¸
c˜
ao de Cliques em Restri¸
c˜
oes Menos
Estrutu-radas
Cliques podem ser detectados percorrendo cada restri¸c˜ao uma ´unica vez, utilizando uma ordena¸c˜ao dos coeficientes das vari´aveis de decis˜ao. Desse modo, apenas pares de vari´aveis consecutivas s˜ao analisadas. Considerando ni como o n´umero de vari´aveis com coeficientes n˜ao-nulos da restri¸c˜ao i, o processo de detec¸c˜ao de cliques ´e feito em O(nilogni).
Grafo de Conflitos 11
2.2.1
Cliques Envolvendo Ativa¸
c˜
ao de Vari´
aveis
Cliques envolvendo a ativa¸c˜ao de vari´aveis podem ser detectados por meio da an´alise de restri¸c˜oes com coeficientes ordenados de forma crescente. A seguinte nota¸c˜ao ser´a usada:
˜
aik : k-´esimo menor coeficiente da restri¸c˜ao i;
´
aik : ´ındice do k-´esimo menor coeficiente da restri¸c˜ao i;
Si− : soma de todos os coeficientes negativos da restri¸c˜ao i;
ni : n´umero de vari´aveis com coeficientes n˜ao-nulos da restri¸c˜ao i.
Sejamkek+ 1 as posi¸c˜oes de duas var´aveis consecutivas a serem analisadas. A soma de todos os coeficientes negativos excluindo essas vari´aveis ´e dada por:
Dx´aik,x´aik+1
i =S
−
i −min(0,˜aik)−min(0,a˜ik+1) (2.5)
Assim, um limite inferior para o lado esquerdo da restri¸c˜ao iquando as vari´aveis com k e k+ 1 menores coeficientes s˜ao ativadas (atribu´ıdas com o valor 1) pode ser calculado como:
LHSx´aik=1,x´aik+1=1
i =D
xaik´ ,x´aik+1
i + ˜aik+ ˜aik+1 (2.6)
Como os coeficientes est˜ao ordenados de forma crescente, LHSx´aik=1,xaik´ +1=1
i ´e
mo-notonicamente crescente `a medida que o valor dek aumenta. Dessa forma, se o valor de LHSx´aik=1,xaik´ +1=1
i ´e maior do que o valor debi, ent˜ao existe um clique envolvendo todas
as vari´aveis da posi¸c˜ao k at´e a posi¸c˜ao ni. Al´em disso, ´e poss´ıvel descartar a existˆencia de tais cliques na restri¸c˜ao, checando se o valor deLHS
x´ain
i−1=1,xain´ i=1
i ´e menor ou igual
a bi, ou seja, verificando se a ativa¸c˜ao simultˆanea das duas vari´aveis com os maiores
12 Grafo de Conflitos
2.2.2
Cliques Envolvendo Complementos de Vari´
aveis
Uma ideia semelhante `a subse¸c˜ao anterior pode ser usada para detectar cliques que envolvam o complemento de vari´aveis bin´arias. Para isso, os coeficientes devem estar em ordem decrescente. A seguinte nota¸c˜ao ser´a usada:
¨
aik : k-´esimo maior coeficiente da restri¸c˜ao i;
`
aik : ´ındice do k-´esimo maior coeficiente da restri¸c˜ao i;
Si− : soma de todos os coeficientes negativos da restri¸c˜ao i;
ni : n´umero de vari´aveis com coeficientes n˜ao-nulos da restri¸c˜ao i.
Sejam k e k+ 1 as posi¸c˜oes de duas var´aveis consecutivas a serem analisadas. Um limite inferior para o lado esquerdo da restri¸c˜ao i quando o complemento das vari´aveis com k ek+ 1 maiores coeficientes s˜ao ativadas pode ser calculado como:
LHSxaik` =0,x`aik+1=0
i =S
−
i −min(0,¨aik)−min(0,¨aik+1) (2.7)
Como os coeficientes est˜ao ordenados de forma decrescente,LHSxaik` =1,x`aik+1=1
i ´e
mo-notonicamente crescente `a medida que o valor dek aumenta. Dessa forma, se o valor de LHSx`aik=1,xaik` +1=1
i ´e maior do que o valor debi, ent˜ao existe um clique envolvendo todos
os complementos das vari´aveis da posi¸c˜aok at´e a posi¸c˜aoni. Al´em disso, ´e poss´ıvel des-cartar a existˆencia de tais cliques na restri¸c˜ao, checando se o valor deLHS
xain`
i−1=1,xain` i=1 i
´e menor ou igual a bi, ou seja, verificando se a ativa¸c˜ao simultˆanea dos complementos das duas vari´aveis com os menores coeficientes dessa restri¸c˜ao n˜ao gera infactibilidade.
2.2.3
Exemplo de Detec¸
c˜
ao de Cliques
Grafo de Conflitos 13
Minimize: x1 +x2+x3+x4
Sujeito a:
x1+x2+x3 ≥2 (2.8)
−2x1+ 3x2+ 4x3+ 5x4 ≤4 (2.9)
x1, . . . , x4 ∈ {0,1}
A Figura 2.2 mostra um grafo de conflitos para o Programa Bin´ario P. Arestas representam conflitos entre vari´aveis e/ou complementos de vari´aveis.
x
1
x
2x
3x
2x
1
x
3x
4x
4Figura 2.2: Um grafo de conflitos para P.
A constru¸c˜ao do grafo inicia inserindo as arestas triviais, entre vari´aveis e seus com-plementos (linhas pontilhadas). Em seguida ´e analisada a restri¸c˜ao da equa¸c˜ao 2.8. ´E necess´ario convertˆe-la para o formato padr˜ao utilizado (Pj∈Naijxj ≤bi), resultando na seguinte restri¸c˜ao:
−x1−x2−x3 ≤ −2 (2.10)
Como os coeficientes s˜ao iguais n˜ao ´e necess´ario executar um algoritmo de ordena¸c˜ao. A pr´oxima etapa ´e calcular os limites inferiores para o LHS dessa restri¸c˜ao. Para cada par de vari´aveis consecutivas, o valor de Lxˆj=1, xˆj+1=1
2.10 ser´a sempre menor ou igual a -2
14 Grafo de Conflitos
coeficientes. Nesse caso, como todos s˜ao iguais, qualquer par pode ser escolhido, por exemplo x2 e x3, calculando Lx2=1, x3=1
2.10 e verificando que o valor ´e igual a -3, menor
do que o lado direito da restri¸c˜ao. O pr´oximo passo ´e investigar cliques que envolvam complementos de vari´aveis. Calculando Lxˆj=0, xˆj+1=0
2.10 para o primeiro par de vari´aveis
subsequentes (x1 e x2) obtem-se o valor -1, que ´e maior do que o RHS. Dessa forma,
´e detectado um clique que envolve todos os complementos de vari´aveis dessa restri¸c˜ao. Assim, cada par de conflitos desse clique ´e inserido no grafo.
A an´alise prossegue para a restri¸c˜ao da equa¸c˜ao 2.9. Essa restri¸c˜ao est´a ordenada em ordem crescente, podendo iniciar a busca por cliques com vari´aveis ativas. Calculando Lxˆj=1, xˆj+1=1
2.9 para cada par de vari´aveis consecutivas, ´e poss´ıvel detectar um clique
en-volvendo a ativa¸c˜ao das vari´aveis x2 at´e x4 (Lx2=1, x3=12.9 = 5). Cada par de conflitos ´e ent˜ao inserido no grafo. Em seguida, cliques envolvendo complementos de vari´aveis s˜ao testados. Para isso, ´e necess´ario ordenar os coeficientes em ordem decrescente (sendo necess´ario apenas percorrer a restri¸c˜ao em ordem inversa). ´E poss´ıvel detectar a ine-xistˆencia de cliques envolvendo complementos de vari´aveis calculando Lxˆj=0, xˆj+1=0
2.8 para
as duas vari´aveis de menor coeficiente (x1 e x2). Para essas vari´aveis, o valor do limite
Cap´ıtulo 3
Planos de Corte
Uma aplica¸c˜ao prim´aria para grafos de conflitos ´e a gera¸c˜ao de desigualdades v´alidas (cortes) derivadas de um empacotamento de n´os (SPP) (Padberg, 1973) para refor¸car a relaxa¸c˜ao da programa¸c˜ao linear. Diversos trabalhos apresentam a gera¸c˜ao e aplica¸c˜ao de desigualdades v´alidas aplicadas a problemas modelados por PI. Entre eles, Atamt¨urk et al. (2000) utilizaram o grafo de conflitos constru´ıdo por probing, e estendido por meio de heur´ısticas baseadas em factibilidade e otimalidade, para gerar desigualdades de clique. Experimentos computacionais demonstraram que a melhoria do limite in-ferior contribuiu para aprimorar o desempenho do resolvedor MINTO 3.0 (Nemhauser et al., 1994). Analogamente, Hoffman e Padberg (1993) utilizaram grafos de conflitos para gerar desigualdades v´alidas para problemas de escalonamento de tripula¸c˜oes a´ereas, considerando desigualdades de cliques, ciclos ´ımpares e anti-holes. Achterberg (2007) apresentou heur´ısticas compostas de t´ecnicas SAT para resolvedores de Programa¸c˜ao Inteira Mista, gerando desigualdades v´alidas a partir da an´alise de solu¸c˜oes infact´ıveis e de informa¸c˜oes associadas ao branching. A mesma ideia foi desenvolvida em paralelo por Sandholm e Shields (2006).
As classes mais comuns de cortes para SPP s˜ao os cortes de clique e de ciclos ´ımpares (odd holes). Uma desigualdade de clique para um conjunto C de vari´aveis conflitantes pode ser definido como:
X
j∈C
xj ≤1 (3.1)
16 Planos de Corte
Uma desigualdade de ciclo ´ımpar envolvendo um conjunto C de vari´aveis conflitantes pode ser definida como:
X
j∈C
xj ≤ ⌊|C|
2 ⌋ (3.2)
´
E importante notar que, quando um v´ertice xj representar o complemento de uma vari´avel, os termos xj das equa¸c˜oes 3.1 e 3.2 devem ser substitu´ıdos por 1−xj.
Na pr´atica, os cortes de clique apresentam um papel mais importante (Borndorfer, 1998) do que os cortes de ciclo ´ımpar. O impacto de tais cortes foi avaliado em alguns problemas dif´ıceis de timetabling (Avella e Vasil’ev, 2005; Burke et al., 2012). A con-tribui¸c˜ao para a melhoria do limite inferior de problemas de PI obtida pela inser¸c˜ao de desigualdades de ciclo ´ımpar ´e pequena (Borndorfer, 1998; M´endez-D´ıaz e Zabala, 2008). Entretanto, sua inclus˜ao em procedimentosbranch-and-cut ´e pouco custosa, uma vez essas desigualdades podem ser separadas em tempo polinomial usando algoritmos de caminhos m´ınimos (Grotschel et al., 1993; Rebennack, 2009).
3.1
Separa¸
c˜
ao de Cortes de Clique
O algoritmo aqui proposto para gera¸c˜ao de cortes considera uma rotina de separa¸c˜ao de cliques agressiva: o objetivo n˜ao ´e encontrara desigualdade de clique mais violada, mas
todas as desigualdades de clique violadas. Alguns trabalhos indicam que essa ´e a melhor estrat´egia. Por exemplo, no trabalho de Burke et al. (2012) os resultados computacionais motivaram a inclus˜ao de cortes n˜ao maximamente violados, encontrados durante a busca do clique mais violado em um algoritmo debranch-and-bound. O resultado ´e consistente com relatos de aplica¸c˜oes de outros cortes em diferentes modelos, tais como cortes de Chv`atal-Gomory (Fischetti e Lodi, 2007). A op¸c˜ao de inserir um grande n´umero de desi-gualdades violadas ao mesmo tempo ´e tamb´em respons´avel para refor¸car a importˆancia dos cortes de Gomory (Cornu´ejols, 2007).
A rotina de separa¸c˜ao de cliques tem dois principais componentes:
Planos de Corte 17
2. um m´odulo de lifting, que estende os cliques gerados pelo m´odulo anterior consi-derando o grafo de conflitos completo.
O m´odulo de separa¸c˜ao de cliques foi implementado usando uma vers˜ao melhorada do algoritmo Bron-Kerbosch (Bron e Kerbosch, 1973). Essa vers˜ao implementa uma regra de pivoteamento otimizada (Brito e Santos, 2011) para acelerar a descoberta de cliques maximais com altos pesos. Tal regra atribui prioridade maior para visitar primeiramente n´os com alto grau modificado, isto ´e, soma do grau do n´o e de seus vizinhos, e com pesos maiores. Embora esse algoritmo tenha um desempenho exponencial em seu pior caso, a regra de pivoteamento heur´ıstica se torna apropriada n˜ao somente para execu¸c˜ao no contexto de enumera¸c˜ao mas tamb´em para execu¸c˜ao com tempos restritos, j´a que os cliques mais violados tendem a ser descobertos primeiro. Apesar disso, nos experimen-tos realizados, todas as desigualdades de cliques violadas puderam ser enumeradas em fra¸c˜oes de segundos usando essa abordagem. Vale ressaltar que mesmo se apenas um subconjunto de cliques for inserido durante a execu¸c˜ao de um algoritmo de branch-and-cut, a melhor solu¸c˜ao n˜ao seria perdida, apenas resultaria em uma convergˆencia mais lenta.
Ap´os gerar um clique, o m´odulo delifting ´e executado. Trata-se de um m´etodo guloso que seleciona a cada itera¸c˜ao a vari´avel com menor custo reduzido e verifica se ela pode ser inserida no clique, ou seja, se ela tem conflito com todas outras contidas no clique atual. Para isso, ´e considerado o grafo de conflitos completo, incluindo vari´aveis com valores inteiros na relaxa¸c˜ao linear.
A importˆancia da realiza¸c˜ao dolifting em desigualdades de clique pode ser explicada com o grafo de conflitos da Figura 3.1. V´ertices dentro da ´area cinza indicam vari´aveis com valores n˜ao-nulos na solu¸c˜ao fracion´aria. Nesta solu¸c˜ao, somente os n´os x2, x3 e x4 poderiam contribuir para definir a desigualdade de clique m´aximo violada. Apesar
18 Planos de Corte
x
2
x
3 x4
x
1
Figura 3.1: Exemplo de um grafo K3 em que o lifting poderia ser aplicado, transformado-o em um K4.
3.2
Separa¸
c˜
ao de Cortes de Ciclo ´Impar
A separa¸c˜ao de cortes de ciclo ´ımpar ´e feita da mesma forma que a desenvolvida no trabalho de Rebennack (2009), utilizando um grafo auxiliar G′ = (V′, A′). Esse grafo ´e criado a partir do grafo de conflitos original (G= (V, A)), da seguinte forma: para cada v´ertice xv ∈V s˜ao criados dois v´ertices x′v e xv′′ em V′. Para cada arco (xu, xv)∈A s˜ao criados dois arcos (x′u, x′′v) e (x′′u, x′v) em A′, com pesos calculados da seguinte forma:
peso(u, v) = 1−x
∗
u −x
∗
v
2 (3.3)
onde x∗u e x∗v representam os valores das vari´aveis xu exv na relaxa¸c˜ao linear.
Ap´os a cria¸c˜ao do grafo auxiliar, a busca por desigualdades v´alidas ´e dada da seguinte forma: para cada v´ertice xu ∈ V ´e encontrado o caminho mais curto de x′u para x′′u no grafo auxiliar, utilizando o algoritmo de Dijkstra. As vari´aveis representadas pelos v´ertices contidos nesse caminho m´ınimo formam um ciclo ´ımpar, uma vez que o grafo auxiliar ´e um grafo bipartido. Para saber se a desigualdade gerada por esse ciclo ´ımpar ´e uma desigualdade v´alida basta verificar se o valor do caminho m´ınimo ´e menor do que 0,5. Em caso positivo, um corte de ciclo ´ımpar foi encontrado.
Planos de Corte 19
x
8
x
5
x
2x
1
x
4
x
3x
7
x
6
Figura 3.2: Exemplo de ciclo ´ımpar e poss´ıvel extens˜ao para uma roda.
da Figura 3.2. O m´odulo de extens˜ao desenvolvido para desigualdades de ciclo ´ımpar consiste em encontrar um centro de roda mediante a sele¸c˜ao de vari´aveis ordenadas em ordem crescente de custo reduzido. Para um ciclo ´ımpar com vari´aveisC e um conjunto W de candidatos a serem inclu´ıdos no centro da roda de C, a seguinte desigualdade ´e
v´alida:
X
j∈W
⌊|C|
2 ⌋xj +
X
j∈C
xj ≤ ⌊|C|
Cap´ıtulo 4
Uma Abordagem Heur´ıstica Baseada
em Grafos de Conflitos para a Solu¸
c˜
ao
de Programas Bin´
arios
Um Programa Linear Bin´ario, ou simplesmente Programa Bin´ario (PB), pode ser ex-presso como:
Minimize:
cTx (4.1)
Sujeito a:
Ax≤b (4.2)
x∈ {0,1}n (4.3)
onde x representa um conjunto de vari´aveis de decis˜ao bin´arias de cardinalidade n, sujeitas a um vetor de custos c.
Apesar de sua simplicidade, a Programa¸c˜ao Bin´aria ´e uma das mais importantes t´ecnicas em Pesquisa Operacional (PO). A constante melhoria dos pacotes de otimiza¸c˜ao tem feito da Programa¸c˜ao Bin´aria uma ´otima escolha para resolver problemas dessa ´area. Entretanto, a obten¸c˜ao de solu¸c˜oes v´alidas em problemas cujo tempo ´e um fator limitante pode ser uma tarefa dif´ıcil. Assim, resolvedores tamb´em s˜ao avaliados considerando sua
22
Uma Abordagem Heur´ıstica Baseada em Grafos de Conflitos para a Solu¸c˜ao de Programas Bin´arios
habilidade de produzir rapidamente uma solu¸c˜ao inteira fact´ıvel.
Com o objetivo de obter solu¸c˜oes em tempos computacionais aceit´aveis, foi desen-volvida uma abordagem heur´ıstica para resolver Programas Bin´arios. Esta abordagem ´e caracterizada por duas fases: uma fase construtiva, que envolve a resolu¸c˜ao de um problema de Conjunto Independente M´aximo, e uma fase de busca local, que envolve a descoberta de cadeias de movimentos. Ambas as fases trabalham com informa¸c˜oes providas por um grafo de conflitos, constru´ıdo com as t´ecnicas apresentadas neste tra-balho. Apenas uma pequena altera¸c˜ao ´e feita nesse grafo: complementos de vari´aveis e seus conflitos s˜ao descartados, uma vez que a abordagem em quest˜ao, especialmente a fase construtiva, considera apenas a satisfa¸c˜ao de restri¸c˜oes por meio da ativa¸c˜ao de vari´aveis. Vale ressaltar que nenhum resolvedor linear caixa-preta ou m´etodos da fam´ılia
branch-and-bound s˜ao utilizados.
Na literatura existem trabalhos que utilizam grafos de conflitos na resolu¸c˜ao de pro-blemas bin´arios. LocalSolver, desenvolvido por Benoist et al. (2011), ´e um exemplo. Trata-se de um resolvedor comercial caracterizado por uma busca local composta por movimentos autˆonomos, movimentos similares a Cadeias de Eje¸c˜ao gerados a partir de um grafo de conflitos previamente constru´ıdo. Al´em do LocalSolver, outros resolve-dores utilizam internamente grafos de conflitos, que s˜ao combinados com t´ecnicas de Programa¸c˜ao por Restri¸c˜oes para gerar desigualdades v´alidas ou at´e mesmo solu¸c˜oes fact´ıveis (Achterberg, 2009; Van Hentenryck e Michel, 2005; Walser, 1997).
4.1
Restri¸
c˜
oes Comuns em Programas Bin´
arios
Uma Abordagem Heur´ıstica Baseada em Grafos de Conflitos para a Solu¸c˜ao
de Programas Bin´arios 23
Set Covering:X
i∈N
xi ≥1 , xi ∈ {0,1} (4.4)
Set Packing:X
i∈N
xi ≤1 , xi ∈ {0,1} (4.5)
Set Partition:X
i∈N
xi = 1 , xi ∈ {0,1} (4.6)
Ainda que para alguns Problemas Bin´arios uma solu¸c˜ao fact´ıvel ´e trivial, por exem-plo problemas com todas as restri¸c˜oes do tipo Set Covering ou Set Packing, diferentes restri¸c˜oes podem complicar significativamente esse passo inicial. A satisfa¸c˜ao de apenas uma restri¸c˜ao pode ser um problema NP-Completo se ele representa, por exemplo, o problema de Parti¸c˜ao de N´umeros (Garey e Johnson, 1979; Johnson et al., 1991). Al´em disso, os problemas tendem a ser mais dif´ıceis quando somente alguns, e ocultos, sub-conjuntos de todos os poss´ıveis vetores de incidˆencia, s˜ao fact´ıveis. Problemas de Set Partition s˜ao exemplos t´ıpicos desse tipo de situa¸c˜ao.
4.2
Fase Construtiva
Dado um Problema Bin´ario, uma solu¸c˜ao inicial ´e constru´ıda considerando a resolu¸c˜ao do subproblema induzido pelas restri¸c˜oes deSet Covering, Set Packing e Set Partition. Resolver esse subproblema corresponde a encontrar um conjunto independente ponde-rado no grafo de conflitos, isto ´e, encontrar um conjunto de vari´aveis que n˜ao possuem conflitos entre si, cujo somat´orio de seus pesos ´e maior ou igual a um limiar. Por sua vez, o problema de encontrar um conjunto independente corresponde a encontrar um clique no grafo complementar ao grafo de conflitos.
Assim, o subproblema ´e modelado como um grafo ponderado que ´e complementar ao grafo de conflitos. O peso de cada v´ertice ´e o n´umero de restri¸c˜oes do tipoSet Partition,
Set Packing eSet Covering que a vari´avel representada por ele satisfaz quando ativada. Um algoritmo baseado em Busca Tabu desenvolvido por Wu et al. (2012) ´e utilizado para encontrar cliques com peso acima de um limiar. A implementa¸c˜ao utilizada ´e a mesma disponibilizada pelos autores1. O limiar utilizado para a busca de cliques
1Detalhes sobre implementa¸c˜ao (em C/C++) e parˆametros podem ser obtidos no artigo e nosite:
24
Uma Abordagem Heur´ıstica Baseada em Grafos de Conflitos para a Solu¸c˜ao de Programas Bin´arios
´e o n´umero total de restri¸c˜oes do tipo Set Partition, Set Packing e Set Covering do problema. Quando o algoritmo termina, uma solu¸c˜ao ´e criada para o problema original, ativando apenas as vari´aveis retornadas pela Busca Tabu. Dessa forma, somente um subconjunto de vari´aveis que n˜ao apresentam conflitos entre si s˜ao ativadas na fase construtiva. Qualquer algoritmo que encontre cliques ponderados pode ser utilizado.
Esta fase foi desenvolvida para obter um conjunto inicial de vari´aveis que podem ser ativadas ao mesmo tempo sem gerar infactibilidade no problema. No caso de instˆancias que contenham somente esses trˆes tipos de restri¸c˜oes, o resultado da fase construtiva ´e uma solu¸c˜ao fact´ıvel para o problema original. Caso contr´ario, a solu¸c˜ao retornada pode ser infact´ıvel. Dessa forma, restri¸c˜oes que deixam o problema infact´ıvel s˜ao enviadas para a fase de busca local para serem tratadas.
Para ilustrar, considere PB como o seguinte Programa Bin´ario a ser resolvido: Minimize:
10x1+ 12x2+ 4x3+ 7x4 + 5x5
Sujeito a:
x1+x2 ≤1 (4.7)
x1+x3+x5 = 1 (4.8)
x2+x4 ≥1 (4.9)
x2+x4+x5 ≤1 (4.10)
x1, x2, x3, x4, x5 ∈ {0,1}
Uma Abordagem Heur´ıstica Baseada em Grafos de Conflitos para a Solu¸c˜ao
de Programas Bin´arios 25
x
1x
3x
4x
5x
2x
1x
3x
4x
5x
21
2
2
3
2
Figura 4.1: Grafo de conflitos para PB e seu grafo complementar ponderado.
4.3
Busca Local
Como Benoist et al. (2011) notaram, o maior obst´aculo encontrado na execu¸c˜ao de uma busca local para Programas Bin´arios ´e a detec¸c˜ao autom´atica de relacionamentos entre as vari´aveis de decis˜ao. Programas Bin´arios s˜ao normalmente modelados com um grande n´umero de vari´aveis de decis˜ao e de vari´aveis auxiliares, de modo que ´e bem prov´avel que a altera¸c˜ao do valor de uma vari´avel por vez produzir´a somente solu¸c˜oes infact´ıveis. Dessa forma, ´e necess´ario desenvolver m´etodos para detectar vari´aveis relacionadas e alterar seus valores simultaneamente, de modo que seja poss´ıvel corrigir uma solu¸c˜ao in-fact´ıvel ou saltar de uma solu¸c˜ao in-fact´ıvel para outra. A detec¸c˜ao e altera¸c˜ao de vari´aveis relacionadas ´e chamada de cadeia de movimentos.
26
Uma Abordagem Heur´ıstica Baseada em Grafos de Conflitos para a Solu¸c˜ao de Programas Bin´arios
anterior. Essa cadeia de movimentos gerada produz uma solu¸c˜ao melhor, de custo 16.
O Algoritmo 4.1 descreve a implementa¸c˜ao desenvolvida para detectar uma cadeia de movimentos. Esse algoritmo realiza um backtracking com profundidade d e largura limitada f. Em cada recurs˜ao, um conjunto ˆJ de vari´aveis tˆem seus valores inverti-dos: a vari´avel atual j e todas as vari´aveis conflitantes a ela, se j for ativada. Essas vari´aveis s˜ao colocadas em um estado “congelado” (conjunto S) nesta e nas itera¸c˜oes seguintes. Vari´aveis que devem ter seus valores invertidos s˜ao escolhidas de um con-junto ˜J. Somente as vari´aveis que aparecem no conjunto de restri¸c˜oes C podem ajudar a corrigir novas infactibilidades. Essas s˜ao as vari´aveis candidatas a compor a cadeia de movimentos, denotadas por ˜j, que s˜ao avaliadas em rela¸c˜ao `a quantidade de infac-tibilidade que conseguem diminuir ao terem seus valores invertidos. Os valores obtidos pela avalia¸c˜ao das vari´aveis candidatas s˜ao armazenados nas vari´aveis e˜j. As vari´aveis
mais promissoras s˜ao avaliadas recursivamente nas linhas 18 a 22 e se o efeito final for positivo (diminui¸c˜ao da infactibilidade), elas s˜ao inseridas no conjuntoJ∗ de cadeias de movimentos recomendados, atualizando a melhor cadeia de movimentos encontrada at´e o momento. A computa¸c˜ao eficiente dee˜j ´e a chave para o sucesso do m´etodo, uma vez
que valores grandes para d e f poderiam resultar em tempos computacionais proibiti-vos. Nesse sentido, observou-se que tamb´em ´e necess´ario incluir, nessa avalia¸c˜ao, uma prioridade maior para as vari´aveis que diminuam infactibilidades em restri¸c˜oes com um n´umero reduzido de candidatos.
Uma Abordagem Heur´ıstica Baseada em Grafos de Conflitos para a Solu¸c˜ao
de Programas Bin´arios 27
Algoritmo 4.1: Algoritmo chainFlip para gerar cadeias de movimentos.
Entrada:
x: solu¸c˜ao atual;
j: vari´avel cujo valor ser´a invertido; J: vari´aveis com valores j´a invertidos; C: restri¸c˜oes a serem verificadas; S: vari´aveis “congeladas”;
d: profundidade corrente; d: profundidade m´axima;
f: n´umero m´aximo de invers˜oes de valores por chamada recursiva (largura m´axima);
Sa´ıda: (z∗, J∗): custo e vari´aveis da melhor cadeia de movimentos encontrada.
se d≥d ent˜ao retorne (∞,∅)
1
ˆ
J ={j};
2
se xj = 0 ent˜ao
3
S ←S∪ {j′},∀j′ :j tem conflito comj′;
4
ˆ
J ←Jˆ∪ {j′},∀j′ :j tem conflito comj′ exj′ = 1; 5
x′ =x;
6
para j′ ∈Jˆfa¸ca
7
x′j = 1−x′j
8
J ←J∪Jˆ;
9
z∗ ←f(x′);
10
J∗ ←J;
11
C←C∪ {i},∀i: i ´e uma restri¸c˜ao onde uma ou mais vari´aveis de ˆJ aparecem;
12
˜
J ←j,∀j: j ´e uma vari´avel que aparece em alguma restri¸c˜ao do conjunto C e n˜ao
13
est´a emS; e˜j = 0, ∀˜j ∈J˜;
14
para˜j ∈J˜fa¸ca
15
calcule o impacto e˜j de inverter a vari´avel ˜j, considerando as restri¸c˜oes deC;
16
parak = 1 at´e min(f ,|J˜|) fa¸ca
17
˜
j ←vari´avel de ˜J com o k−´esimo melhor e˜j;
18
(z′, J′)←chainFlip(x′,˜j, J, C, S, d+ 1, d, f);
19
se z′ < z∗ ent˜ao
20
z∗ ←z′;
21
J∗ ←J;
22
retorne (z∗, J∗);
Cap´ıtulo 5
Experimentos Computacionais
Todo o trabalho foi desenvolvido na linguagem de programa¸c˜ao C/C++ e compilado com o GCC/G++ vers˜ao 4.6.3. Foram utilizadas as bibliotecas de c´odigo aberto do
COIN-OR, que permitem a leitura, cria¸c˜ao e manipula¸c˜ao de Problemas de Programa¸c˜ao Inteira, al´em da integra¸c˜ao com resolvedores para esse paradigma (Lougee-Heimer, 2003). Os experimentos foram executados em um computador Core i7 3.4GHz com 16 GB de
RAM sobre o sistema operacional Linux Ubuntu 12.04 64-bits. As pr´oximas se¸c˜oes apresentam as caracter´ısticas das instˆancias trabalhadas, bem como os experimentos realizados.
5.1
Caracteriza¸
c˜
ao das instˆ
ancias
Foram utilizados trˆes conjuntos de instˆancias nos experimentos computacionais. O pri-meiro conjunto apresenta instˆancias de benchmark da MIPLIB 2010 (Koch et al., 2011), contendo 87 instˆancias. Desde a sua introdu¸c˜ao em 1992, a MIPLIB tornou-se uma biblioteca padr˜ao de testes, usada para comparar o desempenho dos resolvedores de PI. Ela cont´em uma cole¸c˜ao de problemas reais, sendo na maior parte aplica¸c˜oes industri-ais. O segundo conjunto de instˆancias foi obtido da formula¸c˜ao usada por Santos et al. (2014) para resolver problemas da International Nurse Rostering Competition (INRC) (Haspeslagh et al., 2014), contendo 60 instˆancias. Trata-se de uma competi¸c˜ao realizada para incentivar e comparar pesquisas relacionadas ao Problema de Escalonamento de Enfermeiras. O terceiro conjunto consiste de problemas de planejamento de rotas para o Telebus (Bornd¨orfer et al., 1999), um servi¸co de transporte de pessoas com deficiˆencia
30 Experimentos Computacionais
f´ısica localizado em Berlim, contendo 28 instˆancias. Esses problemas apresentam for-mula¸c˜oes de PI baseadas no problema de particionamento de conjuntos.
Todos os conjuntos de instˆancias foram escolhidos com o intuito de diversificar a experimenta¸c˜ao, utilizando instˆancias que possam produzir desde grafos de conflitos ricos em informa¸c˜ao (densos) at´e grafos com pouca informa¸c˜ao (esparsos). Al´em disso, todas as instˆancias representam problemas de minimiza¸c˜ao. A Tabela 5.1 apresenta um resumo sobre as caracter´ısticas dos conjuntos de instˆancias utilizados: a coluna Qtde Instˆancias indica o n´umero de instˆancias presentes no conjunto, Restri¸c˜oes o n´umero de restri¸c˜oes, Vari´aveis o n´umero de vari´aveis de decis˜ao, Bin´arias o n´umero de vari´aveis de decis˜ao bin´arias e Nzs o n´umero de elementos n˜ao-nulos que aparecem na matriz de restri¸c˜oes. As nota¸c˜oes min, max e med indicam valores m´ınimos, m´aximos e m´edios para cada uma dessas caracter´ısticas. Uma descri¸c˜ao mais detalhada das instˆancias ´e dada no Apˆendice A.1.
Tabela 5.1: Resumo das caracter´ısticas dos conjuntos de instˆancias.
Dimens˜ao Conjunto
MIPLIB INRC Telebus
Qtde Instˆancias 87 60 28
min 32 3.032 338
Restri¸c˜oes max 624.166 29.210 1.771
med 32.077,91 11.249,00 1.202,50
min 100 9.783 1.814
Vari´aveis max 164.547 63.620 146.715
med 13.755,10 28.785,45 44.709,11
min 0 9.783 1.814
Bin´arias max 129.180 63.620 146.715
med 8.682,79 28.785,45 44.709,11
min 666 201.123 3.119
Nzs max 27.678.735 1.068.150 545.337
Experimentos Computacionais 31
5.2
Constru¸
c˜
ao de Grafos de Conflitos
O primeiro experimento computacional realizado consiste em avaliar o desempenho da constru¸c˜ao de grafos de conflitos e o ganho em velocidade de processamento obtido ao empregar as t´ecnicas de detec¸c˜ao de cliques em restri¸c˜oes. A Tabela 5.2 apresenta um resumo dos resultados obtidos na constru¸c˜ao de grafos de conflitos. A coluna Conflitos
apresenta o n´umero m´ınimo (min), m´aximo (max) e m´edio (med) de conflitos presente nos grafos constru´ıdos para os conjuntos de instˆancias. A coluna Tempo indica o tempo total, em segundos, para constru¸c˜ao dos grafos de todas instˆancias de cada conjunto utilizando probing (Probing) e os procedimentos de detec¸c˜ao de cliques aqui propos-tos (Clique). Um detalhamento completo dos resultados pode ser visto no Apˆendice A.1. Como dito na Se¸c˜ao 2.2, quando n˜ao ´e poss´ıvel aplicar a detec¸c˜ao de cliques a t´ecnicaprobing ´e utilizada. Apesar disso, ´e poss´ıvel notar um ganho consider´avel com a utiliza¸c˜ao da detec¸c˜ao de cliques.
Tabela 5.2: Resumo dos resultados obtidos na constru¸c˜ao dos grafos de confli-tos.
Conjunto Conflitos Tempo (s)
min max med Probing Clique
MIPLIB 0 11.396.108 439.293,79 205,47 21,32
INRC 2.470.141 12.807.280 6.346.356,77 626,38 450,35
Telebus 13.812 1.935.532.747 129.464.942,93 13.829,46 478,65
32 Experimentos Computacionais
5.3
Separa¸
c˜
ao de Cortes
O processo de separa¸c˜ao de cortes (ou desigualdades v´alidas) tem como objetivo melhorar o limite inferior fornecido pela relaxa¸c˜ao da Programa¸c˜ao Linear e consequentemente provar a otimalidade de maneira mais r´apida. Visando a verificar a melhoria desses limites, foi conduzido um experimento utilizando a rotina de separa¸c˜ao proposta neste trabalho com o m´odulo de lifting ativado e desativado (nomeados aqui como lnpsep e
npsep, respectivamente), al´em da rotina de separa¸c˜ao de cortes inclusa na biblioteca COIN-OR (denotada como cgl).
As rotinas foram aplicadas apenas no n´o raiz da relaxa¸c˜ao, com as execu¸c˜oes limitadas pelo tempo de 300 segundos. Somente instˆancias que possuem solu¸c˜oes fact´ıveis e que no m´ınimo uma rotina de separa¸c˜ao encontrou algum corte v´alido foram usadas. Nesse caso, foram usadas 30 instˆancias da MIPLIB, 59 da INRC e 28 do problema do Telebus. Para medir as melhorias foi utilizado ogap closed (1−gap). Assim, quanto mais pr´oximo ogap closed est´a de 1 (ou 100%, utilizando a nota¸c˜ao de porcentagem), mais pr´oximo o valor do limite inferior est´a do ´otimo.
As figuras 5.1, 5.2 e 5.3 apresentam a evolu¸c˜ao m´edia do gap closed em rela¸c˜ao ao tempo para os conjuntos de instˆancias MIPLIB, INRC e Telebus, respectivamente. Resultados obtidos por instˆancia podem ser vistos no Apˆendice A.2. Para instˆancias da MIPLIB, o gap closed m´edio obtido pelas rotinas de cortes foram: 51,06% para cgl, 52,71% para npsep e 53,39% para lnpsep. Em rela¸c˜ao `as instˆancias da INRC, o gap closed m´edio obtido foi: 57,67% para cgl, 63,79% para npsep e 77,47% para lnpsep. Por fim, para instˆancias do Telebus todas as rotinas obtiveram gap closed pr´oximo de 74,25%.
Experimentos Computacionais 33
30 40 50 60 70 80
0 50 100 150 200 250 300
Gap closed médio (%)
Tempo (s) MIPLIB
lnpsep npsep cgl
Figura 5.1: Melhoria do limite dual para instˆancias da MIPLIB, usando as rotinas lnpsep, npsep ecgl.
30 40 50 60 70 80
0 50 100 150 200 250 300
Gap closed médio (%)
Tempo (s) INRC
lnpsep npsep cgl
Figura 5.2: Melhoria do limite dual para instˆancias da INRC, usando as rotinas
34 Experimentos Computacionais
30 40 50 60 70 80
0 50 100 150 200 250 300
Gap closed médio (%)
Tempo (s) Telebus
lnpsep npsep cgl
Figura 5.3: Melhoria do limite dual para instˆancias do Telebus, usando as rotinas lnpsep, npsep ecgl.
5.4
Resolvedor Heur´ıstico para Problemas de Programa¸
c˜
ao
Bin´
aria
O ´ultimo experimento realizado avalia o resolvedor heur´ıstico desenvolvido neste tra-balho, que utiliza informa¸c˜oes de grafos de conflitos para construir e melhorar solu¸c˜oes de programas bin´arios. A avalia¸c˜ao ´e feita considerando a capacidade do resolvedor de produzir solu¸c˜oes fact´ıveis em tempos computacionais restritos, sem considerar o valor da fun¸c˜ao objetivo. Para isso, foram utilizadas as instˆancias da MIPLIB que apresentam programas bin´arios com solu¸c˜oes fact´ıveis, totalizando 32 problemas. Os demais con-juntos de instˆancias foram removidos desses experimentos por apresentarem os mesmos resultados para ambos os resolvedores avaliados.
O resolvedor implementado, aqui chamado de BPLS, ´e comparado com dois dos melhores resolvedores de Programa¸c˜ao Inteira de c´odigo aberto: COIN-OR Branch-and-Cut1 (CBC) e GNU Linear Programming Kit2 (GLPK). Todos os resolvedores foram submetidos `as instˆancias mencionadas com tempos de execu¸c˜ao limitados a 60 e 300 segundos. A Tabela 5.3 mostra os resultados obtidos. As colunas CBC e GLP K
Experimentos Computacionais 35
cam, respectivamente, os experimentos realizados com os resolvedores CBC e GLP K. As colunas BP LS indicam os experimentos realizados com o resolvedor implementado. Em todas as colunas um check mark ´e usado para indicar que uma solu¸c˜ao fact´ıvel foi encontrada no tempo informado.
Tabela 5.3: Produ¸c˜ao de solu¸c˜oes fact´ıveis em 60 e 300 segundos.
Instance 60 segundos 300 segundos
GLPK CBC BPLS GLPK CBC BPLS
acc-tight5
air04 X X X X X X
bab5 X
bley xl1 bnatt350
cov1075 X X X X X X
eil33-2 X X X X X X
eilB101 X X X X X X
ex9
iis-100-0-cov X X X X X X
iis-bupa-cov X X X X X X
iis-pima-cov X X X X X X
m100n500k4r1 X X X X X X
macrophage X X X X X X
mine-166-5 X X X X X X
mine-90-10 X X X
mspp16
n3div36 X X X X X
n3seq24 X X X
neos-1109824 X X X X X
neos-1337307 X X X X
neos18 X X X X X X
neos-849702 netdiversion ns1688347
opm2-z7-s2 X X X X X X
reblock67 X X X X X
rmine6 X X X X X X
sp98ic X X X X X X
tanglegram1 X X
tanglegram2 X X X X X X
vpphard X
Total 17 19 20 19 23 21
36 Experimentos Computacionais
Cap´ıtulo 6
Considera¸
c˜
oes Finais
Este trabalho apresentou uma forma de acelerar a constru¸c˜ao de grafos de conflitos aplicados a problemas de Programa¸c˜ao Inteira. A detec¸c˜ao de cliques em restri¸c˜oes permitiu que conflitos fossem descobertos sem a an´alise exaustiva de restri¸c˜oes realizada por t´ecnicas probing. Como consequˆencia, a complexidade computacional envolvida na an´alise de cada restri¸c˜ao reduziu de O(n2) paraO(nlogn), onde n representa o n´umero de vari´aveis de decis˜ao n˜ao-nulas contidas na restri¸c˜ao. Com isso, foi poss´ıvel obter grafos de conflitos em tempos de execu¸c˜ao dezenas de vezes menores.
A redu¸c˜ao do tempo gasto na cria¸c˜ao de grafos de conflitos facilitou a utiliza¸c˜ao dessa estrutura na solu¸c˜ao de problemas de PI. Assim, foi desenvolvida uma rotina de gera¸c˜ao de desigualdades v´alidas, que s˜ao aplicadas no n´o raiz da relaxa¸c˜ao linear visando a melhorar o limite inferior obtido. Essa rotina gera desigualdades de clique e ciclos ´ımpares a partir de um grafo de conflitos e utiliza um m´odulo de lifting para estendˆe-las. Os resultados mostraram que a rotina desenvolvida foi mais eficiente na melhoria dos limites duais em rela¸c˜ao `a rotina de separa¸c˜ao de cortes do COIN-OR.
Al´em da rotina de gera¸c˜ao de desigualdades v´alidas, foi proposto e implementado um resolvedor heur´ıstico para problemas de Programa¸c˜ao Bin´aria, que tamb´em utiliza informa¸c˜oes contidas nos grafos de conflitos. O resolvedor ´e baseado em heur´ısticas para prover uma solu¸c˜ao inicial e melhor´a-la por meio de uma busca local. A busca local utiliza cadeias de movimentos, que atuam invertendo um conjunto de vari´aveis relacionadas, com o objetivo de corrigir a infactibilidade ou saltar de uma solu¸c˜ao fact´ıvel para outra. O resolvedor foi capaz de encontrar solu¸c˜oes fact´ıveis para um n´umero maior de instˆancias considerando um tempo limitado, quando comparado com os resolvedores
38 Considera¸c˜oes Finais
CBC e GLPK.
6.1
Trabalhos Futuros
Como dire¸c˜oes futuras, destacam-se as seguintes estrat´egias:
• Desenvolver abordagens para estender o grafo de conflitos, aplicando, por exemplo, t´ecnicas de Programa¸c˜ao por Restri¸c˜oes (Jaffar e Maher, 1994) e/ou utilizando informa¸c˜oes do grafo constru´ıdo para refor¸car o valor do limite inferior para o lado esquerdo das restri¸c˜oes;
• Inserir novos tipos de cortes na rotina de separa¸c˜ao proposta e avaliar a contri-bui¸c˜ao de cada um;
• Utilizar outros conjuntos de instˆancias para avaliar o resolvedor de Programa¸c˜ao Bin´aria;
• Considerar os complementos das vari´aveis de decis˜ao e seus conflitos em ambas as fases do resolvedor heur´ıstico;
Referˆ
encias Bibliogr´
aficas
Achterberg, T.: 2007, Conflict analysis in mixed integer programming, Discrete Op-timization 4(1), 4 – 20. Mixed Integer Programming {IMA} Special Workshop on Mixed-Integer Programming.
Achterberg, T.: 2009, Scip: solving constraint integer programs,Mathematical Program-ming Computation1(1), 1–41.
Allahverdi, A., Ng, C., Cheng, T. E. e Kovalyov, M. Y.: 2008, A survey of schedu-ling problems with setup times or costs, European Journal of Operational Research
187(3), 985–1032.
Atamt¨urk, A., Nemhauser, G. L. e Savelsbergh, M. W.: 2000, Conflict graphs in solving integer programming problems,European Journal of Operational Research121(1), 40 – 55.
Avella, P. e Vasil’ev, I.: 2005, A Computational Study of a Cutting Plane Algorithm for University Course Timetabling,Journal of Scheduling 8, 497–514.
Benoist, T., Estellon, B., Gardi, F., Megel, R. e Nouioua, K.: 2011, Localsolver 1.x: a black-box local-search solver for 0-1 programming, 4OR 9(3), 299–316.
Borndorfer, R.: 1998, Aspects of Set Packing, Partitioning, and Covering, PhD thesis, Technische Universitat Berlin.
Bornd¨orfer, R., Gr¨otschel, M., Klostermeier, F. e K¨uttner, C.: 1999, Telebus Berlin: Vehicle scheduling in a dial-a-ride system, Springer.
Brito, S. e Santos, H. G.: 2011, Pivoting in the Bron-Kerbosch algorithm for maximum-weight clique detection (in portuguese)., Anais do XLIII Simp´osio Brasileiro de Pes-quisa Operacional.
Bron, C. e Kerbosch, J.: 1973, Algorithm 457: finding all cliques of an undirected graph,
Commun. ACM16(9), 575–577.
Burke, E., Mareˇcek, J., Parkes, A. e Rudov´a, H.: 2012, A branch-and-cut procedure for the udine course timetabling problem,Annals of Operations Research 194(1), 71–87.
40 REFERˆENCIAS BIBLIOGR ´AFICAS
Cornu´ejols, G.: 2007, Revival of the Gomory cuts in the 1990’s, Annals of Operations Research149(1), 63–66.
Danna, E., Rothberg, E. e Pape, C. L.: 2005, Exploring relaxation induced neighborho-ods to improve mip solutions,Mathematical Programming 102(1), 71–90.
Dantzig, G. B. e Thapa, M. N.: 2003, Generalized upper bounds,Linear Programming: 2: Theory and Extensionspp. 251–264.
Fischetti, M. e Lodi, A.: 2003, Local branching,Mathematical programming98(1-3), 23– 47.
Fischetti, M. e Lodi, A.: 2007, Optimizing over the first Chv`atal closure, Mathematical Programming B110(1), 3–20.
Garey, M. R. e Johnson, D. S.: 1979, Computers and Intractability: A Guide to the Theory of NP-Completeness, W. H. Freeman.
Grotschel, M., Lovasz, L. e Schrijver, A.: 1993,Geometric Algorithms and Combinatorial Optimization, Springer.
Haspeslagh, S., De Causmaecker, P., Schaerf, A. e Stølevik, M.: 2014, The first interna-tional nurse rostering competition 2010,Annals of Operations Research 218(1), 221– 236.
Hoffman, K. e Padberg, M.: 1993, Solving airline crew scheduling problems by branch-and-cut, Management Science39(6), 657–682.
Jaffar, J. e Maher, M. J.: 1994, Constraint logic programming: A survey, The journal of logic programming19, 503–581.
Johnson, D. S., Aragon, C. R., McGeoch, L. A. e Schevon, C.: 1991, Optimization by simulated annealing: an experimental evaluation; part ii, graph coloring and number partitioning,Operations research 39(3), 378–406.
Koch, T., Achterberg, T., Andersen, E., Bastert, O., Berthold, T., Bixby, R. E., Danna, E., Gamrath, G., Gleixner, A. M., Heinz, S., Lodi, A., Mittelmann, H., Ralphs, T., Salvagnin, D., Steffy, D. E. e Wolter, K.: 2011, MIPLIB 2010, Mathematical Programming Computation 3(2), 103–163.
Lancia, G.: 2004, Integer programming models for computational biology problems,
Journal of Computer Science and Technology 19(1), 60–77.
Land, A. H. e Doig, A. G.: 1960, An Automatic Method of Solving Discrete Program-ming Problems, Econometrica: Journal of the Econometric Society28(3), 497–520. Lougee-Heimer, R.: 2003, The common optimization interface for operations research:
REFERˆENCIAS BIBLIOGR ´AFICAS 41
M´endez-D´ıaz, I. e Zabala, P.: 2008, A cutting plane algorithm for graph coloring, Dis-crete Applied Mathematics 156, 159–179.
Nemhauser, G. L., Savelsbergh, M. W. e Sigismondi, G. C.: 1994, Minto, a mixed integer optimizer,Operations Research Letters 15(1), 47–58.
Padberg, M.: 1973, On the facial structure of set packing polyhedra, Mathematical Programming5(1), 199–215.
Pritsker, A. A. B., Watters, L. J. e Wolfe, P. M.: 1969, Multiproject Scheduling with Limited Resources: A Zero-One Programming Approach, Management Science
16(1), 93–108.
Rebennack, S.: 2009, Stable set problem: Branch & cut algorithms stable set problem: Branch & cut algorithms, in C. A. Floudas e P. M. Pardalos (eds), Encyclopedia of Optimization, Springer US, pp. 3676–3688.
Sandholm, T. e Shields, R.: 2006, Nogood learning for mixed integer programming, Te-chnical Report CMU-CS-06-155, School of Computer Science, Carnegie Mellon Uni-versity, Pittsburgh, PA.
Santos, H. G., Toffolo, T. A., Gomes, R. A. e Ribas, S.: 2014, Integer programming techniques for the nurse rostering problem,Annals of Operations Research pp. 1–27. Savelsbergh, M. W. P.: 1994, Preprocessing and probing techniques for mixed integer
programming problems, ORSA Journal on Computing 6(4), 445–454.
Van Hentenryck, P. e Michel, L.: 2005, Constraint-Based Local Search, The MIT Press. Walser, J. P.: 1997, Solving linear pseudo-boolean constraint problems with local search,
Proceedings of the Fourteenth National Conference on Artificial Intelligence and Ninth Conference on Innovative Applications of Artificial Intelligence, AAAI’97/IAAI’97, AAAI Press, pp. 269–274.
Wolsey, L. A.: 1998, Integer Programming, Wiley Series in Discrete Mathematics and Optimization, Wiley.