Goal Planning

102 views
Skip to first unread message

qwerty mnbvc

unread,
May 1, 2020, 12:48:13 AM5/1/20
to opencog
Hello,

I'm a student and I would like to learn more about OpenCog. What module deals with goal planning in general? Not like motion planning. Is it OpenPSI or maybe OCPlanner? I noticed that OCPlanner was implemented by Shujing Ke, is this the "expert" I should reach out to for more info? I haven't been able to find any papers about OCPlanner (theory or otherwise).

Thanks
Q

Ben Goertzel

unread,
May 1, 2020, 1:54:38 AM5/1/20
to opencog
OCPlanner is deprecated a while ago and not yet replaced!

OpenPsi handles basic goal/context/procedure based action selection
but not planning except at the trivial level

PLN logic works OK now (with scalability issues though) and could be
used as the basis for a temporal logic implementation of planning, but
that needs to be done still

ben
> --
> You received this message because you are subscribed to the Google Groups "opencog" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to opencog+u...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/opencog/3c5ff62b-be11-46cc-81c9-89b06e14f218%40googlegroups.com.



--
Ben Goertzel, PhD
http://goertzel.org

“The only people for me are the mad ones, the ones who are mad to
live, mad to talk, mad to be saved, desirous of everything at the same
time, the ones who never yawn or say a commonplace thing, but burn,
burn, burn like fabulous yellow roman candles exploding like spiders
across the stars.” -- Jack Kerouac

Linas Vepstas

unread,
May 1, 2020, 6:11:07 AM5/1/20
to opencog
There is also the brand new version 0.1 generator code. It can be thought of as kind-of a planner, in that a set of "start points" can be specified, and a set of "end points" as well, and it will generate all paths between the two.

More precisely, it will generate a network of all possible interconnected paths between the endpoints, with the intervening network subject to rules of formation. So its not only a path planner, but also a constraint solver.

I have not yet written any demos showing "classical" planning, such as "to get through a doorway, you must first open the door", but this would be an excellent example to have. If you're interested, I'd be happy to help you write it

It currently works for various simple demos, but that's it - its version 0.1 - (so I don't even know if the "open the door" example can work. I think it will...)  Here.  https://github.com/opencog/generate

Ben, since you didn't mention the generator in the list below, I'm thinking that you're not really fully aware of it, or of what it can do (or rather, the goals of what it can do).  Take a moment of pondering it ...

--linas



--
cassette tapes - analog TV - film cameras - you

Ben Goertzel

unread,
May 1, 2020, 10:15:25 AM5/1/20
to opencog
Linas, what sort of algorithm is used for the constraint-solving here?
> To view this discussion on the web visit https://groups.google.com/d/msgid/opencog/CAHrUA37BESN-yqtOgH_9z663Zy%3Dm47D9ddbpB1OHhLkexxnxiQ%40mail.gmail.com.

Linas Vepstas

unread,
May 1, 2020, 10:51:16 AM5/1/20
to opencog
On Fri, May 1, 2020 at 9:15 AM Ben Goertzel <b...@goertzel.org> wrote:
Linas, what sort of algorithm is used for the constraint-solving here?

Heh. Marvelous question! For just right now, in version 0.1, its something I call "aggregation" (its supposed to remind you of DLA "diffusion-limited aggregation") and its quite "simple": (well not all that simple under the covers, but easy-to-understand) -- given an existing collection of unconnected connectors, try attaching one more node. Repeat until there are no more unconnected connectors.

Aggregation is like generalized A*-search. Now, in A*-search, one only ever attaches a single edge at a time, and the space is always 2D (or 3D I guess..) In my case, the space doesn't have a dimension (or rather, doesn't have to have), and you don't have to add just a single edge at a time - you can add a three-pointed hyperedge, etc. (I guess that now I need to write a A*-search demo for this...)

I say "just right now" because it is clear that other algos are possible; I'm pondering them now but have not yet created any specific plans. If you care to propose any, let me know. I'm interested in alternatives, because its clear that its hard to control the shapes of the generated network by using aggregation.

However, I think that the aggregation algo is plenty good enough for natural language -- I'm thinking of using this to replace sureal. As "starting points" you can specify "to eat" and "Ben" and "pizza" and it should generate all sentences with those words in it (in whatever word order is correct, for the specified formation rules). So far, only a few tiny examples of it doing this, with extremely limited vocabulary.  Its version 0.1...

--linas





Linas Vepstas

unread,
May 1, 2020, 11:03:56 AM5/1/20
to opencog
Sorry, a part two to the below, I hit send too fast.  See below.

On Fri, May 1, 2020 at 9:51 AM Linas Vepstas <linasv...@gmail.com> wrote:


On Fri, May 1, 2020 at 9:15 AM Ben Goertzel <b...@goertzel.org> wrote:
Linas, what sort of algorithm is used for the constraint-solving here?

