Линейное программирование в R с несколькими ограничениями - PullRequest
0 голосов
/ 01 ноября 2019

Мин (a1x1 + a2x2 + a3x3 + ...................... d464x464) Ограничения: 1. x1 + x2 + x3 + x4 = спрос1 2. x5+ x6 + x7 + x8 = спрос2 .. .. .. 116. x461 + x462 + x463 + x464 = спрос116 117. x1 + x5 + x9 + x13 ..... x461 <= вместимость1 118. x2 + x6 + x10 +....... x462 <= емкость2 119. x3 + x7 + x11 ........ x463 <= емкость3 120. x4 + x8 + x12 ........ x464 <= емкость4 </p>

Я пытался решить обычную задачу оптимизации в Excel. Впервые я столкнулся с проблемой наличия> 200 переменных решения, что привело к ошибке Excel Solver. Я пытался реализовать решение для R.

library(lpSolve)
setwd("C:\\ALL STINT PROJECTS\\4. Factory\\Project")
prob<-read.csv("Optimization.csv",header = TRUE)
cpCon<-read.csv("Capacity Constraint.csv",header = TRUE)
d1<-array(0,464)
c=1
for (i in 1:116) {
  for (j in 7:10) {
    d1[c]<-prob[i,j]
    c=c+1
  }
}
obj.fun<-d1
constr<-matrix(0,nrow = 120,ncol=464,byrow = TRUE)
c=1
for(i in 1:116)
{
  for (j in 0:3) {
    constr[i,c+j]=1
  }
   c=c+4
}
for(i in 1:4)
{
  for (j in seq(i,464,4)) {
    constr[i+116,j]<-1
    }
}
constr.dir<-c(rep("=",116),rep("<=",4))
d2<-array(0,120)
rhs<-array(0,120)
for(i in 1:116)
{
  d2[i]<-prob$Total.Demand[i]
}
for(i in 1:4)
{
  d2[i+116]<-cpCon[1,i]
}
rhs<-d2
prod.trans<-lp("min",obj.fun,constr,constr.dir,rhs)
prod.trans$objval
prod.trans$solution

У меня нет опыта программирования, и мой грубый код не может найти решение. Буду очень признателен, если кто-нибудь поможет мне в решении этой проблемы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...