AI基础 L26 Introduction to Automated Planning - II

news2024/9/22 13:37:52

ADL
Action Description Language (ADL) is a richer language than STRIPS.
It allows for
• Positive and negative literals in states
• The open world assumption
• Quantified variables in goals as well as conjunctions and disjunctions
• Conditional effects
• (in)Equality predicates
• Types associated with variables

  1. 状态中的正负文字

    • ADL 允许状态中包含正文字和负文字,这使得状态的描述更加灵活和精确。
    • 负文字表示某种条件不成立。
  2. 开放世界假设

    • ADL 支持开放世界假设,这意味着状态中未提及的条件默认为假。
    • 这与 STRIPS 中的封闭世界假设不同,后者假设未提及的条件默认为真。
  3. 目标中的量化变量

    • ADL 允许在目标中使用量化变量,这使得可以定义更复杂的规划目标。
    • 量化变量可以出现在合取(conjunctions)和析取(disjunctions)中。
  4. 条件效果

    • ADL 允许动作具有条件效果,这意味着动作的效果取决于执行动作时的状态。
    • 条件效果比 STRIPS 的简单效果更加灵活。
  5. (不)等式谓词

    • ADL 支持 (不) 等式谓词,这使得可以表达更复杂的关系和条件。
    • 等式谓词可以用来比较变量的值。
  6. 变量类型

    • ADL 允许为变量指定类型,这有助于避免类型错误和提高规划的准确性。

PDDL
• Planning Domain Definition Language (PDDL)
is a standard encoding language for “classical“ planning tasks
• Components of a PDDL planning task:
        — Objects: Things in the world that interest us.
        — Predicates: Properties of objects that we are interested in; can be true or false.
        — Initial state: The state of the world that we start in.
        — Goal specification: Things that we want to be true.
        — Actions/Operators: Ways of changing the state of the world.

  1. 对象(Objects)

    • 对象是我们在世界中感兴趣的事物。
    • 对象可以是具体的实体,如人、物体、地点等。
  2. 谓词(Predicates)

    • 谓词是对象属性的描述,可以是真或假。
    • 谓词定义了对象之间的关系和状态。
  3. 初始状态(Initial state)

    • 初始状态是我们开始时的世界状态。
    • 它描述了所有对象和谓词的初始值。
  4. 目标规格(Goal specification)

    • 目标规格是我们希望为真的事物。
    • 它定义了规划任务的成功条件。
  5. 动作/运算符(Actions/Operators)

    • 动作/运算符是改变世界状态的方式。
    • 它们定义了智能体可以执行的操作,以及这些操作如何改变对象和谓词的状态。

PDDL 示例

  • 对象

    • “Person, House, Room”
    • 这里定义了三种对象:人、房子和房间。
  • 谓词

    • “In(person, room)”
    • “Owns(person, house)”
    • 这些谓词描述了对象之间的关系和状态。
  • 初始状态

    • “In(Alice, Living_Room), Owns(Alice, House1)”
    • 初始状态描述了对象和谓词的初始值。
  • 目标规格

    • “In(Alice, Kitchen)”
    • 目标规格定义了规划任务的成功条件。
  • 动作/运算符

    • “Move(person, room)”
    • “Enter(person, house)”
    • 这些动作/运算符定义了智能体可以执行的操作。

Planning tasks specified in PDDL are separated into two files:
1 A domain file for predicates and actions.
2 A problem file for objects, initial state and goal specification.

领域文件(Domain File)

  • 内容:领域文件包含规划领域的常量、谓词、动作和运算符。
  • 作用:定义了智能体可以采取哪些动作,以及这些动作如何改变世界状态。
  • 示例:在上面提供的 gripper 领域文件示例中,定义了谓词如 “room”、“ball”、“gripper” 等,以及动作 “move”、“pick” 和 “drop”。

问题文件(Problem File)

  • 内容:问题文件包含规划问题的对象、初始状态和目标规格。
  • 作用:定义了智能体需要解决的具体问题,包括哪些对象是重要的、初始状态下世界是什么样的,以及智能体需要达到的目标状态。
  • 示例:在 gripper 问题文件中,定义了初始状态如 “In(Alice, Living_Room), Owns(Alice, House1)”,以及目标规格如 “In(Alice, Kitchen)”。