Heh. Marvelous question! For just right now, in version 0.1, its something I call "aggregation" (its supposed to remind you of DLA "diffusion-limited aggregation") and its quite "simple": (well not all that simple under the covers, but easy-to-understand) -- given an existing collection of unconnected connectors, try attaching one more node. Repeat until there are no more unconnected connectors.

So, for example, if one of the unconnected connectors is "I'm here on this side of the doorway", and another unconnected connector is "The other wide of the doorway is unoccupied", and one of the nodes is "try opening the door", that node would be attached, thus completing the motion-planning problem.  This may sound vague right now, and that's why an explicit demo is needed. I think it should be possible and not hard.


Aggregation is like generalized A*-search. Now, in A*-search, one only ever attaches a single edge at a time, and the space is always 2D (or 3D I guess..) In my case, the space doesn't have a dimension (or rather, doesn't have to have), and you don't have to add just a single edge at a time - you can add a three-pointed hyperedge, etc. (I guess that now I need to write a A*-search demo for this...)

I say "just right now" because it is clear that other algos are possible; I'm pondering them now but have not yet created any specific plans. If you care to propose any, let me know. I'm interested in alternatives, because its clear that its hard to control the shapes of the generated network by using aggregation.

The source of the constraints is that the connectors are typed. They can be connected only when the types match.  I think that this is equivalent to the kinds of constraint problems that ASP (answer-set programming) solves but not sure, I might be imagining things. Since all ASP solvers use SAT solvers under the covers, I guess that using SAT should be possible in this case too, but .. well, version 0.1 so far...

I have not thought very much about other ways of specifying constraints.

Search guiding is done by weighting.  So far, I have only very simple weighting.  I imagine that ECAN can be layered on this, but it would require a ground-up new implementation of ECAN. Other weighting and guiding schemes are possible. Anything that returns a number that says "hey this is not a fruitful direction to search in".

qwerty mnbvc

unread,
May 1, 2020, 7:41:49 PM5/1/20
to ope...@googlegroups.com
Thanks for your answers, I will interpret it as that both of you are the experts. I should immediately say that I have limited experience with research and mediocre programming abilities (and I’m not being modest), but that I’d like to improve.

I’m currently being mentored by one of my professors to do a research project. My professor has advised me to write a few different research proposals and ultimately choose one to work on.

Because the sky is the limit I’ve been using SWOT analysis to help me filter those choices and one of my interests is goal planning. That’s why I was curious about where OpenCog is at with regards to goal planning and was looking for papers on your work.

What do you guys think? Could you offer some suggestions of things that might need to be researched and implemented to improve OpenCog’s goal planning functionality? Or maybe point me to some papers that would help me to come up with my own ideas?

I did see this on the wiki:
Planning via Temporal Logic & Consistency-Checking

I will look into this idea and keep digging around for others.

Thanks
Q

Linas Vepstas

