R中带遗传算法的广义指派问题
如何实现一个广义指派问题:在R 我有一个代码的工作示例,但它不工作:R中带遗传算法的广义指派问题,r,genetic-algorithm,integer-programming,R,Genetic Algorithm,Integer Programming,如何实现一个广义指派问题:在R 我有一个代码的工作示例,但它不工作: require(GA) p <- matrix(c(5, 1, 5, 1, 5, 5, 5, 5, 1), nrow = 3) t <- c(2, 2, 2) w <- c(2, 2, 2) assigment <- function(x) { f <- sum(x * p) penalty1 <- sum(w)*(sum(t)-sum(w*x)) penalty2 <
require(GA)
p <- matrix(c(5, 1, 5, 1, 5, 5, 5, 5, 1), nrow = 3)
t <- c(2, 2, 2)
w <- c(2, 2, 2)
assigment <- function(x) {
f <- sum(x * p)
penalty1 <- sum(w)*(sum(t)-sum(w*x))
penalty2 <- sum(w)*(1-sum(x))
f - penalty1 - penalty2
}
GA <- ga(type = "binary", fitness = assigment, nBits = length(p),
maxiter = 1000, run = 200, popSize = 20)
summary(GA)
require(GA)
p您对适应度函数(即assignment()
函数)的定义似乎存在问题
x
是一个二进制向量,而不是理论上的矩阵,因此sum(x*p)
没有达到您可能期望的效果(注意x
的长度为9,p
在您的示例中是一个3x3矩阵)李>
penalty2
项未正确考虑x{ij}和的约束李>
- 对于
penalty1
和penalty2
,惩罚应该采取不同的行动,第一个是不平等(即,你看过这些出版物吗?谷歌搜索揭示了更多优化/专业的GA实施。