Prática com RStudio

#1 Dadas 3 variáveis com valores numéricos, apresentar o resultado da soma das combinações dois a dois destes três números. Por exemplo, variáveis A, B e C, mostrar A + B, A + C, B + C.

A <- 2
B <- 1
C <- 4

print(A + B)
## [1] 3
print(A + C)
## [1] 6
print(B + C)
## [1] 5
#2 Definir duas variáveis A e B e trocar seus valores. Ex: Entrada: A=6 e B=8 Saída: A=8 e B=6.
a <- 6
b <- 8

b <- 6
a <- 8

print(b)
## [1] 6
print(a)
## [1] 8
#3 Converter uma temperatura de Fahrenheit para Centígrados. C = (F - 32) * ( 5 / 9 ).
F <- 95

C=(F-32)*(5/9)

print(C)
## [1] 35
#4  Escrever um algoritmo que defina um número X e calcule:
x <- 8

#a) X ao cubo - 4
x^3 - 4
## [1] 508
#b) O resto da divisão de X / 3
x%%3
## [1] 2
#c) X elevado a (x/3) + 2
x^x/3 + 2
## [1] 5592407
#d) Raiz quadrada de X elevado ao quadrado
sqrt(x^2)
## [1] 8
#5  Elabore um algoritmo que: 
#a) Crie um vetor com uma sequência de 10 números.
#b) Faça um loop para calcular a soma dos números do vetor.
#c) Utilize o comando “vetor <- c(1:10)” para criar o vetor.
#d) Utilize o comando “for( i in 1:10) { ...comandos}” para realizar a soma.
#e) Referencie os valores do vetor com o comando: “vetor[i]”, onde “i” é o índice referência (número)
#Ex. vetor: 1,2,3,4,5,6,7,8,9,10 | Soma dos números = 55.