unread,
May 2, 2020, 2:41:12 AM5/2/20
to opencog
I'll be blunt: as to theoretical underpinning, I think that the ideas that the network generation code is based on is of fundamental importance. They're deeply related to vast tracts of mathematics and logic, and are, to a very large degree, virgin unexplored territory, both in terms of computing and algorithms, but also in terms of fundamental mathematical theory. (It's taken me a decade to figure this out, its hard to give a quick synopsis, other than to say that lambda calculus is a special case.)

I have two (unpublished, but going to be submitted for publication) papers on this.  One is mostly "just words" and some pretty pictures. The other has formulas. The words-only intro is here:  https://github.com/opencog/atomspace/raw/master/opencog/sheaf/docs/sheaves.pdf


--linas

qwerty mnbvc

unread,
May 3, 2020, 11:34:48 AM5/3/20
to ope...@googlegroups.com
OK, I'll take a look at these.

Nil Geisweiller

unread,
May 5, 2020, 3:18:53 AM5/5/20
to ope...@googlegroups.com, qwerty mnbvc
Q,

On 5/2/20 2:41 AM, qwerty mnbvc wrote:
> I did see this on the wiki:
> Planning via Temporal Logic & Consistency-Checking

Could you indicate the exact url? I can't find it.

Thanks,
Nil
> <mailto:opencog%2Bunsu...@googlegroups.com>.
> >> > To view this discussion on the web visit
> https://groups.google.com/d/msgid/opencog/3c5ff62b-be11-46cc-81c9-89b06e14f218%40googlegroups.com.
> >>
> >>
> >>
> >> --
> >> Ben Goertzel, PhD
> >> http://goertzel.org
> >>
> >> “The only people for me are the mad ones, the ones who
> are mad to
> >> live, mad to talk, mad to be saved, desirous of
> everything at the same
> >> time, the ones who never yawn or say a commonplace
> thing, but burn,
> >> burn, burn like fabulous yellow roman candles exploding
> like spiders
> >> across the stars.” -- Jack Kerouac
> >>
> >> --
> >> You received this message because you are subscribed to
> the Google Groups "opencog" group.
> >> To unsubscribe from this group and stop receiving emails
> from it, send an email to
> opencog+u...@googlegroups.com
> <mailto:opencog%2Bunsu...@googlegroups.com>.
> >> To view this discussion on the web visit
> https://groups.google.com/d/msgid/opencog/CACYTDBdpfuc8%3DSioiuvA9fqrhcHREtboxSVzBHQnZWWnF35tcA%40mail.gmail.com.
> >
> >
> >
> > --
> > cassette tapes - analog TV - film cameras - you
> >
> > --
> > You received this message because you are subscribed to
> the Google Groups "opencog" group.
> > To unsubscribe from this group and stop receiving emails
> from it, send an email to
> opencog+u...@googlegroups.com
> <mailto:opencog%2Bunsu...@googlegroups.com>.
> > To view this discussion on the web visit
> https://groups.google.com/d/msgid/opencog/CAHrUA37BESN-yqtOgH_9z663Zy%3Dm47D9ddbpB1OHhLkexxnxiQ%40mail.gmail.com.
>
>
>
> --
> Ben Goertzel, PhD
> http://goertzel.org
>
> “The only people for me are the mad ones, the ones who are
> mad to
> live, mad to talk, mad to be saved, desirous of everything
> at the same
> time, the ones who never yawn or say a commonplace thing,
> but burn,
> burn, burn like fabulous yellow roman candles exploding like
> spiders
> across the stars.” -- Jack Kerouac
>
> --
> You received this message because you are subscribed to the
> Google Groups "opencog" group.
> To unsubscribe from this group and stop receiving emails
> from it, send an email to
> opencog+u...@googlegroups.com
> <mailto:opencog%2Bunsu...@googlegroups.com>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/opencog/CACYTDBdpaZuvWufpczv7E7pGxtQpZwpKrm3ADvNPoU3S%2BoOOLg%40mail.gmail.com.
>
>
>
> --
> cassette tapes - analog TV - film cameras - you
>
>
>
> --
> cassette tapes - analog TV - film cameras - you
>
> --
> You received this message because you are subscribed to the Google
> Groups "opencog" group.
> To unsubscribe from this group and stop receiving emails from it,
> send an email to opencog+u...@googlegroups.com
> <mailto:opencog+u...@googlegroups.com>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/opencog/CAHrUA37VST2NsJkTkHTtJ%3D3Qo6vxcFzC-2Lg38b%2B9rUnp5bpfA%40mail.gmail.com
> <https://groups.google.com/d/msgid/opencog/CAHrUA37VST2NsJkTkHTtJ%3D3Qo6vxcFzC-2Lg38b%2B9rUnp5bpfA%40mail.gmail.com?utm_medium=email&utm_source=footer>.
>
> --
> You received this message because you are subscribed to the Google
> Groups "opencog" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to opencog+u...@googlegroups.com
> <mailto:opencog+u...@googlegroups.com>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/opencog/CALsVKVKvqwq9Frj7rVuv4K7bXL%2B9mw80AEedSojYDyPLMPdN9Q%40mail.gmail.com
> <https://groups.google.com/d/msgid/opencog/CALsVKVKvqwq9Frj7rVuv4K7bXL%2B9mw80AEedSojYDyPLMPdN9Q%40mail.gmail.com?utm_medium=email&utm_source=footer>.

awbe...@gmail.com

unread,
Sep 10, 2020, 8:48:00 AM9/10/20
to opencog
Some time ago i have tried to use backward chainer to do planning in block-world domain. I directly encoded actions as URE rules i.g. bindlinks. For example stacking action in form of pddl and atomese:


(:action stack

     :parameters (?ob ?underob)

     :precondition (and (clear ?underob) (holding ?ob))

     :effect (and (clear ?ob) (on ?ob ?underob)

                 (not (clear ?underob)) (not (holding ?ob))))

BindLink
    VariableList
        VariableNode "?ob-525c4b8"

    AndLink
        EvaluationLink ; - precondition of stack
            PredicateNode "holding"
            VariableNode "?ob-525c4b8"

    ExecutionOutput
        GroundedSchemaNode "scm: stack-action"
            ListLink
            AndLink ; - effect of stacking


The thing is that once ure infers that some block is not clear the atom is stored and can't be removed from the atomspace inside URE. Perhaps that would work if you put variables inside context link and modify all effects to create a new ContextLink.

вторник, 5 мая 2020 г. в 10:18:53 UTC+3, Nil:
Reply all
Reply to author
Forward
0 new messages