news 2026/8/3 17:21:12

直接上代码!咱们先搞明白怎么用坐标算曼哈顿距离。比如机器人坐标(3,5),任务点(7,2),距离就是|x1-x2|+|y1-y2|=4+3=7

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
直接上代码!咱们先搞明白怎么用坐标算曼哈顿距离。比如机器人坐标(3,5),任务点(7,2),距离就是|x1-x2|+|y1-y2|=4+3=7

基于遗传算法的任务分配 可以修改机器人和任务坐标 根据曼哈顿距离实现全体路程代价最小最优分配 有代码注释 有流程图

def manhattan_dist(a, b): # 两个坐标点a和b的曼哈顿距离计算 return abs(a[0]-b[0]) + abs(a[1]-b[1])

现在要解决的是多个机器人分配多个任务的最优匹配问题。遗传算法就像生物进化,通过不断迭代找到最优解。先初始化20个随机分配方案(种群),每个方案就是个任务分配序列:

import random def init_population(robot_count, task_count, pop_size=20): # 生成初始种群,每个个体是0到task_count-1的乱序排列 return [random.sample(range(task_count), task_count) for _ in range(pop_size)]

适应度函数是关键!总路程代价越小得分越高,这里用倒数处理:

def fitness(individual, robots, tasks): total_cost = 0 for robot_idx, task_idx in enumerate(individual): # 每个机器人按分配顺序走对应的任务点 robot_pos = robots[robot_idx % len(robots)] # 机器人循环分配 task_pos = tasks[task_idx] total_cost += manhattan_dist(robot_pos, task_pos) return 1 / total_cost # 代价越小适应度越高

交叉操作像父母基因重组。这里用两点交叉,随机选两个切分点交换基因片段:

def crossover(parent1, parent2): # 两点交叉,保留中间段,两端用对方基因补充 size = len(parent1) cx1, cx2 = sorted(random.sample(range(size), 2)) child = parent1[cx1:cx2] for gene in parent2: if gene not in child: child.append(gene) return child

变异操作随机打乱部分基因,增加种群多样性:

def mutate(individual, mutation_rate=0.1): # 按概率随机交换两个任务分配 if random.random() < mutation_rate: i, j = random.sample(range(len(individual)), 2) individual[i], individual[j] = individual[j], individual[i] return individual

整个流程像这样运转(伪流程图):

  1. 初始化种群
  2. While 未达到迭代次数:
    a. 计算每个个体的适应度
    b. 轮盘赌选择优秀个体
    c. 交叉产生新个体
    d. 按概率变异
  3. 输出最优解

测试运行效果:

# 假设3个机器人,5个任务点 robots = [(0,0), (2,4), (5,1)] tasks = [(3,3), (1,5), (4,2), (6,0), (2,1)] best_solution = genetic_algorithm(robots, tasks) print(f"最优分配方案:{best_solution}") # 可能输出:[2, 0, 4, 1, 3] 表示任务分配顺序

代码跑起来后可以观察到总路程代价逐步下降的过程。调整变异率和种群规模能平衡收敛速度与陷入局部最优的风险。实际应用时记得根据硬件性能调整迭代次数,通常200-500代就能稳定输出优质解。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/30 3:21:42

Highcharts 配置语法详解

Highcharts 配置语法详解 Highcharts 是一个功能强大的图表库,可以用于创建各种类型的图表,如柱状图、折线图、饼图等。本文将详细介绍 Highcharts 的配置语法,帮助您更好地使用这个库。 1. 高级图表配置 在 Highcharts 中,所有的图表配置都通过一个 JSON 对象来实现。以…

作者头像 李华
网站建设 2026/7/30 13:12:53

教育AI架构师必学的4个机器学习算法,从线性回归到Transformer

教育AI架构师必学的4个机器学习算法&#xff1a;从线性回归到Transformer 引言&#xff1a;教育AI的“算法困境”与破局之道 作为教育AI架构师&#xff0c;你一定遇到过这些问题&#xff1a; 如何根据学生的作业数据预测期末成绩&#xff0c;提前干预学困生&#xff1f;如何识别…

作者头像 李华
网站建设 2026/7/30 6:09:34

AI魔法剪辑:用Python代码自动生成震撼电影预告片的秘密武器

目录 引言&#xff1a;当代码遇见创意&#xff0c;剪辑革命悄然来临 一、智能剪辑的技术基石&#xff1a;为什么选择Python&#xff1f; 1.1 Python在多媒体处理中的独特优势 1.2 核心技术栈深度解析 二、智能剪辑的核心魔法&#xff1a;算法原理大揭秘 2.1 场景检测的智能…

作者头像 李华
网站建设 2026/7/31 0:27:44

大模型辅助的细粒度知识图谱构建用于机器人故障诊断

文章摘要随着工业机器人在制造业的快速部署,先进维护技术需求日益凸显。本研究提出一种基于大型语言模型(LLM)辅助的数据增强方法,解决维护文本中嵌套实体识别难题和工业数据标注稀缺问题,构建更细粒度的故障诊断知识图谱,在小样本场景下平均F1值提升达8.25%。阅读原文或https:…

作者头像 李华
网站建设 2026/7/26 11:29:54

强烈安利!继续教育必用TOP8 AI论文网站测评

强烈安利&#xff01;继续教育必用TOP8 AI论文网站测评 2025年继续教育AI论文工具测评&#xff1a;精准匹配学习与研究需求 在继续教育的背景下&#xff0c;越来越多的学习者需要撰写高质量的论文以提升学术能力或满足课程要求。然而&#xff0c;面对繁重的写作任务和复杂的格…

作者头像 李华
网站建设 2026/7/30 10:29:49

电影《匿杀》票房破亿 黄晓明以复杂人物切入犯罪悬疑叙事

2025年12月31日&#xff0c;由柯汶利执导的犯罪悬疑大片《匿杀》在全国院线正式上映&#xff0c;影片上映第二日票房就突破亿元大关&#xff0c;在跨年档多部影片同台竞争的市场环境下&#xff0c;《匿杀》取得这一成绩&#xff0c;显示出影片在悬疑犯罪类型中的市场吸引力&…

作者头像 李华