vetor <- (1:10)
for (i in 1:10){
  print(i)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
sum (vetor)
## [1] 55
vetor <- c(1:10)
for(i in 1:10){
  sum (i)
}

vetor[1]
## [1] 1
vetor[2]
## [1] 2
vetor[3]
## [1] 3
vetor[4]
## [1] 4
vetor[5]
## [1] 5
vetor[6]
## [1] 6
vetor[7]
## [1] 7
vetor[8]
## [1] 8
vetor[9]
## [1] 9
vetor[10]
## [1] 10
#6 A partir do exercício anterior, faça a média dos valores contidos no vetor.
mean(vetor)
## [1] 5.5
#7  Crie duas variáveis, x e y. Compare se x é maior que y. Se for, imprima “x é maior que y”, se não for, imprima “y é maior que x”.
#a) A sintaxe do comando de comparação é: if (x > y) {comandos...} else {comandos} 
#b) O comando print(“texto ou variável”) imprime a resposta na tela.

x<-10
y<-8

if(x>y){
  print("x é maior que y")
}else{
  print("y é menor que x")
}
## [1] "x é maior que y"
print(x)
## [1] 10
print(y)
## [1] 8
#8 Repita o exercício “7)” realizando os seguintes ajustes:
#a) Substitua o sinal de maior (“>”) pelo de menor ou igual (“<=”) e ajuste dos dizeres da resposta.
x <- 10
y <- 8

if(y<=x){
  print("x é maior que y")
}else{
  print("y é menor que x")
}
## [1] "x é maior que y"
#9  A partir do exercício “5)”, faça a soma somente dos números pares.
#a) Utilize o comando “%%” para identificar o resto da divisão. Ex: “5%%2”, cinco dividido por dois terá como resto “1”. Ou seja, o resultado dessa operação será “1”.
#b) Utilize o comando de decisão “if” para saber se o número é par ou ímpar.

10%%2
## [1] 0
if ((10%%2) == 0){
    print("Número é par")
  } else {
    print("Número é ímpar")
  }  
## [1] "Número é par"
#10  Faça um algoritmo que calcule e imprima o fatorial de um número inteiro. 
resposta <- factorial(c(1,2,3,4,5))
print(resposta)
## [1]   1   2   6  24 120
#11  Crie uma matriz 4x4.
#a) Uma matriz no R comporta somente um tipo de dado (número, texto ou boleano).
#b) O comando para criar a matriz é “x <- matrix(data = 1, nrow = 4, ncol = 4, byrow = TRUE)”

mat <- matrix(data = (1:8), nrow = 4,ncol = 4 ,byrow = TRUE)
print(mat)
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    1    2    3    4
## [4,]    5    6    7    8
#12  Agora, crie uma matriz com a sequência de 1 a 16
matriz <- matrix(data = (1:16),nrow = 8,ncol = 2,byrow= TRUE)
print(matriz)
##      [,1] [,2]
## [1,]    1    2
## [2,]    3    4
## [3,]    5    6
## [4,]    7    8
## [5,]    9   10
## [6,]   11   12
## [7,]   13   14
## [8,]   15   16
#13 Transforme essa matriz em um data.frame
#a) Um data.frame é uma estrutura de dados similar a matriz que pode conter dados diferentes em suas variáveis.
#b) Lembre-se que também chamamos as colunas de variáveis e as linhas de registros.
#c) Uma variável (coluna) não pode conter dados diferentes. Ou todas as linhas dessa variávelsão números, ou todas são texto, ou ainda, boleanos.
#d) Utilize o comando “df <- as.data.frame(x)”

df <- data.frame(ColunaA = c(1,3,5,7,9,11,13,15), ColunaB = c(2,4,6,8,10,12,14,16))
print(df)
##   ColunaA ColunaB
## 1       1       2
## 2       3       4
## 3       5       6
## 4       7       8
## 5       9      10
## 6      11      12
## 7      13      14
## 8      15      16
#14  Utilizando os comandos de repetição e decisão (se for necessário), calcule:
#a) a média de uma coluna da matriz do exercício “12)”.
#b) A média de todas as colunas da matriz do exercício “12)”.
#c) A média de todas as linhas da matriz do exercício “12)”.
#d) A média dos números pares de todas as colunas da matriz do exercício “12)”.
#e) A média dos números ímpares de todas as linhas da matriz do exercício “12)”.
#f) A soma da diagonal principal da matriz.
#g) A soma da diagonal secundária da matriz (desafio).

colnames(matriz) <- c("coluna1","coluna2")
#a
matriz[ ,2]
## [1]  2  4  6  8 10 12 14 16
mean(matriz[ ,2])
## [1] 9
#b
colMeans(matriz)
## coluna1 coluna2 
##       8       9
#c
rowMeans(matriz)
## [1]  1.5  3.5  5.5  7.5  9.5 11.5 13.5 15.5
#d
matriz[ ,2]
## [1]  2  4  6  8 10 12 14 16
coluna2 <- matriz[ ,2]
mean(coluna2)
## [1] 9
#e
matriz[ ,1]
## [1]  1  3  5  7  9 11 13 15
coluna1 <- matriz[ ,1]
mean(coluna1)
## [1] 8
#f
sum(diag(matriz))
## [1] 5
#g
matriz[1,2]
## coluna2 
##       2
matriz[2,1]
## coluna1 
##       3
sum(matriz[1,2],matriz[2,1])
## [1] 5
#15  Repita o exercício “14)” com os dados do data.frame do exercício “13)”.
#a)
mean(df$ColunaA)
## [1] 8
#b)
colMeans(df)
## ColunaA ColunaB 
##       8       9
#c)
rowMeans(df)
## [1]  1.5  3.5  5.5  7.5  9.5 11.5 13.5 15.5
#d)
mean(df$ColunaB)
## [1] 9
#e)
mean(df$ColunaA)
## [1] 8
#f)
df[1, 1]
## [1] 1
df[2, 2]
## [1] 4
A <- df[1, 1]
B <- df[2, 2]

A+B
## [1] 5
#g)
df[1, 2]
## [1] 2
df[2, 1]
## [1] 3
Aa <- df[1, 2]
Bb <- df[2, 1]

Aa + Bb
## [1] 5

#Revisão de Programação em RStudio Parte 2

#1  Calcular o salário mensal final de um vendedor. As seguintes informações determinam esse valor:
#a) salário fixo – R$ 5000,00
#b) total de vendas por ele efetuadas – R$ 20.000,00
#c) percentual que ele recebe sobre o total de vendas – 5%
#d) INSS de 11% sobre o salário fixo.
#e) IR de 27% sobre o total de rendimentos.

#a)
salario_fixo <- 5000

#b)
vendas <- 20000
print(vendas)
## [1] 20000
#c)
comissao <- 0.05 * 20000
salario_bruto <- salario_fixo + comissao
print(comissao)
## [1] 1000
print(salario_bruto)
## [1] 6000
#d)
inss <- salario_fixo * 0.11
print(inss)
## [1] 550
salario_base <- salario_bruto - inss
print(salario_base)
## [1] 5450
#e)
ir <- salario_base*0.27
print(ir)
## [1] 1471.5
salario_liquido <- salario_base - ir
print(salario_liquido)
## [1] 3978.5
#2 Repita o Exercício 1) calculando o salário mensal da seguinte lista abaixo.
#NOME DO 
#FUNCIONÁIO   SALÁRIO BASE (R$) VENDAS (R$) IRPF (%)
#VENDEDOR 1       1800,00        20000,00
#VENDEDOR 2       2500,00        30000,00
#VENDEDOR 3       2500,00        25000,00
#VENDEDOR 4       3000,00        15000,00
#VENDEDOR 5       3500,00        27000,00
#VENDEDOR 6       4000,00        30000,00
#VENDEDOR 7       5000,00        32000,00
#O valor da alíquota do IR deve ser calculado sobre o salário base, conforme os dados abaixo:
#Base de cálculo Alíquota
#Até 1.903,98 Isento
#De 1.903,99 até 2.826,65 7,50%
#De 2.826,66 até 3.751,05 15%
#De 3.751,06 até 4.664,68 22,50%
#Acima de 4.664,68 27,50%

Vendas_Geral <- data.frame(Vendendor = c("Vendendor1", "Vendendor2", "Vendendor3","Vendendor4","Vendendor5","Vendendor6","Vendendor7"),
                      Salario_Base = c(1800, 2500, 2500,3000,3500,4000,5000),
                      Vendas = c(20000, 30000, 25000,15000,27000,30000,32000))
print(Vendas_Geral)
##    Vendendor Salario_Base Vendas
## 1 Vendendor1         1800  20000
## 2 Vendendor2         2500  30000
## 3 Vendendor3         2500  25000
## 4 Vendendor4         3000  15000
## 5 Vendendor5         3500  27000
## 6 Vendendor6         4000  30000
## 7 Vendendor7         5000  32000
#a)
Vendendor1 <- Vendas_Geral[1, 2]
print(Vendendor1)
## [1] 1800
Vendendor2 <- Vendas_Geral[2, 2]
print(Vendendor2)
## [1] 2500
Vendendor3 <- Vendas_Geral[3, 2]
print(Vendendor3)
## [1] 2500
Vendendor4 <- Vendas_Geral[4, 2]
print(Vendendor4)
## [1] 3000
Vendendor5 <- Vendas_Geral[5, 2]
print(Vendendor5)
## [1] 3500
Vendendor6 <- Vendas_Geral[6, 2]
print(Vendendor6)
## [1] 4000
Vendendor7 <- Vendas_Geral[7, 2]
print(Vendendor7)
## [1] 5000
#b)
Vendas_Vendendor1 <- Vendas_Geral[1, 3]
print(Vendas_Vendendor1)
## [1] 20000
Vendas_Vendendor2 <- Vendas_Geral[2, 3]
print(Vendas_Vendendor2)
## [1] 30000
Vendas_Vendendor3 <- Vendas_Geral[3, 3]
print(Vendas_Vendendor3)
## [1] 25000
Vendas_Vendendor4 <- Vendas_Geral[4, 3]
print(Vendas_Vendendor4)
## [1] 15000
Vendas_Vendendor5 <- Vendas_Geral[5, 3]
print(Vendas_Vendendor5)
## [1] 27000
Vendas_Vendendor6 <- Vendas_Geral[6, 3]
print(Vendas_Vendendor6)
## [1] 30000
Vendas_Vendendor7 <- Vendas_Geral[7, 3]
print(Vendas_Vendendor7)
## [1] 32000
#c)
comissao_1 <- 0.05 * Vendas_Vendendor1
print(comissao_1)
## [1] 1000
comissao_2 <- 0.05 * Vendas_Vendendor2
print(comissao_2)
## [1] 1500
comissao_3 <- 0.05 * Vendas_Vendendor3
print(comissao_3)
## [1] 1250
comissao_4 <- 0.05 * Vendas_Vendendor4
print(comissao_4)
## [1] 750
comissao_5 <- 0.05 * Vendas_Vendendor5
print(comissao_5)
## [1] 1350
comissao_6 <- 0.05 * Vendas_Vendendor6
print(comissao_6)
## [1] 1500
comissao_7 <- 0.05 * Vendas_Vendendor7
print(comissao_7)
## [1] 1600
#d)
inss_1 <- 0.11*Vendendor1
print(inss_1)
## [1] 198
inss_2 <- 0.11*Vendendor2
print(inss_2)
## [1] 275
inss_3 <- 0.11*Vendendor3
print(inss_3)
## [1] 275
inss_4 <- 0.11*Vendendor4
print(inss_4)
## [1] 330
inss_5 <- 0.11*Vendendor5
print(inss_5)
## [1] 385
inss_6 <- 0.11*Vendendor6
print(inss_6)
## [1] 440
inss_7 <- 0.11*Vendendor7
print(inss_7)
## [1] 550
#e)
Salario_Base1 <- Vendendor1 + comissao_1 - inss_1 
Salario_Base2 <- Vendendor2 + comissao_2 - inss_2 
Salario_Base3 <- Vendendor3 + comissao_3 - inss_3 
Salario_Base4 <- Vendendor4 + comissao_4 - inss_4 
Salario_Base5 <- Vendendor5 + comissao_5 - inss_5 
Salario_Base6 <- Vendendor6 + comissao_6 - inss_6 
Salario_Base7 <- Vendendor7 + comissao_7 - inss_7 

ir_1 <- Salario_Base1*0.075
print(ir_1)
## [1] 195.15
ir_2 <- Salario_Base2*0.15
print(ir_2)
## [1] 558.75
ir_3 <- Salario_Base3*0.15
print(ir_3)
## [1] 521.25
ir_4 <- Salario_Base4*0.15
print(ir_4)
## [1] 513
ir_5 <- Salario_Base5*0.2250
print(ir_5)
## [1] 1004.625
ir_6 <- Salario_Base6*0.2750
print(ir_6)
## [1] 1391.5
ir_7 <- Salario_Base7*0.2750
print(ir_7)
## [1] 1663.75
#3) Elabore um programa para efetuar o cálculo da quantidade de garrafas e de engradados de cerveja consumida por um determinado bloco durante o carnaval, considerando que 5000foliões bebem cerca de 2 litros durante o desfile do bloco. Outras informações:
#• considerar que um engradado de cerveja tem 24 garrafas de 600 ml
#• Cada garrafa custa R$ 8,00, e que o engradado custa R$ 180,00. 
#Qual será o lucro do comerciante considerando que:
#a) Ele compre as garrafas avulsas e venda cada garrafa a R$ 15,00.
#b) Ele compre o engradado e venda cada garrafa a R$ 15,00 (ele não pode comprar fração do 
#engradado – arredonde para menos).
#c) Ele venda o copo de 500 ml a R$ 15,00 – cada copo sai a R$ 0,20.
#Faça uma função para o lucro.

num_folioes <- 5000
  litros_consumidos <- num_folioes * 2
  garrafas_consumidas <- litros_consumidos / 0.6 # cada garrafa tem 600 ml
  engradados_consumidos <- garrafas_consumidas / 24
  
#a)
garrafas_lucro <- garrafas_consumidas * 15
  print(garrafas_lucro)
## [1] 250000
  garrafas_custo <- garrafas_consumidas * 8
  print(garrafas_custo)
## [1] 133333.3
  garrafas_lucro_total <- garrafas_lucro - garrafas_custo
  print(garrafas_lucro_total)
## [1] 116666.7
#b)
engradados_lucro <- engradados_consumidos * 24 * 15
  print(engradados_lucro)
## [1] 250000
  engradados_custo <- engradados_consumidos * 180
  print(engradados_custo)
## [1] 125000
  engradados_lucro_total <- engradados_lucro - engradados_custo
  print(engradados_lucro_total)
## [1] 125000
#c)
copos_consumidos <- litros_consumidos / 0.5 # cada copo tem 500 ml
  print(copos_consumidos)
## [1] 20000
  copos_lucro <- copos_consumidos * 15
  print(copos_lucro)
## [1] 3e+05
  copos_custo <- copos_consumidos * 0.2
  print(copos_custo)
## [1] 4000
  copos_lucro_total <- copos_lucro - copos_custo
  print(copos_lucro_total)
## [1] 296000
#d)
 resultado <- list(
    garrafas_consumidas = garrafas_consumidas,
    engradados_consumidos = engradados_consumidos,
    garrafas_lucro_total = garrafas_lucro_total,
    engradados_lucro_total = engradados_lucro_total,
    copos_lucro_total = copos_lucro_total
  )
#4)  Elabore um data.frame com as seguintes informação:
#NOME DO ALUNO    DISCIPLINA 1   DISCIPLINA 2   DISCIPLINA 3
#ALUNO 1              3             10            7
#ALUNO 2              4              9            8
#ALUNO 3              5              8            9
#ALUNO 4              6              7           10
#ALUNO 5              7              6            7
#ALUNO 6              8              5            8
#ALUNO 7              9              4            9
#Faça funções para calcular:
#a) A média de cada aluno (CR)
#b) A média de cada disciplina.
#c) A média final da turma.
#d) O aluno com média mais alta.
#e) A lista de alunos reprovados, por disciplina.

alunos <- data.frame(
  nome = c("ALUNO 1", "ALUNO 2", "ALUNO 3", "ALUNO 4", "ALUNO 5", "ALUNO 6", "ALUNO 7"),
  disciplina1 = c(3, 4, 5, 6, 7, 8, 9),
  disciplina2 = c(10, 9, 8, 7, 6, 5, 4),
  disciplina3 = c(7, 8, 9, 10, 7, 8, 9)
)
print(alunos)
##      nome disciplina1 disciplina2 disciplina3
## 1 ALUNO 1           3          10           7
## 2 ALUNO 2           4           9           8
## 3 ALUNO 3           5           8           9
## 4 ALUNO 4           6           7          10
## 5 ALUNO 5           7           6           7
## 6 ALUNO 6           8           5           8
## 7 ALUNO 7           9           4           9
Vendas_Vendendor6 <- Vendas_Geral[6, 3]
print(Vendas_Vendendor6)
## [1] 30000
Vendas_Vendendor7 <- Vendas_Geral[7, 3]
print(Vendas_Vendendor7)
## [1] 32000
#a)
media_aluno <- function(df) {
  df$media <- rowMeans(df[,2:4])
  return(df)
}

alunos <- media_aluno(alunos)
print(alunos)
##      nome disciplina1 disciplina2 disciplina3    media
## 1 ALUNO 1           3          10           7 6.666667
## 2 ALUNO 2           4           9           8 7.000000
## 3 ALUNO 3           5           8           9 7.333333
## 4 ALUNO 4           6           7          10 7.666667
## 5 ALUNO 5           7           6           7 6.666667
## 6 ALUNO 6           8           5           8 7.000000
## 7 ALUNO 7           9           4           9 7.333333
#b)
media_disciplina <- function(df) {
  df$media_disciplina1 <- mean(df$disciplina1)
  df$media_disciplina2 <- mean(df$disciplina2)
  df$media_disciplina3 <- mean(df$disciplina3)
  return(df)
}

alunos <- media_disciplina(alunos)
print(alunos[, c("disciplina1", "disciplina2", "disciplina3", "media_disciplina1", "media_disciplina2", "media_disciplina3")])
##   disciplina1 disciplina2 disciplina3 media_disciplina1 media_disciplina2
## 1           3          10           7                 6                 7
## 2           4           9           8                 6                 7
## 3           5           8           9                 6                 7
## 4           6           7          10                 6                 7
## 5           7           6           7                 6                 7
## 6           8           5           8                 6                 7
## 7           9           4           9                 6                 7
##   media_disciplina3
## 1          8.285714
## 2          8.285714
## 3          8.285714
## 4          8.285714
## 5          8.285714
## 6          8.285714
## 7          8.285714
#c)
media_turma <- function(df) {
  media_total <- mean(df$media)
  return(media_total)
}

media_final <- media_turma(alunos)
print(media_final)
## [1] 7.095238
#d)
melhor_aluno <- function(df) {
  max_media <- max(df$media)
  aluno <- df[df$media == max_media, "nome"]
  return(aluno)
}

aluno_mais_alto <- melhor_aluno(alunos)
print(aluno_mais_alto)
## [1] "ALUNO 4"
#e)
reprovados <- function(df) {
  reprovados_disc1 <- df[df$disciplina1 < 6, "nome"]
  reprovados_disc2 <- df[df$disciplina2 < 6, "nome"]
  reprovados_disc3 <- df[df$disciplina3 < 6, "nome"]
  reprovados <- list(disciplina1 = reprovados_disc1,
                     disciplina2 = reprovados_disc2,
                     disciplina3 = reprovados_disc3)
  return(reprovados)
}

lista_reprovados <- reprovados(alunos)
print(lista_reprovados)
## $disciplina1
## [1] "ALUNO 1" "ALUNO 2" "ALUNO 3"
## 
## $disciplina2
## [1] "ALUNO 6" "ALUNO 7"
## 
## $disciplina3
## character(0)

#Exercícios de PL do PROF Luis Fortes

#1) A Fábrica Marvel Toy deseja fazer três modelos de barcos de brinquedo para melhorar as suas vendas. Eles descobriram que um modelo do navio a vapor leva uma hora no cortador, 2 horas na pintura, e 4 horas de trabalho na montagem. Este modelo produz $ 6 de lucro. O modelo do veleiro de quatro mastros leva 3 horas no cortador, 3 horas na pintura e o montador 2 horas na montagem e produz $ 3 de lucro. O modelo veleiro de dois mastros leva uma hora no cortador, três horas na pintura, uma hora na montagem, produzindo $ 2 de lucro. O cortador está disponível apenas por 45 horas, o pintor por 50 horas, e o montador por 60 horas. Supondo que eles possam vender todos os modelos que são construídos, encontre as restrições do problema e descreva como a solução ótima é obtida

library(lpSolve)

#Objetivo: Max Lucro

obj <- c(6, 3, 2)

con <- matrix(c(1,3,1,2,3,3,4,2,1), ncol=3, byrow=TRUE)
dir <- c("<=", "<=", "<=")
rhs <- c(45, 50, 60)

lp_model <- lp("max", obj, con, dir, rhs, all.int=TRUE)

print(lp_model)
## Success: the objective function is 94
#2) A Reggio Advertising Company deseja planejar uma campanha publicitária em três meios diferentes - televisão, rádio e revistas. O objetivo da publicidade é alcançar tantos clientes em potencial quanto possível. Os resultados de um estudo de mercado são fornecidos abaixo:

#                                  Televisão
#                         Prog. Diurna / Horário Nobre  /  Rádio  /  Revistas
#Custo de uma publicidade 
#unidade
#                            $40.000   /     $75.000    / $30.000 /  $ 15.000
#Número de potencial 
#clientes alcançados por 
#unidade
#                            400.000   /     900.000    /500.000  / 200.000
#Número de mulheres 
#clientes alcançados por 
#unidade
#                            300.000   /    400.000     /200.000  / 100.000

#A empresa não quer gastar mais do que $ 800.000 na publicidade. Além disso, requer que: (1) pelo menos 2 milhões as exposições ocorrem entre mulheres; (2) publicidade em televisão seja limitada a $ 500.000; (3) pelo menos 3 publicidades sejam compradas na televisão diurna, e duas unidades durante horário nobre; e (4) o número de unidades de publicidade no rádio e em revistas deve ser entre 5 e 10. Formular o problema de programação linear.

library(lpSolve)

func.objetivo_2 <- c(400, 900, 500, 200)

coeficientes.restricoes_2 <- matrix (c(40,  75,  30,  15, 
                                    300, 400, 200, 100, 
                                    40,   75,   0,   0, 
                                     1,    0,   0,   0, 
                                     0,    1,   0,   0, 
                                     0,    0,   1,   0, 
                                     0,    0,   1,   0, 
                                     0,    0,   0,   1, 
                                     0,    0,   0,   1),  
                                     ncol = 4,  
                                     byrow = TRUE) 

direcao.restricoes_2 <- c("<=",">=","<=",">=", ">=", ">=", "<=", ">=","<=") 

limites.restricoes_2 <- c(800, 2000, 500, 3, 2, 5, 10, 5, 10)

solucao.problema_2 <- lp("max", func.objetivo_2, coeficientes.restricoes_2, 
                       direcao.restricoes_2, limites.restricoes_2)



solucao.problema_2$objval
## [1] 10960
#3)Uma fábrica de tomate em conserva tem 5.000 quilos de tomates de grau A e 10.000 quilos de tomates grau B, os quais serão transformados em tomates em lata e pasta de tomate. os tomates em lata devem ser compostos de pelo menos 80 por cento de tomates de grau A, enquanto a pasta de tomate deve ser feita com pelo menos 10 por cento de tomates desta mesma qualidade (grau A). Os tomates em lata são vendidos por US $ 0,08 por quilo e os tomates em pasta são vendidos por US $ 0,05 por quilo. Formule um programa linear para resolver quanto de cada produto deve ser feito, se a empresa quiser maximizar a sua receita.


library(lpSolve)

obj <- c(0.08, 0.05)

matriz_restricoes <- matrix(c(0.8, 0.1, -0.2, 0, 1, 1), ncol=2, byrow=TRUE)
direcao <- c(">=", ">=", "<=")
rhs <- c(0.1, 0, 15000)

resultado <- lp("max", obj, matriz_restricoes, direcao, rhs)

cat("Quantidade de tomates em lata: ", resultado$solution[1], "kg\n")
## Quantidade de tomates em lata:  0 kg
cat("Quantidade de pasta de tomate: ", resultado$solution[2], "kg\n")
## Quantidade de pasta de tomate:  15000 kg
cat("Receita total: US$", resultado$objval, "\n")
## Receita total: US$ 750
#4) A fim de se produzir 1000 toneladas de aço não oxidante para válvulas de motor, pelo menos as seguintes quantidades de manganês, cromo e molibdênio, serão necessários semanalmente: 10 unidades de manganês, 12 unidades de cromo e 14 unidades de molibdênio (uma unidade corresponde a 10Kg). Esses metais são obtidos de revendedores de metais não ferrosos, que, para atrair os mercados os disponibilizam em caixas de três tamanhos, P, M e G. Uma caixa P custa $ 9 e contém 2 unidades de manganês, 2 unidades de cromo e 1 unidade de molibdênio. Uma caixa M custa $ 12 e contém 2 unidades de manganês, 3 unidades de cromo e 1 unidade de molibdênio. Um caso G custa US $ 15 e contém 1 unidade de manganês, 1 unidade de cromo e 5 unidades de molibdênio. Quantas caixas de cada tipo devem ser compradas semanalmente para que as quantidades necessárias de manganês, cromo e molibdênio sejam obtidas no menor custo possível? Qual é o menor custo possível? Formule e resolva por programação linear.

library(lpSolve)

obj <- c(9, 12, 15)

mat <- matrix(c(2, 2, 1, 2, 3, 1, 1, 0, 5), nrow=3, byrow=TRUE)
dir <- c(">=", ">=", ">=")
rhs <- c(10, 12, 14)

sol <- lp("min", obj, mat, dir, rhs)

cat("Quantidade de caixas P: ", round(sol$solution[1]), "\n")
## Quantidade de caixas P:  5
cat("Quantidade de caixas M: ", round(sol$solution[2]), "\n")
## Quantidade de caixas M:  0
cat("Quantidade de caixas G: ", round(sol$solution[3]), "\n")
## Quantidade de caixas G:  2
cat("Custo total mínimo: $", round(sol$objval), "\n")
## Custo total mínimo: $ 73
#5) O grupo Unido tem duas fazendas que cultivam trigo e milho. Por causa dos solos e condições climáticas diferentes, existem diferenças nos rendimentos e custos de cultivo nas duas fazendas. Os rendimentos e custos são:
#                                 Fazenda 1           Fazenda 2
#Rendimento de milho /acre    500 alqueires         650 alqueires
#Custo / acre de milho            $ 100                 $ 120
#Rendimento de trigo / acre     400 alqueires       350 alqueires
#Custo / acre de trigo            $ 90                  $ 80
#Cada fazenda possui 100 acres disponíveis para cultivo; 11.000 alqueires de trigo e 7.000 alqueires de milho devem ser cultivados. Determine um plano de plantio que irá minimizar o 
#custo de atender a essas demandas.

fo_6 <- c(100,120,90,80)
coef_rest_6 <- matrix(c(50,65,40,35), ncol = 4, byrow = TRUE)
direcao_6 <- c(">=",">=")
rest_6 <- c(100,100,700,1100)

solucao_6 <- lp("min",fo_6, coef_rest_6, direcao_6, rest_6)
## Warning in rbind(const.mat, const.dir.num, const.rhs): number of columns of
## result is not a multiple of vector length (arg 2)
solucao_6$objval
## [1] 184.6154
#6)Considere que existem 3 silos que são necessários para satisfazer a demanda de 4 fábricas (Mills), conforme tabela a seguir. (Um silo é uma área de armazenamento da fazenda usada para armazenar grãos e Moinho é uma fábrica de moagem de grãos).
#Determine o quanto de cada silo deve ir para cada fábrica afim de que o custo de transporte seja minimizado.

fo <-               c(10, 2, 20, 11, 12, 7, 9, 20, 4, 14, 16, 15)
coef_rest <- matrix(c(1,1,1,1,0,0,0,0,0,0,0,0,
                      0,0,0,0,1,1,1,1,0,0,0,0,
                      0,0,0,0,0,0,0,0,1,1,1,1,
                      1,0,0,0,1,0,0,0,1,0,0,0,
                      0,1,0,0,0,1,0,0,0,1,0,0,
                      0,0,1,0,0,0,1,0,0,0,1,0,
                      0,0,0,1,0,0,0,1,0,0,0,1
                      ), ncol = 12, byrow = TRUE)
direcao <- c("=","=","=","=","=","=","=")
rest <- c(15, 25, 10, 5, 15, 15, 15)

solucao <- lp("min",fo, coef_rest, direcao, rest)

solucao$objval
## [1] 420