规划任务的分解

Domain Files

<domain name> is a string that identifies the planning domain,
e.g. gripper.

<domain name> 用于为每个规划领域指定一个唯一的名称,以区分不同的问题类型。每个规划领域都有其特定的规则和操作,这使得规划系统能够针对每个领域定制解决方案。例如,一个名为 “gripper” 的领域可能涉及抓取器操作,而另一个名为 “rover” 的领域可能涉及机器人导航。每个领域都有其独特的约束和目标,因此需要不同的规划策略来解决。通过使用不同的 <domain name>,规划系统能够识别和处理特定领域的规划问题,从而更有效地生成解决方案。
Example on the web: gripper.pddl.、

Problem Files

<problem name>is a string that identifies the planning task, e.g. gripper-four-balls.

<domain name>must match the domain name in the corresponding domain file. Example on the web: gripper-one.pddl.

<problem name> 是一个字符串,用于标识规划任务。它是在定义问题(problem)时使用的,以明确区分不同的规划任务。每个规划任务都可以有一个唯一的名称,这个名称通常以文件的形式存在,例如 “gripper-four-balls.pddl”。

在PDDL文件中,<problem name> 指定了规划任务的名称,以便规划系统能够识别和处理该任务的特定细节。<problem name> 必须与对应的领域文件(domain file)中的 <domain name> 匹配。例如,如果一个规划任务的文件名为 “gripper-one.pddl”,那么它的 <domain name> 必须是 “gripper”。这种匹配确保了规划系统能够正确地关联规划领域和规划任务的定义,从而有效地解决规划问题。

Running Example
• Gripper task with four balls:
There is a robot that can move between two rooms and pick up or drop balls with
either of his two arms. Initially, all balls and the robot are in the first room. We want
the balls to be in the second room.
• Objects: The two rooms, four balls and two robot arms.
• Predicates: Is x a room? Is x a ball? Is ball x inside room y? Is robot arm x empty? [...]
• Initial state: All balls and the robot are in the first room. All robot arms are empty.
[...]
• Goal specification: All balls must be in the second room.
• Actions/Operators: The robot can move between rooms, pick up a ball or drop a ball.

象(Objects)

  • 房间:两个房间,分别称为 “Room1” 和 “Room2”。
  • :四个球,分别称为 “Ball1”、“Ball2”、“Ball3” 和 “Ball4”。
  • 机器人手臂:两只机器人手臂,分别称为 “Arm1” 和 “Arm2”。

谓词(Predicates)

  • 房间谓词:例如 “Is(Room1, room)” 表示 “Room1” 是一个房间。
  • 球谓词:例如 “Is(Ball1, ball)” 表示 “Ball1” 是一个球。
  • 球在房间中的谓词:例如 “In(Ball1, Room1)” 表示 “Ball1” 在 “Room1” 中。
  • 机器人手臂空谓词:例如 “Empty(Arm1)” 表示 “Arm1” 是空的。

初始状态(Initial state)

  • 所有球和机器人都在第一个房间:例如 “In(Ball1, Room1), In(Ball2, Room1), In(Ball3, Room1), In(Ball4, Room1), In(Arm1, Room1), In(Arm2, Room1)”。
  • 所有机器人手臂都是空的:例如 “Empty(Arm1), Empty(Arm2)”。

目标规格(Goal specification)

  • 所有球都必须在第二个房间:例如 “In(Ball1, Room2), In(Ball2, Room2), In(Ball3, Room2), In(Ball4, Room2)”。

动作/运算符(Actions/Operators)

  • 机器人可以在房间之间移动:例如 “Move(Arm1, Room1, Room2)” 表示 “Arm1” 从 “Room1” 移动到 “Room2”。
  • 机器人可以捡起球:例如 “Pickup(Ball1, Arm1)” 表示 “Arm1” 捡起 “Ball1”。
  • 机器人可以放下球:例如 “Drop(Ball1, Arm1)” 表示 “Arm1” 放下 “Ball1”。

