用turtle构建强化学习环境遇形状异常,求解决方案
问题排查与解决方法
一眼就能找到问题啦:你预期屏幕上只显示两台机器(白色正方形),但实际上你的代码除了machine1和machine2这两个机器对象外,还额外创建了4个turtle.Turtle()实例——对应两台机器的取货点(蓝色三角形)和送货点(绿色三角形),这些对象默认都会在屏幕上渲染出形状,所以就出现了你看到的“多余形状”。
具体解决步骤:
- 如果暂时不需要这些取货/送货点:直接删除
pickup_m1、delivery_m1、pickup_m2、delivery_m2对应的全部代码块即可,这样屏幕上就只会显示两台白色的机器正方形。 - 如果后续需要用到这些点但现在不想显示:可以在每个取货/送货点的turtle定义末尾添加
hideturtle()方法,隐藏这些形状,示例如下:
# pickup point for machine 1 pickup_m1 = turtle.Turtle() pickup_m1.shape('triangle') pickup_m1.speed(0) pickup_m1.shapesize(stretch_wid=1, stretch_len=1) pickup_m1.penup() pickup_m1.color('blue') pickup_m1.goto(-140, -30) pickup_m1.tilt(180) pickup_m1.hideturtle() # 隐藏该形状
额外优化建议:
你创建机器的代码重复度很高,可以封装成一个函数来减少冗余,后续修改属性或添加机器时会更方便:
def create_machine(x, y): machine = turtle.Turtle() machine.shape('square') machine.speed(0) machine.shapesize(stretch_wid=5, stretch_len=5) machine.penup() machine.color('white') machine.goto(x, y) return machine # 创建两台机器 machine1 = create_machine(-100, 0) machine2 = create_machine(100, 0)
内容的提问来源于stack exchange,提问作者CHIBOUB Amine
相关产品推荐
相关产品推荐

