我有table1:
有:
p_code,v1,v2,v3sum,vmax fields
table1 v2字段是p_code:
中table2的v2值的聚合
我希望机器解决问题:
maximize v3sum3 = v1+v2
其中:
我的脚本在这里:
p_code<-1:12
v1<-sample(12)
v2<-0
v3sum<-0
vmax<-0
table1<-data.frame(p_code,v1,v2=0,v3sum,vmax)
table1$v3sum<-table1$v1+table1$v2
table1$vmax<-300
v2<-rep(2:7,50)
table2<-data.frame(p_codex=0,p_code=0,v2)
fn<-function(x){
for(i in 1:nrow(table2)){
table2$p_code[i]<-round(x[i])
}
print(table2$p_code)
table2a<-aggregate(table2$v2,list(table2$p_code),sum)
names(table2a)<-c("p_code","v2")
table2_1<-merge(table2a,table1,all.y=TRUE)
table2_1$v3sum<-table2_1$v1+table2_1$v2
# View(table2_1)
return(sum(table2_1$v3sum))
}
fnOgr<-function(x){
table2$p_codex<-x
for(i in 1:nrow(table2)){
table2$p_code[i]<-round(x[i])
}
print(table2$p_code)
table2a<-aggregate(table2$v2,list(table2$p_code),sum)
names(table2a)<-c("p_code","v2")
table2_1<-merge(table2a,table1,all.y=TRUE)
table2_1$v3sum<-table2_1$v1+table2_1$v2
# View(table2_1)
return(table2_1$v3sum)
}
constraintsLower<-table1$vmax
constraintsUpper<-table1$vmax*3
x0<-c(1:nrow(table2))
LB_p<-c(rep(0,nrow(table2)))
UB_p<-c(rep(12,nrow(table2)))
sol1<-solnp(x0, fun = fn, ineqfun = fnOgr, ineqLB = constraintsLower, ineqUB=constraintsUpper, LB=LB_p, UB=UB_p)
但显然x0
没有变化。问题仍未解决。有谁可以帮助我?
谢谢