R中限定取值的双变量约束优化问题求助
解决离散取值变量的优化问题
由于你的变量x和y只能取0、1、2这三个离散值,且变量数量极少,直接用枚举法是最简洁高效的方案——constrOptim这类函数针对连续变量设计,无法强制变量取指定的离散值,不适用当前场景。
实现步骤:
- 生成所有可能的
x和y组合 - 计算每个组合的目标函数值
- 筛选满足约束条件
100x + 150y ≥ 350的组合(x≥0、y≥0已由取值范围保证) - 在符合约束的组合中找到目标值最小的解
R代码实现
# 定义目标函数 g <- function(x, y) 100*x + 150*y # 生成所有x、y的可能组合 all_pairs <- expand.grid(x = 0:2, y = 0:2) # 计算每个组合的目标值 all_pairs$target <- g(all_pairs$x, all_pairs$y) # 筛选满足约束的组合 valid_pairs <- subset(all_pairs, target >= 350) # 找到最优解(目标值最小的组合) best_solution <- valid_pairs[which.min(valid_pairs$target), ] # 输出结果 print(best_solution)
结果说明
运行代码后会得到最优解:x=1,y=2,对应的目标值为400,这是满足约束条件的最小可能值(其他符合约束的组合如x=2,y=2目标值为500,x=0,y=3不在允许的取值范围内)。
内容的提问来源于stack exchange,提问作者Alex Germain
相关产品推荐
相关产品推荐

