pl - moretti - aula02.pdf

4
MT503-Programação Linear – 2º Semestre de 1999 Programação Linear Prof. Moretti Aula 2 : Exemplos da linguagem AMPL Problema : Uma laminação usa como matéria-prima placas de aço para produzir dois produtos: molas e lâminas de aço. A velocidade da linha de produção dos produtos é dada abaixo: Produto Produção (toneladas/hora) Molas 200 Lâminas 140 Os produtos têm diferentes preços de vendas: Produtos Preço Molas R$25,00 Lâminas R$30,00 E, devido a problemas técnicos, a produção semanal está restrita às seguintes produções máximas: Produtos Produção Máxima Molas 6000 Lâminas 4000 Se temos 40 horas de produção em cada semana, quantas toneladas de molas e Lâminas devemos produzir de tal maneira a maximizar o lucro semanal Modelo Matemático : Sejam semana. uma em produzidas aço de Lâminas de toneladas semana. uma em produzidas aço de molas de toneladas Lâminas molas = = x x Então, nós queremos 4000 0 6000 0 40 140 1 200 1 a sujeito 30 25 Maximizar Lâminas molas Lâminas molas Lâminas molas + + x x x x x x

Upload: rafael-de-queiroz-nunes

Post on 25-Jan-2016

1 views

Category:

Documents


0 download

DESCRIPTION

Programação Linear

TRANSCRIPT

MT503-Programação Linear – 2º Semestre de 1999

Programação Linear Prof. Moretti Aula 2 : Exemplos da linguagem AMPL Problema : Uma laminação usa como matéria-prima placas de aço para produzir dois produtos: molas e lâminas de aço. A velocidade da linha de produção dos produtos é dada abaixo:

Produto Produção (toneladas/hora)

Molas 200 Lâminas 140

Os produtos têm diferentes preços de vendas:

Produtos Preço Molas R$25,00 Lâminas R$30,00

E, devido a problemas técnicos, a produção semanal está restrita às seguintes produções máximas:

Produtos Produção Máxima

Molas 6000 Lâminas 4000

Se temos 40 horas de produção em cada semana, quantas toneladas de molas e Lâminas devemos produzir de tal maneira a maximizar o lucro semanal Modelo Matemático : Sejam

semana. uma em produzidas aço de Lâminas de toneladas semana. uma em produzidas aço de molas de toneladas

Lâminas

molas==

xx

Então, nós queremos

40000 6000 0

40140

12001

a sujeito3025 Maximizar

Lâminas

molas

Lâminasmolas

Lâminasmolas

≤≤≤≤

≤+

+

xx

xx

xx

Prof. Antonio Carlos Moretti

Graficamente:

O modelo em AMPL para resolver este problema é: >ampl ampl : var xmolas; ampl : var xLâminas; ampl : maximize lucro : 25*xmolas+30*xLâminas; ampl : subject to Tempo: (1/200)*xmolas+(1/140)*xLâminas<=40; ampl : subject to Limite1: 0<=xmolas<=6000; ampl : subject to Limite2: 0<=xLâminas<=4000; ampl : solve Minos 5.4: optimal solution found. 2 iterations, objective 192000 ampl : display xmolas, xLâminas; xmolas = 6000 xLâminas =1400 ampl : quit > Usando AMPL em um modelo de Programação Linear Mais Geral Dados :

. j cada para , produto do produzidas serem a toneladasde máximo número

. j cada para , produto do dapor tonela Lucro laminação. na sdisponívei horas

cada para , produto do hora / toneladas produzidos serema produtos de conjunto um

Pju

Pjcb

PjjaP

j

j

j

∈=

∈==

∈==

3

Vamos definir : xj como a produção ( em toneladas) do produto j, para cada j em P.Agora, considere o seguinte modelo de PL:

. cada para 0

a1

a sujeito

Maximize

j

Pjux

bx

xc

jj

jPj

Pjjj

∈≤≤

≤∑

Neste caso o programa em AMPL seria: Arquivo aco.mod set P; param a {j in P}; param b; param c {j in P}; param u {j in P}; var X {j in P}; maximize Lucro: sum {j in P} c[j]*X[j]; subject to Tempo: sum {j in P} (1/a[j])*X[j] <= b; subject to Limite {j in P} : o <= X[j] <= u[j]; Arquivo aco.dat set P := molas Lâminas; param: a c u := molas 200 25 6000 Lâminas 140 30 4000; Param b := 40; Portanto, uma vez criado os arquivos aco.mod (que contém o modelo) e o arquivo aco.dat (que contém os dados do problema a ser resolvido) entramos no ambiente ampl : > ampl: modelo aco.mod ampl: data aco.dat ampl: solve Minos 5.4: optimal solution found. 2 iterations, objective 192000 ampl: display Make

4

Prof. Antonio Carlos Moretti

Um modelo mais incrementado

Arquivo aco1.mod

set Produtos; param velocidade {Produtos} > 0 # Toneladas produzidas por hora. param disponibilidade >= 0; # Horas disponíveis por semana. param Lucro {Produtos} ; # Lucro unitário por tonelada. param Limites {Produtos}; # Limites de produção nos produtos. # Definindo as variáveis e aproveitamos para restringir as suas produções var quantidade {p in Produtos} >= 0, <= Limites[p]; # quantidades (em tonelada) produzida.

# Definindo a função objetivo : Maximização do lucro total de todos os produtos. maximize Lucro_total: sum {p in produtos} Lucro[p]* quantidades[p]; # Definindo as restrições de disponibilidades. subject to Tempo: sum {p in Produtos} (1/velocidade[p]) * quantidade[p] <= disponibilidade; Arquivo aco1.dat set produtos := molas Lâminas; param: velocidade Lucro Limites := Molas 200 25 6000 Lâminas 140 30 4000; param disponibilidade := 40; No ambiente AMPL, bata: > ampl: model aco1.mod; ampl: data aco1.dat; ampl: solve; MINOS 5.4: optimal solution found. 2 iterations, objective 192000 ampl: display quantidades; quantidades[*] := Molas 6000 Lâminas 1400 ;

5