解决方案

  • 可能的解决方案
    1. 机器人可以先用一只手臂将球从第一个房间移动到第二个房间。
    2. 然后,机器人可以用另一只手臂捡起第一个房间中的球,并将它们移动到第二个房间。
    3. 最后,机器人将所有球放在第二个房间中。

这个例子展示了一个简单的抓取器任务,其中机器人需要将四个球从第一个房间移动到第二个房间。通过定义对象、谓词、初始状态、目标规格和动作,我们可以使用PDDL来描述和解决这个规划问题。这种方法使得规划器能够更好地处理规划问题,并找到有效的解决方案。

Gripper Task: Objects
• Objects:
Rooms: rooma, roomb
Balls: ball1, ball2, ball3, ball4
Robot arms: left, right
• In PDDL:
( :objects rooma roomb
        ball1 ball2 ball3 ball4
        left right )

Gripper task: Predicates

Gripper Task: Initial State

• Initial State:
room(rooma) and room(roomb) are true.
ball(ball1), ..., ball(ball4) are true.
gripper(left), gripper(right), free(left) and free(right) are true.
at-robby(rooma), at-ball(ball1, rooma), ..., at-ball(ball4, rooma) are true.
Everything else is false.
• In PDDL

Gripper Task: Goal Specification
• Goal Specification:
at-ball(ball1, roomb), ..., at-ball(ball4, roomb) must be true.
Everything else, we don’t care about.
• In PDDL:

Gripper Task: Movement Operator

Gripper Task: Pick-up Operator

Gripper Task: Drop Operator

A note on Action Effects
• Action effects can be more complicated than seen so far.
• They can be universally quantified:
(forall (?v1 ... ?vn)
<effect>)
• They can be conditional:
(when <condition>
<effect>)
• Example on the web: crazy-switches.pddl

  1. 普遍量化

    • 动作效果可以使用普遍量化(universal quantification)来表示,这意味着效果对所有可能的情况都成立。
    • 普遍量化形式为 (forall (?v1 ... ?vn) <effect>),其中 ?v1 ... ?vn 是变量,<effect> 是效果的描述。
    • 例如,一个普遍量化的效果可能是 (forall (?ball) (in ?ball room2)),表示所有球都在房间2中。
  2. 条件效果

    • 动作效果也可以是条件性的,这意味着效果只在满足特定条件时才发生。
    • 条件效果形式为 (when <condition> <effect>),其中 <condition> 是效果发生的条件,<effect> 是效果的描述。
    • 例如,一个条件效果可能是 (when (empty ?arm) (pickup ?ball ?arm)),表示当手臂为空时,捡起球。

 Exercise

• Formalise the actions of the Blocks
World Domain:
• Predicates:
— on(A,B) - A is on B
— block(B) - B is a block
— clear(B) - B is clear
• Objects: Blocks a, b and c; table (always clear)Start State Goal State

 (in STRIPS)

