lpSolveAPI . . , , X Y .
8 . , d (1) (0).
OP
, lpSolveAPI () , . LP ( lpSolveAPI) :
/* Objective function */
max: +pick_1 +2 pick_2 +3 pick_3 +4 pick_4 +5 pick_5 +6 pick_6 +7 pick_7 +8 pick_8;
/* Constraints */
OneX_1: +pick_1 +pick_2 +pick_3 <= 1;
OneX_2: +pick_4 +pick_5 <= 1;
OneX_4: +pick_7 +pick_8 <= 1;
OneY_5: +pick_1 +pick_6 +pick_8 <= 1;
OneY_6: +pick_2 +pick_7 <= 1;
OneY_7: +pick_3 +pick_5 <= 1;
/* Variable bounds */
pick_1 <= 1;
pick_2 <= 1;
pick_3 <= 1;
pick_4 <= 1;
pick_5 <= 1;
pick_6 <= 1;
pick_7 <= 1;
pick_8 <= 1;
: (OneX_2) , pick_4 pick_5 1, 4- 5- d X = 2
, , 4 d
> d[c(3,4,6,7),]
x y w
3 1 7 3
4 2 8 4
6 3 5 6
7 4 6 7
w 20, .
library(lpSolveAPI)
d <- data.frame(x=c(1,1,1,2,2,3,4,4),y=c(5,6,7,8,7,5,6,5),w=c(1,2,3,4,5,6,7,8))
ncol <- 8
lp_rowpicker <- make.lp(ncol=ncol)
set.type(lp_rowpicker, columns=1:ncol, type = c("binary"))
obj_vals <- d[, "w"]
set.objfn(lp_rowpicker, obj_vals)
lp.control(lp_rowpicker,sense='max')
add.constraint(lp_rowpicker, xt=c(1,1,1),
indices=c(1,2,3), rhs=1, type="<=")
add.constraint(lp_rowpicker, xt=c(1,1),
indices=c(4,5), rhs=1, type="<=")
add.constraint(lp_rowpicker, xt=c(1,1),
indices=c(7,8), rhs=1, type="<=")
add.constraint(lp_rowpicker, xt=c(1,1,1),
indices=c(1,6,8), rhs=1, type="<=")
add.constraint(lp_rowpicker, xt=c(1,1),
indices=c(2,7), rhs=1, type="<=")
add.constraint(lp_rowpicker, xt=c(1,1),
indices=c(3,5), rhs=1, type="<=")
solve(lp_rowpicker)
get.objective(lp_rowpicker)
get.variables(lp_rowpicker)
rownames1 <- paste("OneX", c(1,2,4), sep="_")
rownames2 <- paste("OneY", c(5,6,7), sep="_")
colnames<- paste("pick_",c(1:8), sep="")
dimnames(lp_rowpicker) <- list(c(rownames1, rownames2), colnames)
print(lp_rowpicker)
write.lp(lp_rowpicker,filename="max_w.lp")
, , lpSolveAPI .