遗传算法解决旅行商问题R代码
时间: 2024-12-15 15:17:51 浏览: 4
遗传算法是一种基于生物进化原理的优化搜索方法,常用于求解复杂问题。对于旅行商问题(Traveling Salesman Problem, TSP),它是一个经典的组合优化问题,目标是寻找最短路径,使得一位旅行者访问所有城市一次后返回起点。
以下是使用遗传算法解决旅行商问题的一个简单R语言实现示例:
```r
# 导入必要库
library(genoalg)
library(deoptim)
# 定义TSP问题函数(欧几里得距离)
tsp_function <- function(cities) {
return(sum(sqrt(diff(cities)^2)))
}
# 创建初始种群
set.seed(123) # 设置随机数种子保证结果可复现
pop_size <- 50 # 种群大小
cities <- matrix(runif(2 * pop_size), ncol = 2) # 假设有50个城市,随机生成坐标
# 遗传操作
ga_params <- gaControl(functions = tsp_function,
popSize = pop_size,
maxGen = 100, # 最大迭代次数
eliteCount = 2, # 保留最好的个体
mutationProb = 0.2, # 遗传突变概率
crossoverProb = 0.8, # 交叉概率
maximize = TRUE) # 目标是最小化距离
# 运行遗传算法
solution <- ga(tsp_function, cities, gaParams = ga_params)
# 输出最佳解
cat("Best tour length (in euclidean distance): ", tsp_function(solution$bestIndiv), "\n")
cat("Solution:", solution$bestIndiv, "\n")
阅读全文