Thanks Sean, I've just came up with this and wanted to update my post.
What I did is I specified a Stoppable stopme variable within agent. And
assigned schedule.scheduleRepeating(agent) to it. This way it works.

Best,

Aydar


On Thu, Aug 15, 2013 at 2:24 PM, Sean Luke <[log in to unmask]> wrote:

> On Aug 14, 2013, at 7:55 PM, Aуdar Aliev wrote:
>
> > The problem is that I need to remove an agent from the schedule (I
> presume that after removing it from the schedule garbage collector will get
> to it) when his internal condition becomes true. For example, when agent
> stepped more than 50 times. How do I do that?
>
> When you schedule an agent repeating, the scheduleRepeating() method
> returns a Stoppable object.  Store that Stoppable somewhere (perhaps in the
> agent itself), and call it when the condition has become true.  The agent
> will then not be rescheduled any more.  You don't need to implement the
> Stoppable interface.
>
> You can also do this if you have scheduled an agent once but may wish to
> prevent his upcoming step() from ever occurring: this is done by using
> TentativeStep (see the manual).
>
> Sean
>