用LPR求解最小化目标函数问题

用LPR求解最小化目标函数问题,r,linear-programming,lpsolve,R,Linear Programming,Lpsolve,我正在解决一个简单的线性优化问题。我有一堆作物,每吨都有相关的土地需求,每吨都有水足迹。我想知道我需要多少吨每种作物,以尽量减少水足迹。在第一次运行中,我将创建一个线性优化,只有一个土地约束。土地面积必须等于2958700。但是,当我运行代码时,我的解决方案会对所有作物显示“0”。有人能帮忙吗 land<-c(0.03448276,0.09090909,0.06346154,0.25099602,0.26731171) water_footprint<-c(2990.3, 5980.

我正在解决一个简单的线性优化问题。我有一堆作物,每吨都有相关的土地需求,每吨都有水足迹。我想知道我需要多少吨每种作物,以尽量减少水足迹。在第一次运行中,我将创建一个线性优化,只有一个土地约束。土地面积必须等于2958700。但是,当我运行代码时,我的解决方案会对所有作物显示“0”。有人能帮忙吗

land<-c(0.03448276,0.09090909,0.06346154,0.25099602,0.26731171)
water_footprint<-c(2990.3, 5980.1, 31679.5,8802.3,16404.3)

crop_name<-c("banana","guava","mango","maize","rice")

crop_dataframe<-data.frame(crop_name,land,water_footprint)

const.mat<-land
const.dir<-c("=")
const.rhs<-2958700

library(lpSolve)
min_waterfootpint<-lp(direction = "min", water_footprint, const.mat, const.dir, const.rhs)$solution
paste(min_waterfootpint)

land我认为您应该将
land
处理成一个矩阵,作为您的
lp
的输入,即

const.mat<-t(matrix(land))

land
?解决方案状态如何?Re:Erwin Kalvelagen-GAMS家伙!在这里见到你真有趣。对于OP,您可能希望调查ompr和roi包,ompr是一个调用roi功能的模型管理平台。roi允许调用各种解算器,包括lpSolve。您也可以直接使用roi函数建立模型,但ompr使模型管理更容易。请注意,roi有一个函数roi_write,它以标准形式写出一个公式,用于目视检查,以帮助调试。对不起!我没有在陆地上复制,谢谢!这起作用了。然而,你知道为什么[4](即玉米)的水足迹为8802.3,而[1](即香蕉)的水足迹为2990.3,那么解中的数字大于0吗?@ZaraLiew也许你应该从数学的角度理解你的问题……香蕉的水足迹较低,但是它的单位土地只有0.03448276,这意味着当你想要满足2958700的土地限制时,你将拥有更多的数量
> paste(min_waterfootpint)
[1] "0"                "0"                "0"                "11787836.3170858"
[5] "0"