gpt4 book ai didi

r - R中具有条件约束的线性规划

转载 作者:行者123 更新时间:2023-12-04 14:55:54 25 4
gpt4 key购买 nike

我有一个线性规划问题,我试图从许多二进制资源中进行选择以优化值(value),基本上是一个背包问题。我遇到的问题是不同的资源具有共同的特征,我想确保我的最终解决方案具有 0 或 2 个具有特定特征的资源。有什么方法可以做到这一点吗?尽管进行了广泛的搜索,但我一直无法想到或找到一个。在我的数据中,决策变量是资源,约束是这些资源的特征。考虑以下代码:

library(lpSolve)
const_mat_so<-matrix(c(
c(0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,1,0,0,1,0,1)
,c(0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,1,1,0,0,1,1)
,c(0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1,0,1,0,1,0,0)
,c(1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0,0,0,0,0,0,0)
,c(8800, 8500, 7600, 8600, 8400, 7500, 7000, 8500, 8800, 7700, 6700,5500,1200,6700,9500,8700,6500)
,c(0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,0,0,0,0,0,0)
,c(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,0,0,0,0,0,0)
,c(0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0,0,0,0)
,c(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1,0,0,1,0,1,0)
,c(0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0,1,1,0,0,0,0)
,c(0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0,0,0,0,0,0,0)
,c(0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0,1,1,1,0,1,0)
,c(0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,0,0,0,0,1,0)
,c(0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,0,0,0,1,0,0)
,c(0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,0,0,0,0,0,0)
),nrow=15,byrow = TRUE)

const_dir_so<-c("=","=","=","=","<=","<=","<=","<=","<=","<=","<=","<=","<=","<=","<=")

max_cost_so = 25000

objective_so = c(21.0, 19.3, 19.2, 18.8, 18.5, 16.6, 16.4, 16.4, 16.0, 16.0, 14.9, 14.6, 14.0, 13.9,12.0,5.5,24.6)

const_rhs_so<-c(1,1,1,1,25000,3,3,3,2,2,2,2,2,2,2)

x = lp ("max", objective_so, const_mat_so, const_dir_so, const_rhs_so, all.bin=TRUE, all.int=TRUE
)

> x
Success: the objective function is 68.1

> x$solution
[1] 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0

虽然上面产生了一个解决方案,但它不是我想要的解决方案,因为我实际上希望最后七个约束 >=2 或 0。我不知道如何对此进行编码或是否可能。任何帮助,将不胜感激。我不是线性编程高手,所以请原谅对这种方法的任何误解。

最佳答案

我相信 LpSolve 支持半连续变量。具有下限 L 和上限 U 的半连续变量可以假定值为 0 或介于 L 和 U 之间。我不确定 R 包 lpSolve 是否支持这种变量类型。

然而,我们可以用一个额外的二进制变量 y 来模拟这一点。和额外的约束。所以你需要制作你的x变量连续(或整数,如果你只想要整数值)并添加约束:

2*y <= x <= U*y

哪里 Ux 的上限.

关于r - R中具有条件约束的线性规划,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40900940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com