使用R在较大选择范围内优化顶部值

问题描述

以下代码优化了mtcars数据集中的总mpg。我们从每个档位类别(3/4/5档)中选择2辆汽车。我们还增加了最大总马力的限制。

我正在寻找一种方法来更改优化,以免使总mpg最大化。取而代之的是,我们希望在保持所有约束的前提下,使每种档次的最佳汽车的总mpg最大化。有可能吗?

library(dplyr)
library(lpSolve)

# Get data
df <- mtcars

# Create constraints. Choose 2 cars with 3 gears,2 cars with 4 .. 
n_gear3 = 2
n_gear4 = 2
n_gear5 = 2

# .. and max total hp
hp_max = 540

# Create vectors to constrain by gears
df$n_gear3 = ifelse(df$gear == 3,1,0)
df$n_gear4 = ifelse(df$gear == 4,0)
df$n_gear5 = ifelse(df$gear == 5,0)

# Constraint directions
const_dir <- c("=","=","<=")

# Optimize for mpg
objective = df$mpg

# Complete the matrix
const_mat = matrix(c(df$n_gear3,df$n_gear4,df$n_gear5,df$hp),nrow=4,byrow=TRUE)
const_rhs = c(n_gear3,n_gear4,n_gear5,hp_max)

# And solve the linear system
solved = lp("max",objective,const_mat,const_dir,const_rhs,all.bin=TRUE,all.int=TRUE)
my_solution <- arrange(df[which(solved$solution==1),])

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)