



Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Este documento fornece instruções para implementar o algoritmo simplex para resolver problemas de maximização linear usando o r. O documento inclui um código incompleto e um exemplo para verificar a correção da implementação.
Tipologia: Trabalhos
1 / 6
Esta página não é visível na pré-visualização
Não perca as partes importantes!




rm(list=ls(all=T)) # limpa a memoria do sistema simplex3<- function (obj, const, rhs){ #obj: vetor de coefieciente da função objetivo #const: matriz de coeficientes de equação de restrição, na forma padrão #rhs: vetor de valores correspondentes do lado direito para restrições co <- rbind(const, obj) # co<-rbind(@@@, @@@) #criamos a variável "co" com "rbind"que faz a sequencia dos vetores (const e obj) que são os coeficientes negativos da função objetivo sob a matriz de coeficientes d a equação de restrição. dims <-dim(co) #vamos pegar a dimensão do vetor co numRow <- dims[ 1 ] #e vamos selecionar apenas a dimensao da linha #dims<-dim(@@@) #numRow<-dims[@@@] M <- cbind(diag( 1 ,numRow)) #M<-@@@ #adicionamos a matriz identidade e o numRow pra sempre ter a dimensao correta da matriz tableau <- cbind(co,M,c(rhs, 0 )) print(tableau) #tableau<-@@@ #print(@@@) #para completar nosso quadro, juntamos nosso vetor co, com M (matriz identidade) e rhs (vetor de valores correspondentes do lado direito para restrições) e mostramo s nosso quadro com o print dims<-dim(tableau) #vamos pegar a dimensão do nosso quadro numCol<-dims[ 2 ] #e vamos selecionar apenas a dimensao da coluna #dims<-dim(@@@) #numCol<-dims[@@@]
negIndicator <- obj #negIndicator=@@@ #criamos "indicador negativo" para a última linha do quadro, que é o vetor de coe fieciente da função objetivo(obj) if (min(tableau[numRow,])>= 0 ) { print("No negative indicators: algorithm terminates") negIndicator=FALSE } # O if verifique se há entradas negativas na última linha. Se a entrada mínima na última linha for positiva, não haverá indicador negativos. while (min(tableau[numRow,])< 0 ) { _#while(@@@){
do nosso código._ pColIndex<-which.min(tableau[numRow,]) pCol<-tableau[ 1 :(numRow - 1 ),pColIndex] #pCol<-tableau[@@@,@@@] #Aqui selecionamos a coluna pivô, removendo o valor da última linha, que é o ve tor de coefieciente da função objetivo(obj) if (pColIndex <= 0 ){ _# if (@@@){
print("The problem is unbounded, no maximum is possible.") return (tableau) } possibleRows = which(tableau[ 1 :(numRow), pColIndex] > 0 ) #possibleRows = which(@@@ > @@@) #possibleRows é um vetor do índices de linha nas quais a coluna pivô tem entrad as positivas. lst<-tableau[possibleRows,numCol] #lst<-tableau[@@@,@@@] #Selecionamos os valores da última coluna nas linhas selecionadas no possibleRo ws div<-lst/pCol[possibleRows] minPos<-which.min(div) #minPos<-which.min(@@@) #selecionamos o índice da razão mínima calculada pRowIndex<-possibleRows[minPos]
print(tableau)
obj <- c( 300 , 200 ) const <- rbind(c( 5 , 2 ),c( 3 , 3 )) rhs <- c( 180 , 135 ) tableau <- simplex3(obj,const,rhs)
print(tableau)
obj <- c(- 300 ,- 200 ) const <- rbind(c( 5 , 2 ),c( 3 , 3 )) rhs <- c( 180 , 135 ) tableau <- simplex3(obj,const,rhs)