#modelo retirado do artigo disponível em: https://www.aedb.br/seget/arquivos/artigos13/44218525.pdf > require(lpSolve) # carrega pacote lpSolve previamente instalado Carregando pacotes exigidos: lpSolve > require(xlsx) # carrega pacote xlsReadWrite previamente instalado Carregando pacotes exigidos: xlsx > setwd('c:/Users/Usuário/UFG/MESTRADO 2017/MESTRADO 2019/R') # define o diretório de trabalho > library(readxl) > library(openxlsx)
Attaching package: ‘openxlsx’
The following objects are masked from ‘package:xlsx’:
createWorkbook, loadWorkbook, read.xlsx, saveWorkbook, write.xlsx
> library(xlsx) > dados <- read_excel("C:/Users/Usuário/UFG/MESTRADO 2017/MESTRADO 2019/R/dados.xlsx", col_names=TRUE) > View(dados) > dados # A tibble: 18 x 5 UTILITY OPEX NETWORK MWH CUSTOMERS <chr> <dbl> <dbl> <dbl> <dbl> 1 ELETROPAULO 1249143613 45213 39922710 5987873 2 CEMIG 1682334644 460219 37476802 6832546 3 CPFL - PAULISTA 497290782 89879 25267579 3502793 4 COPEL 1018866491 224817 23525040 3628209 5 LIGHT 557206112 58074 22902552 3640182 6 CELESC 721455274 144896 18105811 2237127 7 COELBA 436436014 215001 14286757 4622046 8 ELEKTRO 414602018 107116 13398558 2123670 9 CPFL - PIRATININGA 195789961 22236 13013378 1367488 10 BANDEIRANTE 286832273 27496 12536237 1482518 11 CELPE 350651684 120428 10001560 2994259 12 AMPLA 436532756 51050 9506961 2365558 13 CELG 691472253 199494 9344291 2213198 14 RGE 186357415 84997 7993103 1226079 15 COELGE 316166876 120300 7929212 2744830 16 ESCELSA 241433335 56960 7897969 1185432 17 AES SUL 206122962 76133 7616460 1150518 18 CEEE 385990997 71892 7277929 1438072 > inputs<- data.frame(dados[,2]) # seleciona coluna 2 do objeto data > outputs <- data.frame(dados[,c(3,4,5)]) # seleciona colunas 3, 4 e 5 do objeto data > N<- dim(dados)[1] # número de DMUs > s <- dim(inputs)[2] # número de inputs > m <- dim(outputs)[2] # número de outputs > f.rhs <- c(rep(0,1,N),1) # RHS > f.dir <- c(rep("<=",1,N),"=") # direção das restrições > aux <- cbind(-1*inputs,outputs) # matriz com os coeficientes tecnológicos em (6) > for (i in 1:N) { + f.obj <- c(0*rep(1,s),as.numeric(outputs[i,])) # coeficientes da função objetivo + f.con <- rbind(aux ,c(as.numeric(inputs[i,]), + rep(0,1,m))) # adiciona a restrição bTz=1 + results <- lp("max",as.numeric(f.obj),f.con,f.dir,f.rhs,scale=1,compute.sens=TRUE) # resolve PPL + multipliers <- results$solution # multiplicadores + efficiency <- results$objval # indices de eficiência + duals <- results$duals # ??? + if (i==1) { + weights <- multipliers + effcrs <- efficiency + lambdas <- duals [seq(1,N)] + } else { + weights <- rbind(weights,multipliers) + effcrs <- rbind(effcrs , efficiency) + lambdas <- rbind(lambdas,duals[seq(1,N)]) + } + } > ################################################################### > planilha <- cbind(effcrs,weights) > #ESSA PARTE NÃO ESTÁ FUNCIONANDO################################### > rownames(planilha) <- dados [,1] # nomeas das linhas (empresas) Error in dimnames(x) <- dn : comprimento de 'dimnames' [1] não é igual ao tamanho do array |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Segue a planilha gerada, na coluna A preciso constar os nomes da coluna A (UTILITY)
Se puderem ajudar, fico agradecido. Atenciosamente Márcio Boareto |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|