我使用Excel Solver解决了一个优化问题,现在想在R中复制它。
我找到了很多包,如optim、ROI等,但是似乎它们都只接受向量作为要优化的对象,并允许变量取任意连续值。而在我的情况下,我有一个需要满足的约束矩阵,我的变量只能取二进制值。
以下是我要解决的问题:
A-D是机器,1-3是任务,第一个矩阵中的数字是使用X机器完成Y任务产生的价值。约束条件是:A-D只能做一个任务(不能分割);每个任务只能由一台机器工作。
以下是我正在使用的代码:
par = rep(c(0,1),6)
mat <- matrix(c(9,10,11,4,5,10,1,3,5,7,5,4), nrow = 3)
fr <- function(x) {
y= matrix(x,nrow = 4)
sum(mat %*% y)
}
a = optim(par, fr)
一些问题:如何将最大值优化,似乎此函数默认优化最小值?如何向其中添加约束条件?如何限制为二元变量?
xmat = matrix(1:4,ncol=2); x = c(xmat)
- Frank