`values <- matrix(c(0.174,0.349,1.075,3.1424,0.173,0.346,1.038,3.114,0.171,0.343,1.03,3.09,0.17,0.34,1.02,3.06),ncol=4) `
我尝试最大化数据集的总值,每行只取一个值,每列有相关成本
取决于:
1.每行使用一个值列。
1.每次使用列1的成本是4
每次使用列2的成本是3
每次使用列3的成本是2
每次使用列4的成本是1
总成本〈= 11
这些都是一个更大的数据集的替代值。我需要能够将其直接应用到数据集的所有行。
我一直在尝试使用lpSolve包,但没有成功。
`f.obj <- values
f.con <- c(4,3,2,1)
f.dir <- "<="
f.rhs <- 11
lp("max", f.obj, f.con, f.dir, f.rhs)`
我得到的解为"0"
我不知道如何以这样一种方式对此进行建模:每行选择一个值,然后在计算约束时使用不同的值。
2条答案
按热度按时间ztyzrc3y1#
看来问题是这样的:
1.我们有一个矩阵a [i,j],它有值,还有一个向量c [j],它有代价。
1.我们希望为每行选择一个值,以便:
a.总成本〈= 11
b.总价值最大化
1.为了建立一个数学模型,我们引入了二进制变量
x[i,j] ∈ {0,1}
。1.在R中实现。我在这里使用CVXR。
输出如下所示:
原帖子中的描述不是很精确。例如,我假设我们需要从每一行中精确地选择一个单元格。如果我们只想"从每一行中最多选择一个单元格",那么替换
作者
fnvucqvd2#
正如Steve提到的,
lpSolve
包需要一个目标函数,而不是一个矩阵。例如,将矩阵转换为向量,并将问题转换为整数优化问题