Init(On(A, Table) ∧ On(B, Table) ∧ On(C, A)
∧ Block (A) ∧ Block (B) ∧ Block (C) ∧ Clear (B) ∧ Clear (C))
Goal (On(A, B) ∧ On(B, C))
Action(Move(b, x, y),
PRECOND: On(b, x) ∧ Clear (b) ∧ Clear (y) ∧ Block (b) ∧ Block (y) ∧
(b" =x) ∧ (b" =y) ∧ (x"=y),
EFFECT: On(b, y) ∧ Clear (x) ∧ ¬On(b, x) ∧ ¬Clear (y))
Action(MoveToTable (b, x),
PRECOND: On(b, x) ∧ Clear (b) ∧ Block (b) ∧ (b" =x),
EFFECT: On(b, Table) ∧ Clear (x) ∧ ¬On(b, x))

  1. Init(On(A, Table) ∧ On(B, Table) ∧ On(C, A)

    • 这行代码定义了规划问题的初始状态。
    • Init 是STRIPS中的一个关键字,用于定义初始状态。
    • On(A, Table) 表示方块 A 在桌子 Table 上。
    • On(B, Table) 表示方块 B 在桌子 Table 上。
    • On(C, A) 表示方块 C 在方块 A 上。
  2. ∧ Block (A) ∧ Block (B) ∧ Block © ∧ Clear (B) ∧ Clear ©)

    • 这行代码继续定义了初始状态。
    • Block (A) 表示方块 A 是一个块。
    • Block (B) 表示方块 B 是一个块。
    • Block (C) 表示方块 C 是一个块。
    • Clear (B) 表示方块 B 是空的。
    • Clear (C) 表示方块 C 是空的。
  3. Goal (On(A, B) ∧ On(B, C))

    • 这行代码定义了规划问题的目标状态。
    • Goal 是STRIPS中的一个关键字,用于定义目标状态。
    • On(A, B) 表示方块 A 在方块 B 上。
    • On(B, C) 表示方块 B 在方块 C 上。
  4. Action(Move(b, x, y),

    • 这行代码定义了一个名为 Move 的动作。
    • Action 是STRIPS中的一个关键字,用于定义动作。
    • Move 是动作的名称。
    • (b, x, y) 是动作的参数,其中 b 是移动的方块,x 是方块 b 当前的位置,y 是方块 b 目标位置。
  5. PRECOND: On(b, x) ∧ Clear (b) ∧ Clear (y) ∧ Block (b) ∧ Block (y) ∧ (b" =x) ∧ (b" =y) ∧ (x"=y),

    • 这行代码定义了 Move 动作的前提条件。
    • PRECOND 是STRIPS中的一个关键字,用于定义动作的前提条件。
    • On(b, x) 表示方块 b 在位置 x 上。
    • Clear (b) 表示位置 b 是空的。
    • Clear (y) 表示位置 y 是空的。
    • Block (b) 表示方块 b 是一个块。
    • Block (y) 表示位置 y 是一个块。
    • (b" =x) ∧ (b" =y) ∧ (x"=y) 表示方块 b 移动后位置不变,即 b 从 x 移动到 y
  6. EFFECT: On(b, y) ∧ Clear (x) ∧ ¬On(b, x) ∧ ¬Clear (y))

    • 这行代码定义了 Move 动作的效果。
    • EFFECT 是STRIPS中的一个关键字,用于定义动作的效果。
    • On(b, y) 表示方块 b 现在在位置 y 上。
    • Clear (x) 表示位置 x 现在是空的。
    • ¬On(b, x) 表示方块 b 不再在位置 x 上。
    • ¬Clear (y) 表示位置 y 不再是空的。
  7. Action(MoveToTable (b, x),

    • 这行代码定义了一个名为 MoveToTable 的动作。
    • Action 是STRIPS中的一个关键字,用于定义动作。

PDDL Domain

  1. (define (domain blocks))

    • 这行代码定义了一个名为 blocks 的规划领域。
    • define 是PDDL中的一个关键字,用于定义一个领域。
    • (domain blocks) 定义了一个名为 blocks 的规划领域。
  2. (:requirements :strips)

    • 这行代码指定了 blocks 规划领域必须满足的要求。
    • requirements 是PDDL中的一个关键字,用于指定领域的要求。
    • :strips 表示该领域使用STRIPS风格的谓词逻辑。
  3. (:constants-def table)

    • 这行代码定义了一个名为 table 的常量。
    • constants-def 是PDDL中的一个关键字,用于定义常量。
    • table 是常量的名称。
  4. (:predicates ( on ?a ?b ) ( block ?b ) ( clear ?b ) )

    • 这行代码定义了一组谓词。
    • predicates 是PDDL中的一个关键字,用于定义谓词。
    • on ?a ?b 表示一个谓词,其中 ?a 和 ?b 是变量,用于表示两个对象之间的关系。
    • block ?b 表示一个谓词,其中 ?b 是变量,用于表示一个对象是否是块。
    • clear ?b 表示一个谓词,其中 ?b 是变量,用于表示一个对象是否是空的。
  5. (:action move

    • 这行代码定义了一个名为 move 的动作。
    • action 是PDDL中的一个关键字,用于定义动作。
    • move 是动作的名称。
  6. :parameters ( ?b ?x ?y )

    • 这行代码指定了 move 动作的参数。
    • parameters 是PDDL中的一个关键字,用于指定动作的参数。
    • ?b ?x ?y 是参数的名称,其中 ?b?x 和 ?y 是变量。
  7. :precondition ( and ( on ?b ?x ) ( clear ?y ) ( clear ?b ) ( block ?b ) ( block ?y ) )

    • 这行代码定义了 move 动作的前提条件。
    • precondition 是PDDL中的一个关键字,用于定义动作的前提条件。
    • ( and ( on ?b ?x ) ( clear ?y ) ( clear ?b ) ( block ?b ) ( block ?y ) ) 是一个合取,表示所有条件必须同时满足。
  8. :effect ( and ( on ?b ?y ) ( clear ?x ) ( not ( on ?b ?x ) ) ( not ( clear ?y ) ) )

    • 这行代码定义了 move 动作的效果。
    • effect 是PDDL中的一个关键字,用于定义动作的效果。
    • ( and ( on ?b ?y ) ( clear ?x ) ( not ( on ?b ?x ) ) ( not ( clear ?y ) ) ) 是一个合取,表示执行动作后,状态将如何变化。
  9. (:action moveToTable

    • 这行代码定义了一个名为 moveToTable 的动作。
    • action 是PDDL中的一个关键字,用于定义动作。
    • moveToTable 是动作的名称。
  10. :parameters ( ?b ?x )

    • 这行代码指定了 moveToTable 动作的参数。
    • parameters 是PDDL中的一个关键字,用于指定动作的参数。
    • ?b ?x 是参数的名称,其中 ?b 和 ?x 是变量。

 

  1. 11:precondition ( and ( on ?b ?x ) ( clear ?b ) ( block ?b ) ( clear ?x ) )

    • 这行代码定义了 moveToTable 动作的前提条件。
    • precondition 是PDDL中的一个关键字,用于定义动作的前提条件。
    • ( and ( on ?b ?x ) ( clear ?b ) ( block ?b ) ( clear ?x ) ) 是一个合取,表示所有条件必须同时满足。
  2. 12:effect ( and ( on ?b table ) ( clear ?x ) ( not ( on ?b ?x ) ) )

    • 这行代码定义了 moveToTable 动作的效果。
    • effect 是PDDL中的一个关键字,用于定义动作的效果。
    • ( and ( on ?b table ) ( clear ?x ) ( not ( on ?b ?x ) ) ) 是一个合取,表示执行动作后,状态将如何变化。

PDDL Problem Definition

  1. (define (problem pb1))

    • 这行代码定义了一个名为 pb1 的规划问题。
    • define 是PDDL中的一个关键字,用于定义一个问题。
    • (problem pb1) 定义了一个名为 pb1 的规划问题。
  2. (:domain blocks)

    • 这行代码指定了 pb1 规划问题使用的规划领域。
    • domain 是PDDL中的一个关键字,用于指定问题使用的领域。
    • blocks 是之前定义的规划领域名称。
  3. (:objects a b c table)

    • 这行代码定义了 pb1 规划问题中的对象。
    • objects 是PDDL中的一个关键字,用于定义问题中的对象。
    • a b c table 是对象列表,其中 a b c 是方块的名称,table 是桌子的名称。
  4. (:init ( on a table ) ( on b table ) ( on c a )

    • 这行代码定义了 pb1 规划问题的初始状态。
    • init 是PDDL中的一个关键字,用于定义初始状态。
    • ( on a table ) ( on b table ) ( on c a ) 表示方块 a 在桌子 table 上,方块 b 在桌子 table 上,方块 c 在方块 a 上。
  5. ( block a ) ( block b ) ( block c ) ( clear b ) ( clear c ) )

    • 这行代码继续定义了 pb1 规划问题的初始状态。
    • block a ) ( block b ) ( block c ) ( clear b ) ( clear c ) 表示方块 ab 和 c 都是块,方块 b 和 c 都是空的。
  6. (:goal ( and ( on a b ) ( on b c ) ) )

    • 这行代码定义了 pb1 规划问题的目标状态。
    • goal 是PDDL中的一个关键字,用于定义目标状态。
    • ( on a b ) ( on b c ) 表示方块 a 在方块 b 上,方块 b 在方块 c 上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2155176.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web_php_include 攻防世界

<?php show_source(__FILE__); echo $_GET[hello]; $page$_GET[page]; while (strstr($page, "php://")) { 以是否检测到php://为判断执行循环$pagestr_replace("php://", "", $page);//传入空值&#xff0c;替换 } include($page); ?&g…

226. 翻转二叉树之多种解法(递归法、深度优先(迭代法)、广度优先【层序遍历】)

文章目录 226. 翻转二叉树题外话思路递归法迭代法:深度优先遍历层序遍历&#xff1a;广度优先遍历拓展总结 226. 翻转二叉树 226. 翻转二叉树 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;r…

【JAVA开源】基于Vue和SpringBoot的在线文档管理系统

本文项目编号 T 038 &#xff0c;文末自助获取源码 \color{red}{T038&#xff0c;文末自助获取源码} T038&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

单片机原理及应用详解

目录 1. 什么是单片机&#xff1f; 2. 单片机的基本组成 3. 单片机的工作原理 4. 常见的单片机分类 5. 单片机的应用领域 6. 单片机开发流程 7. 单片机开发中的常见问题及解决方案 8. 单片机的未来发展趋势 9. 总结 1. 什么是单片机&#xff1f; 单片机&#xff08;Mi…

美食共享圈:Spring Boot校园周边美食平台

第二章 系统分析 2.1 可行性分析 可行性分析的目的是确定一个系统是否有必要开发、确定系统是否能以最小的代价实现。其工作主要有三个方面&#xff0c;分别是技术、经济和社会三方面的可行性。我会从这三个方面对网上校园周边美食探索及分享平台进行详细的分析。 2.1.1技术可行…

springboot实战学习笔记(5)(用户登录接口的主逻辑)

接着上篇博客学习。上篇博客是已经基本完成用户模块的注册接口的开发以及注册时的参数合法性校验。具体往回看了解的链接如下。 springboot实训学习笔记&#xff08;4&#xff09;(Spring Validation参数校验框架、全局异常处理器)-CSDN博客文章浏览阅读576次&#xff0c;点赞7…

[云服务器13] 如何正确选择云服务器?

【非广告&#xff0c;仅提供建议&#xff0c;没有强制消费引导】 这期我们不讲搭建教程了&#xff0c;因为我想到前面12篇的教程&#xff0c;有关套餐配置的教程好像都有点敷衍…… 所以这期我们主要来说一说服务器的配置选择和不同配置的应用场景。 网站: 雨云 打开后&…

Cisco 基础网络汇总

⭕个人主页 可惜已不在 ⭕可以分享给身边有需要的人 ⭕有用的话就留下一个三连吧 目录 前言: 一.网络及网络设备认识 二. 二层网络 三. 生成树、端口 四. 三层网络 五.访问控制 六.NAT 七.DHCP 八.PPP 九.帧中继 十.热备份 十一.综合实验 十二.WLAN 十三.Cisco P…

Compiler Explorer 开源项目-在线编译器网站

Compiler Explorer 开源项目&#xff0c;一个交互式编译器探索网站。在 C、C、C♯、F♯、Rust、Go、D、Haskell、Swift、Pascal、ispc、Python、Java 或其他 30 多种支持的语言组件中编辑代码&#xff0c;并实时查看不同编译器&#xff08;包括不同cpu架构&#xff09;编译后的…

STM32—MPU6050

1.MPU6050简介 MPU6050是一个6轴姿态传感器可以测量芯片自身X、Y、Z轴的加速度、角速度参数&#xff0c;通过数据融合&#xff0c;可进一步得到姿态角&#xff0c;常应用于平衡车、飞行器等需要检测自身姿态的场景3轴加速度计(Accelerometer&#xff1a;测量X、Y、Z轴的加速度3…

构建未来企业的理论基石:业务能力建模指南的深度解析与战略实施框架

数字化转型已经成为全球企业的战略焦点&#xff0c;在这个过程中&#xff0c;如何有效地将复杂的业务需求、技术架构和市场变化结合&#xff0c;形成具备长期竞争力的企业能力框架&#xff0c;是企业成败的关键。《业务能力指南》提供了一套经过验证的理论体系&#xff0c;帮助…

数字图像面积计算一般方法及MATLAB实现

一、引言 在数字图像处理中&#xff0c;经常需要获取感兴趣区域的面积属性&#xff0c;下面给出图像处理的一般步骤。 1.读入的彩色图像 2.将彩色图像转化为灰度图像 3.灰度图像转化为二值图像 4.区域标记 5.对每个区域的面积进行计算和显示 二、程序代码 %面积计算 cle…

《COMMA: Co-articulated Multi-Modal Learning》中文校对版

系列论文研读目录 文章目录 系列论文研读目录摘要导言相关工作视觉语言模型提示学习视觉语言模型中的提示学习 方法准备工作提议方法 实验基准设定基础到新的概括跨数据集传输消融实验 结论 摘要 经过预训练的大规模视觉语言模型&#xff08;如CLIP&#xff09;已经在一系列下…

PyQt5 导入ui文件报错 AttributeError: type object ‘Qt‘ has no attribute

问题描述&#xff1a; 利用 PyQt5 编写可视化界面是较为普遍的做法&#xff0c;但是使用全新UI版本的 Pycharm 修改之前正常的UI文件时&#xff0c;在没有动其他代码的情况下发现出现以下报错 AttributeError: type object Qt has no attribute Qt::ContextMenuPolicy::Defaul…

BFS 解决多源最短路问题

文章目录 多源BFS542. 01 矩阵题目解析算法原理代码实现 1020. 飞地的数量题目解析算法原理 1765. 地图中的最高点题目解析算法原理代码实现 1162. 地图分析题目解析算法原理代码实现 多源BFS 单源最短路&#xff1a; 一个起点、一个终点 多源最短路&#xff1a; 可以多个起点…

Apache ZooKeeper 及 Curator 使用总结

1. 下载 官网地址&#xff1a;Apache ZooKeeper 点击下载按钮 选择对应的版本进行下载 2. 使用 1、解压 tar -zxf apache-zookeeper-3.9.2-bin.tar.gz2、复制配置文件&#xff0c;有一个示例配置文件 conf/zoo_sample.cfg&#xff0c;此文件不能生效&#xff0c;需要名称为…

LeetCode_sql_day31(1384.按年度列出销售总额)

目录 描述 1384.按年度列出销售总额 数据准备 分析 法一 法二 代码 总结 描述 1384.按年度列出销售总额 Product 表&#xff1a; ------------------------ | Column Name | Type | ------------------------ | product_id | int | | product_name | var…

将sqlite3移植到arm开发板上:

一、下载源代码 sqlite3网址&#xff1a;https://www.sqlite.org/download.html 下载&#xff1a;sqlite-autoconf-3460100.tar.gz 二、解压 在Linux家目录下创建一个sqlite3文件夹&#xff0c;将压缩包复制到该文件夹下&#xff0c;再在该目录下打开一个终端&#xff0c;执行…

【机器学习】--- 决策树与随机森林

文章目录 决策树与随机森林的改进&#xff1a;全面解析与深度优化目录1. 决策树的基本原理2. 决策树的缺陷及改进方法2.1 剪枝技术2.2 树的深度控制2.3 特征选择的优化 3. 随机森林的基本原理4. 随机森林的缺陷及改进方法4.1 特征重要性改进4.2 树的集成方法优化4.3 随机森林的…

7-50 畅通工程之局部最小花费问题 (kruskal)

输入样例: 4 1 2 1 1 1 3 4 0 1 4 1 1 2 3 3 0 2 4 2 1 3 4 5 0输出样例: 3 代码&#xff1a; #include<iostream> #include<queue> using namespace std; const int N110; struct node{int x,y,w;bool operator <(const node &n1)const{if(wn1.w) retur…