You can subscribe to this list here.
2004 |
Jan
(1) |
Feb
(1) |
Mar
(3) |
Apr
(12) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
(5) |
Oct
(3) |
Nov
(2) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
|
Feb
|
Mar
(6) |
Apr
(2) |
May
(3) |
Jun
(6) |
Jul
|
Aug
(1) |
Sep
(5) |
Oct
(32) |
Nov
|
Dec
(4) |
2006 |
Jan
(1) |
Feb
(1) |
Mar
(3) |
Apr
(1) |
May
(1) |
Jun
|
Jul
(1) |
Aug
(1) |
Sep
|
Oct
(6) |
Nov
(6) |
Dec
|
2007 |
Jan
|
Feb
(7) |
Mar
(20) |
Apr
(9) |
May
(4) |
Jun
(13) |
Jul
(9) |
Aug
(8) |
Sep
|
Oct
(7) |
Nov
(7) |
Dec
(3) |
2008 |
Jan
|
Feb
(5) |
Mar
(1) |
Apr
(46) |
May
(7) |
Jun
(5) |
Jul
(1) |
Aug
(15) |
Sep
(19) |
Oct
|
Nov
(2) |
Dec
(1) |
2009 |
Jan
(3) |
Feb
(2) |
Mar
(10) |
Apr
(16) |
May
(18) |
Jun
(12) |
Jul
(13) |
Aug
(10) |
Sep
(5) |
Oct
|
Nov
(2) |
Dec
(3) |
2010 |
Jan
(17) |
Feb
(10) |
Mar
(3) |
Apr
(2) |
May
(12) |
Jun
(17) |
Jul
(27) |
Aug
(20) |
Sep
(8) |
Oct
(12) |
Nov
(3) |
Dec
(2) |
2011 |
Jan
(16) |
Feb
(6) |
Mar
(3) |
Apr
(2) |
May
|
Jun
(11) |
Jul
(4) |
Aug
(9) |
Sep
(10) |
Oct
(8) |
Nov
(10) |
Dec
(3) |
2012 |
Jan
(6) |
Feb
(4) |
Mar
(3) |
Apr
(10) |
May
(7) |
Jun
(5) |
Jul
(4) |
Aug
(18) |
Sep
(14) |
Oct
(17) |
Nov
(12) |
Dec
|
2013 |
Jan
(6) |
Feb
(7) |
Mar
(4) |
Apr
(8) |
May
(5) |
Jun
(7) |
Jul
(4) |
Aug
(1) |
Sep
(3) |
Oct
|
Nov
|
Dec
(6) |
2014 |
Jan
(4) |
Feb
|
Mar
(6) |
Apr
(2) |
May
|
Jun
(10) |
Jul
(1) |
Aug
(2) |
Sep
(1) |
Oct
|
Nov
|
Dec
|
2015 |
Jan
|
Feb
|
Mar
(3) |
Apr
(3) |
May
(7) |
Jun
(5) |
Jul
(1) |
Aug
(3) |
Sep
(2) |
Oct
(2) |
Nov
(6) |
Dec
(3) |
2016 |
Jan
(2) |
Feb
|
Mar
|
Apr
(7) |
May
|
Jun
(5) |
Jul
(1) |
Aug
(2) |
Sep
(5) |
Oct
(5) |
Nov
(2) |
Dec
|
2017 |
Jan
(5) |
Feb
(4) |
Mar
(3) |
Apr
(6) |
May
|
Jun
|
Jul
|
Aug
(2) |
Sep
(1) |
Oct
|
Nov
(1) |
Dec
|
2018 |
Jan
(2) |
Feb
|
Mar
|
Apr
|
May
(6) |
Jun
(1) |
Jul
(3) |
Aug
(2) |
Sep
|
Oct
(6) |
Nov
(4) |
Dec
|
2019 |
Jan
(1) |
Feb
(5) |
Mar
(6) |
Apr
(5) |
May
|
Jun
(5) |
Jul
(2) |
Aug
(7) |
Sep
(1) |
Oct
(7) |
Nov
|
Dec
|
2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(2) |
Dec
|
2021 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(2) |
Sep
(2) |
Oct
(3) |
Nov
|
Dec
|
2022 |
Jan
(5) |
Feb
(1) |
Mar
|
Apr
|
May
(5) |
Jun
(9) |
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
(4) |
Dec
|
2023 |
Jan
|
Feb
|
Mar
(1) |
Apr
(4) |
May
|
Jun
(5) |
Jul
(1) |
Aug
|
Sep
(3) |
Oct
|
Nov
|
Dec
(3) |
2024 |
Jan
(7) |
Feb
(1) |
Mar
|
Apr
(17) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2025 |
Jan
|
Feb
|
Mar
(3) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Burak K. <bbu...@gm...> - 2022-09-09 12:54:37
|
Dear all, Is it possible to have more sources for customising the Jason Architecture? Thank you. Best regards. -- *Burak KARADUMAN,* Ph.D. Student at the University of Antwerp & Flanders Make, Modeling Intelligent Complex Software & Systems (MICSS-Lab), *G236, Department of **Computer Science**, Faculty of Science, Campus Middelheim,* Middelheimlaan 1, 2020 Antwerp, Belgium |
From: Burak K. <bbu...@gm...> - 2022-06-12 19:31:33
|
Hi Jomi, When I pause the agent execution on the container, everything stops, but another thread which created using a session does not stop. I would like to capture the "Pause" of the agents runtime to pause the other thread. But i think your idea is also applicable. Thank you. Best regards. 12 Haz 2022 Paz 17:47 tarihinde Jomi Hubner <jom...@gm...> şunu yazdı: > Hi Burak, > > I am not sure what do you mean for “pausing” an artifact. If it is related > to some “wait” operation of cartago, I do not know a way to get that state. > You likely have to handle that state by yourself and send that information > to your other thread. > > HTH, > > Jomi > > > On 10 Jun 2022, at 09:09, Burak Karaduman <bbu...@gm...> > wrote: > > > > Hi all, > > > > Is it possible to detect the "Pause" operation of the Jason & Cartago > container, because I would like to stop my extra thread-controlled timer > when the container is paused? Is there any operation for this? > > > > > > Thank you for your help. > > > > Best regards. > > > > Burak Karaduman <bbu...@gm...>, 7 Haz 2022 Sal, 20:43 > tarihinde şunu yazdı: > > Hi Jomi, > > > > My supervisor also suggested the same approach, but I think you should > bring this feature in your next update. > > > > Thank you. > > > > Best regards. > > > > Jomi Hubner <jom...@gm...>, 7 Haz 2022 Sal, 20:10 tarihinde şunu > yazdı: > > Hi Burak, > > > > I’d suggest you to take a look at Cartago examples, the Clock example… > > > > Otherwise, you may create a thread in your artifact that runs forever, > sleeps a bit, creates the “security block” of Cartago, where you change the > artifact state… > > > > HTH, > > > > Jomi > > > > > On 6 Jun 2022, at 11:36, Burak Karaduman <bbu...@gm...> > wrote: > > > > > > Hi Jomi, > > > > > > I had solved my problem as you suggested. Thank you so much for your > help. I share the solution I hope it can help others in the future. > > > > > > this.beginExternalSession(); > > > commit(); > > > this.endExternalSession(false); > > > > > > However, I have another question, I have a function which is > encapsulated inside an artefact namely getUDPMessage(). However, this > should be continuously checked in case of data is sent anytime. Is it > possible to attach a feature for continuously listening a function of an > artifact? > > > > > > Best regards. > > > > > > Jomi Hubner <jom...@gm...>, 6 Haz 2022 Pzt, 14:08 tarihinde > şunu yazdı: > > > Hi Burak, > > > > > > I guess that instructions that change the state of the artifact (obs > props/signals) have to be executed in a special way in cartago to avoid > breaking its atomicity/transactional features. > > > > > > if a thread of yours is changing the artifact, the change should be > executed inside a block beginExternalSession/endExternalSession. In your > code, the thread is created inside this block, but the signal is not > running inside such a block. Maybe you can move the begin/end… to inside > the “run()” method. > > > > > > HTH > > > > > > Jomi > > > > > > > On 5 Jun 2022, at 19:18, Burak Karaduman <bbu...@gm...> > wrote: > > > > > > > > Dear all, > > > > > > > > I am trying to create a timer that counts based on seconds. However, > I am getting this error; > > > > > > > > java.lang.IllegalMonitorStateException > > > > at > java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.signalAll(AbstractQueuedSynchronizer.java:1487) > > > > at cartago.Artifact.commitObsStateChangesAndSignal(Artifact.java:573) > > > > at cartago.Artifact.signal(Artifact.java:637) > > > > at example_JaCaMo.MyTimer.access$000(MyTimer.java:11) > > > > at example_JaCaMo.MyTimer$1.run(MyTimer.java:29) > > > > at java.base/java.util.TimerThread.mainLoop(Timer.java:556) > > > > at java.base/java.util.TimerThread.run(Timer.java:506) > > > > > > > > My code is simply like this: > > > > > > > > public class MyTimer extends Artifact { > > > > > > > > void init() { > > > > defineObsProperty("mytimer", 0); > > > > timer_creation(); > > > > } > > > > > > > > void timer_creation() { > > > > this.beginExternalSession(); > > > > > > > > Timer timer = new Timer(); > > > > > > > > TimerTask task = new TimerTask(){ > > > > private int i = 0; > > > > public void run(){ > > > > if (i <= 30) { > > > > signal("timerEnd"); > > > > System.out.println(i); > > > > > > > > } > > > > } > > > > }; > > > > > > > > > > > > timer.scheduleAtFixedRate(task, 0, 1000); //1000ms = 1sec > > > > this.endExternalSession(true); > > > > } > > > > } > > > > > > > > How can I tackle this problem? > > > > > > > > Thank you. > > > > > > > > Best regards. > > > > > > > > > > > > > > > > -- > > > > Burak KARADUMAN, > > > > Ph.D. Student at the University of Antwerp & Flanders Make, > > > > Modeling Intelligent Complex Software & Systems (MICSS-Lab), > > > > G236, Department of Computer Science, Faculty of Science, Campus > Middelheim, > > > > Middelheimlaan 1, 2020 Antwerp, Belgium > > > > > > > > _______________________________________________ > > > > Jason-users mailing list > > > > Jas...@li... > > > > https://lists.sourceforge.net/lists/listinfo/jason-users > > > > > > > > > > > > -- > > > Burak KARADUMAN, > > > Ph.D. Student at the University of Antwerp & Flanders Make, > > > Modeling Intelligent Complex Software & Systems (MICSS-Lab), > > > G236, Department of Computer Science, Faculty of Science, Campus > Middelheim, > > > Middelheimlaan 1, 2020 Antwerp, Belgium > > > > > > > > > > > -- > > Burak KARADUMAN, > > Ph.D. Student at the University of Antwerp & Flanders Make, > > Modeling Intelligent Complex Software & Systems (MICSS-Lab), > > G236, Department of Computer Science, Faculty of Science, Campus > Middelheim, > > Middelheimlaan 1, 2020 Antwerp, Belgium > > > > > > > > -- > > Burak KARADUMAN, > > Ph.D. Student at the University of Antwerp & Flanders Make, > > Modeling Intelligent Complex Software & Systems (MICSS-Lab), > > G236, Department of Computer Science, Faculty of Science, Campus > Middelheim, > > Middelheimlaan 1, 2020 Antwerp, Belgium > > > > |
From: Jomi H. <jom...@gm...> - 2022-06-12 15:47:08
|
Hi Burak, I am not sure what do you mean for “pausing” an artifact. If it is related to some “wait” operation of cartago, I do not know a way to get that state. You likely have to handle that state by yourself and send that information to your other thread. HTH, Jomi > On 10 Jun 2022, at 09:09, Burak Karaduman <bbu...@gm...> wrote: > > Hi all, > > Is it possible to detect the "Pause" operation of the Jason & Cartago container, because I would like to stop my extra thread-controlled timer when the container is paused? Is there any operation for this? > > > Thank you for your help. > > Best regards. > > Burak Karaduman <bbu...@gm...>, 7 Haz 2022 Sal, 20:43 tarihinde şunu yazdı: > Hi Jomi, > > My supervisor also suggested the same approach, but I think you should bring this feature in your next update. > > Thank you. > > Best regards. > > Jomi Hubner <jom...@gm...>, 7 Haz 2022 Sal, 20:10 tarihinde şunu yazdı: > Hi Burak, > > I’d suggest you to take a look at Cartago examples, the Clock example… > > Otherwise, you may create a thread in your artifact that runs forever, sleeps a bit, creates the “security block” of Cartago, where you change the artifact state… > > HTH, > > Jomi > > > On 6 Jun 2022, at 11:36, Burak Karaduman <bbu...@gm...> wrote: > > > > Hi Jomi, > > > > I had solved my problem as you suggested. Thank you so much for your help. I share the solution I hope it can help others in the future. > > > > this.beginExternalSession(); > > commit(); > > this.endExternalSession(false); > > > > However, I have another question, I have a function which is encapsulated inside an artefact namely getUDPMessage(). However, this should be continuously checked in case of data is sent anytime. Is it possible to attach a feature for continuously listening a function of an artifact? > > > > Best regards. > > > > Jomi Hubner <jom...@gm...>, 6 Haz 2022 Pzt, 14:08 tarihinde şunu yazdı: > > Hi Burak, > > > > I guess that instructions that change the state of the artifact (obs props/signals) have to be executed in a special way in cartago to avoid breaking its atomicity/transactional features. > > > > if a thread of yours is changing the artifact, the change should be executed inside a block beginExternalSession/endExternalSession. In your code, the thread is created inside this block, but the signal is not running inside such a block. Maybe you can move the begin/end… to inside the “run()” method. > > > > HTH > > > > Jomi > > > > > On 5 Jun 2022, at 19:18, Burak Karaduman <bbu...@gm...> wrote: > > > > > > Dear all, > > > > > > I am trying to create a timer that counts based on seconds. However, I am getting this error; > > > > > > java.lang.IllegalMonitorStateException > > > at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.signalAll(AbstractQueuedSynchronizer.java:1487) > > > at cartago.Artifact.commitObsStateChangesAndSignal(Artifact.java:573) > > > at cartago.Artifact.signal(Artifact.java:637) > > > at example_JaCaMo.MyTimer.access$000(MyTimer.java:11) > > > at example_JaCaMo.MyTimer$1.run(MyTimer.java:29) > > > at java.base/java.util.TimerThread.mainLoop(Timer.java:556) > > > at java.base/java.util.TimerThread.run(Timer.java:506) > > > > > > My code is simply like this: > > > > > > public class MyTimer extends Artifact { > > > > > > void init() { > > > defineObsProperty("mytimer", 0); > > > timer_creation(); > > > } > > > > > > void timer_creation() { > > > this.beginExternalSession(); > > > > > > Timer timer = new Timer(); > > > > > > TimerTask task = new TimerTask(){ > > > private int i = 0; > > > public void run(){ > > > if (i <= 30) { > > > signal("timerEnd"); > > > System.out.println(i); > > > > > > } > > > } > > > }; > > > > > > > > > timer.scheduleAtFixedRate(task, 0, 1000); //1000ms = 1sec > > > this.endExternalSession(true); > > > } > > > } > > > > > > How can I tackle this problem? > > > > > > Thank you. > > > > > > Best regards. > > > > > > > > > > > > -- > > > Burak KARADUMAN, > > > Ph.D. Student at the University of Antwerp & Flanders Make, > > > Modeling Intelligent Complex Software & Systems (MICSS-Lab), > > > G236, Department of Computer Science, Faculty of Science, Campus Middelheim, > > > Middelheimlaan 1, 2020 Antwerp, Belgium > > > > > > _______________________________________________ > > > Jason-users mailing list > > > Jas...@li... > > > https://lists.sourceforge.net/lists/listinfo/jason-users > > > > > > > > -- > > Burak KARADUMAN, > > Ph.D. Student at the University of Antwerp & Flanders Make, > > Modeling Intelligent Complex Software & Systems (MICSS-Lab), > > G236, Department of Computer Science, Faculty of Science, Campus Middelheim, > > Middelheimlaan 1, 2020 Antwerp, Belgium > > > > > > -- > Burak KARADUMAN, > Ph.D. Student at the University of Antwerp & Flanders Make, > Modeling Intelligent Complex Software & Systems (MICSS-Lab), > G236, Department of Computer Science, Faculty of Science, Campus Middelheim, > Middelheimlaan 1, 2020 Antwerp, Belgium > > > > -- > Burak KARADUMAN, > Ph.D. Student at the University of Antwerp & Flanders Make, > Modeling Intelligent Complex Software & Systems (MICSS-Lab), > G236, Department of Computer Science, Faculty of Science, Campus Middelheim, > Middelheimlaan 1, 2020 Antwerp, Belgium > |
From: Burak K. <bbu...@gm...> - 2022-06-10 12:09:47
|
Hi all, Is it possible to detect the "Pause" operation of the Jason & Cartago container, because I would like to stop my extra thread-controlled timer when the container is paused? Is there any operation for this? Thank you for your help. Best regards. Burak Karaduman <bbu...@gm...>, 7 Haz 2022 Sal, 20:43 tarihinde şunu yazdı: > Hi Jomi, > > My supervisor also suggested the same approach, but I think you should > bring this feature in your next update. > > Thank you. > > Best regards. > > Jomi Hubner <jom...@gm...>, 7 Haz 2022 Sal, 20:10 tarihinde şunu > yazdı: > >> Hi Burak, >> >> I’d suggest you to take a look at Cartago examples, the Clock example… >> >> Otherwise, you may create a thread in your artifact that runs forever, >> sleeps a bit, creates the “security block” of Cartago, where you change the >> artifact state… >> >> HTH, >> >> Jomi >> >> > On 6 Jun 2022, at 11:36, Burak Karaduman <bbu...@gm...> >> wrote: >> > >> > Hi Jomi, >> > >> > I had solved my problem as you suggested. Thank you so much for your >> help. I share the solution I hope it can help others in the future. >> > >> > this.beginExternalSession(); >> > commit(); >> > this.endExternalSession(false); >> > >> > However, I have another question, I have a function which is >> encapsulated inside an artefact namely getUDPMessage(). However, this >> should be continuously checked in case of data is sent anytime. Is it >> possible to attach a feature for continuously listening a function of an >> artifact? >> > >> > Best regards. >> > >> > Jomi Hubner <jom...@gm...>, 6 Haz 2022 Pzt, 14:08 tarihinde şunu >> yazdı: >> > Hi Burak, >> > >> > I guess that instructions that change the state of the artifact (obs >> props/signals) have to be executed in a special way in cartago to avoid >> breaking its atomicity/transactional features. >> > >> > if a thread of yours is changing the artifact, the change should be >> executed inside a block beginExternalSession/endExternalSession. In your >> code, the thread is created inside this block, but the signal is not >> running inside such a block. Maybe you can move the begin/end… to inside >> the “run()” method. >> > >> > HTH >> > >> > Jomi >> > >> > > On 5 Jun 2022, at 19:18, Burak Karaduman <bbu...@gm...> >> wrote: >> > > >> > > Dear all, >> > > >> > > I am trying to create a timer that counts based on seconds. However, >> I am getting this error; >> > > >> > > java.lang.IllegalMonitorStateException >> > > at >> java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.signalAll(AbstractQueuedSynchronizer.java:1487) >> > > at cartago.Artifact.commitObsStateChangesAndSignal(Artifact.java:573) >> > > at cartago.Artifact.signal(Artifact.java:637) >> > > at example_JaCaMo.MyTimer.access$000(MyTimer.java:11) >> > > at example_JaCaMo.MyTimer$1.run(MyTimer.java:29) >> > > at java.base/java.util.TimerThread.mainLoop(Timer.java:556) >> > > at java.base/java.util.TimerThread.run(Timer.java:506) >> > > >> > > My code is simply like this: >> > > >> > > public class MyTimer extends Artifact { >> > > >> > > void init() { >> > > defineObsProperty("mytimer", 0); >> > > timer_creation(); >> > > } >> > > >> > > void timer_creation() { >> > > this.beginExternalSession(); >> > > >> > > Timer timer = new Timer(); >> > > >> > > TimerTask task = new TimerTask(){ >> > > private int i = 0; >> > > public void run(){ >> > > if (i <= 30) { >> > > signal("timerEnd"); >> > > System.out.println(i); >> > > >> > > } >> > > } >> > > }; >> > > >> > > >> > > timer.scheduleAtFixedRate(task, 0, 1000); //1000ms = 1sec >> > > this.endExternalSession(true); >> > > } >> > > } >> > > >> > > How can I tackle this problem? >> > > >> > > Thank you. >> > > >> > > Best regards. >> > > >> > > >> > > >> > > -- >> > > Burak KARADUMAN, >> > > Ph.D. Student at the University of Antwerp & Flanders Make, >> > > Modeling Intelligent Complex Software & Systems (MICSS-Lab), >> > > G236, Department of Computer Science, Faculty of Science, Campus >> Middelheim, >> > > Middelheimlaan 1, 2020 Antwerp, Belgium >> > > >> > > _______________________________________________ >> > > Jason-users mailing list >> > > Jas...@li... >> > > https://lists.sourceforge.net/lists/listinfo/jason-users >> > >> > >> > >> > -- >> > Burak KARADUMAN, >> > Ph.D. Student at the University of Antwerp & Flanders Make, >> > Modeling Intelligent Complex Software & Systems (MICSS-Lab), >> > G236, Department of Computer Science, Faculty of Science, Campus >> Middelheim, >> > Middelheimlaan 1, 2020 Antwerp, Belgium >> > >> >> > > -- > > *Burak KARADUMAN,* > Ph.D. Student at the University of Antwerp & Flanders Make, > Modeling Intelligent Complex Software & Systems (MICSS-Lab), > *G236, Department of **Computer Science**, Faculty of Science, Campus > Middelheim,* > Middelheimlaan 1, 2020 Antwerp, Belgium > > -- *Burak KARADUMAN,* Ph.D. Student at the University of Antwerp & Flanders Make, Modeling Intelligent Complex Software & Systems (MICSS-Lab), *G236, Department of **Computer Science**, Faculty of Science, Campus Middelheim,* Middelheimlaan 1, 2020 Antwerp, Belgium |
From: Burak K. <bbu...@gm...> - 2022-06-06 14:37:45
|
---------- Forwarded message --------- Gönderen: Burak Karaduman <bbu...@gm...> Date: 6 Haz 2022 Pzt, 16:36 Subject: Re: [Jason-users] Create a timer based on seconds in Cartago To: Jomi Hubner <jom...@gm...> Hi Jomi, I had solved my problem as you suggested. Thank you so much for your help. I share the solution I hope it can help others in the future. * this.beginExternalSession(); commit(); this.endExternalSession(false);* However, I have another question, I have a function which is encapsulated inside an artefact namely getUDPMessage(). However, this should be continuously checked in case of data is sent anytime. Is it possible to attach a feature for continuously listening a function of an artifact? Best regards. Jomi Hubner <jom...@gm...>, 6 Haz 2022 Pzt, 14:08 tarihinde şunu yazdı: > Hi Burak, > > I guess that instructions that change the state of the artifact (obs > props/signals) have to be executed in a special way in cartago to avoid > breaking its atomicity/transactional features. > > if a thread of yours is changing the artifact, the change should be > executed inside a block beginExternalSession/endExternalSession. In your > code, the thread is created inside this block, but the signal is not > running inside such a block. Maybe you can move the begin/end… to inside > the “run()” method. > > HTH > > Jomi > > > On 5 Jun 2022, at 19:18, Burak Karaduman <bbu...@gm...> > wrote: > > > > Dear all, > > > > I am trying to create a timer that counts based on seconds. However, I > am getting this error; > > > > java.lang.IllegalMonitorStateException > > at > java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.signalAll(AbstractQueuedSynchronizer.java:1487) > > at cartago.Artifact.commitObsStateChangesAndSignal(Artifact.java:573) > > at cartago.Artifact.signal(Artifact.java:637) > > at example_JaCaMo.MyTimer.access$000(MyTimer.java:11) > > at example_JaCaMo.MyTimer$1.run(MyTimer.java:29) > > at java.base/java.util.TimerThread.mainLoop(Timer.java:556) > > at java.base/java.util.TimerThread.run(Timer.java:506) > > > > My code is simply like this: > > > > public class MyTimer extends Artifact { > > > > void init() { > > defineObsProperty("mytimer", 0); > > timer_creation(); > > } > > > > void timer_creation() { > > this.beginExternalSession(); > > > > Timer timer = new Timer(); > > > > TimerTask task = new TimerTask(){ > > private int i = 0; > > public void run(){ > > if (i <= 30) { > > signal("timerEnd"); > > System.out.println(i); > > > > } > > } > > }; > > > > > > timer.scheduleAtFixedRate(task, 0, 1000); //1000ms = 1sec > > this.endExternalSession(true); > > } > > } > > > > How can I tackle this problem? > > > > Thank you. > > > > Best regards. > > > > > > > > -- > > Burak KARADUMAN, > > Ph.D. Student at the University of Antwerp & Flanders Make, > > Modeling Intelligent Complex Software & Systems (MICSS-Lab), > > G236, Department of Computer Science, Faculty of Science, Campus > Middelheim, > > Middelheimlaan 1, 2020 Antwerp, Belgium > > > > _______________________________________________ > > Jason-users mailing list > > Jas...@li... > > https://lists.sourceforge.net/lists/listinfo/jason-users > > -- *Burak KARADUMAN,* Ph.D. Student at the University of Antwerp & Flanders Make, Modeling Intelligent Complex Software & Systems (MICSS-Lab), *G236, Department of **Computer Science**, Faculty of Science, Campus Middelheim,* Middelheimlaan 1, 2020 Antwerp, Belgium -- *Burak KARADUMAN,* Ph.D. Student at the University of Antwerp & Flanders Make, Modeling Intelligent Complex Software & Systems (MICSS-Lab), *G236, Department of **Computer Science**, Faculty of Science, Campus Middelheim,* Middelheimlaan 1, 2020 Antwerp, Belgium |
From: Jomi H. <jom...@gm...> - 2022-06-06 12:08:25
|
Hi Burak, I guess that instructions that change the state of the artifact (obs props/signals) have to be executed in a special way in cartago to avoid breaking its atomicity/transactional features. if a thread of yours is changing the artifact, the change should be executed inside a block beginExternalSession/endExternalSession. In your code, the thread is created inside this block, but the signal is not running inside such a block. Maybe you can move the begin/end… to inside the “run()” method. HTH Jomi > On 5 Jun 2022, at 19:18, Burak Karaduman <bbu...@gm...> wrote: > > Dear all, > > I am trying to create a timer that counts based on seconds. However, I am getting this error; > > java.lang.IllegalMonitorStateException > at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.signalAll(AbstractQueuedSynchronizer.java:1487) > at cartago.Artifact.commitObsStateChangesAndSignal(Artifact.java:573) > at cartago.Artifact.signal(Artifact.java:637) > at example_JaCaMo.MyTimer.access$000(MyTimer.java:11) > at example_JaCaMo.MyTimer$1.run(MyTimer.java:29) > at java.base/java.util.TimerThread.mainLoop(Timer.java:556) > at java.base/java.util.TimerThread.run(Timer.java:506) > > My code is simply like this: > > public class MyTimer extends Artifact { > > void init() { > defineObsProperty("mytimer", 0); > timer_creation(); > } > > void timer_creation() { > this.beginExternalSession(); > > Timer timer = new Timer(); > > TimerTask task = new TimerTask(){ > private int i = 0; > public void run(){ > if (i <= 30) { > signal("timerEnd"); > System.out.println(i); > > } > } > }; > > > timer.scheduleAtFixedRate(task, 0, 1000); //1000ms = 1sec > this.endExternalSession(true); > } > } > > How can I tackle this problem? > > Thank you. > > Best regards. > > > > -- > Burak KARADUMAN, > Ph.D. Student at the University of Antwerp & Flanders Make, > Modeling Intelligent Complex Software & Systems (MICSS-Lab), > G236, Department of Computer Science, Faculty of Science, Campus Middelheim, > Middelheimlaan 1, 2020 Antwerp, Belgium > > _______________________________________________ > Jason-users mailing list > Jas...@li... > https://lists.sourceforge.net/lists/listinfo/jason-users |
From: Burak K. <bbu...@gm...> - 2022-06-05 23:53:24
|
Dear all, I think I solved the problem using the following option : this.beginExternalSession(); commit(); this.endExternalSession(false); I will try it again in the morning. I hope the solution can help the others. Best regards. Burak Karaduman <bbu...@gm...>, 6 Haz 2022 Pzt, 01:50 tarihinde şunu yazdı: > Dear all, > > Sorry for my often updates, I just tried the commit() function which leads > me to incrementation of the belief mytask, but this time again I encounter > the problem as follows: > > > > > > > > > *java.lang.IllegalMonitorStateException at > java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.signalAll(AbstractQueuedSynchronizer.java:1487) > at cartago.Artifact.commitObsStateChanges(Artifact.java:551) at > cartago.Artifact.commit(Artifact.java:629) at > example_JaCaMo.MyTimer.save(MyTimer.java:66) at > example_JaCaMo.MyTimer$1.run(MyTimer.java:42) at > java.base/java.util.TimerThread.mainLoop(Timer.java:556) at > java.base/java.util.TimerThread.run(Timer.java:506)* > > Thank you. > > Best regards. > > Burak Karaduman <bbu...@gm...>, 6 Haz 2022 Pzt, 01:40 > tarihinde şunu yazdı: > >> Hi, >> >> I deleted the signal and decided to move on with belief addition. >> However, it only updates the value from 0 to 1 once. I think as the >> operation still goes on because of timerTask, it does not update the >> observable property. In the book, I saw that commitObsState was proposed, >> but I haven't been able to see any detailed example of usage. Also, I have >> only seen commitChanges() in the version that I use. >> >> Best regards. >> >> Burak Karaduman <bbu...@gm...>, 6 Haz 2022 Pzt, 00:18 >> tarihinde şunu yazdı: >> >>> Dear all, >>> >>> I am trying to create a timer that counts based on seconds. However, I >>> am getting this error; >>> >>> >>> >>> >>> >>> >>> >>> >>> *java.lang.IllegalMonitorStateException at >>> java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.signalAll(AbstractQueuedSynchronizer.java:1487) >>> at cartago.Artifact.commitObsStateChangesAndSignal(Artifact.java:573)at >>> cartago.Artifact.signal(Artifact.java:637) at >>> example_JaCaMo.MyTimer.access$000(MyTimer.java:11) at >>> example_JaCaMo.MyTimer$1.run(MyTimer.java:29) at >>> java.base/java.util.TimerThread.mainLoop(Timer.java:556) at >>> java.base/java.util.TimerThread.run(Timer.java:506)* >>> >>> My code is simply like this: >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> *public class MyTimer extends Artifact { void init() { >>> defineObsProperty("mytimer", 0); timer_creation(); } void timer_creation() >>> { this.beginExternalSession(); Timer timer = new Timer(); TimerTask task >>> = new TimerTask(){ private int i = 0; public void run(){ if (i >>> <= 30) { signal("timerEnd"); System.out.println(i); >>> } }}; timer.scheduleAtFixedRate(task, 0, 1000); //1000ms = 1sec >>> this.endExternalSession(true); }}* >>> >>> How can I tackle this problem? >>> >>> Thank you. >>> >>> Best regards. >>> >>> >>> >>> -- >>> >>> *Burak KARADUMAN,* >>> Ph.D. Student at the University of Antwerp & Flanders Make, >>> Modeling Intelligent Complex Software & Systems (MICSS-Lab), >>> *G236, Department of **Computer Science**, Faculty of Science, Campus >>> Middelheim,* >>> Middelheimlaan 1, 2020 Antwerp, Belgium >>> >>> >> >> -- >> >> *Burak KARADUMAN,* >> Ph.D. Student at the University of Antwerp & Flanders Make, >> Modeling Intelligent Complex Software & Systems (MICSS-Lab), >> *G236, Department of **Computer Science**, Faculty of Science, Campus >> Middelheim,* >> Middelheimlaan 1, 2020 Antwerp, Belgium >> >> > > -- > > *Burak KARADUMAN,* > Ph.D. Student at the University of Antwerp & Flanders Make, > Modeling Intelligent Complex Software & Systems (MICSS-Lab), > *G236, Department of **Computer Science**, Faculty of Science, Campus > Middelheim,* > Middelheimlaan 1, 2020 Antwerp, Belgium > > -- *Burak KARADUMAN,* Ph.D. Student at the University of Antwerp & Flanders Make, Modeling Intelligent Complex Software & Systems (MICSS-Lab), *G236, Department of **Computer Science**, Faculty of Science, Campus Middelheim,* Middelheimlaan 1, 2020 Antwerp, Belgium |
From: Burak K. <bbu...@gm...> - 2022-06-05 23:51:18
|
Dear all, Sorry for my often updates, I just tried the commit() function which leads me to incrementation of the belief mytask, but this time again I encounter the problem as follows: *java.lang.IllegalMonitorStateException at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.signalAll(AbstractQueuedSynchronizer.java:1487) at cartago.Artifact.commitObsStateChanges(Artifact.java:551) at cartago.Artifact.commit(Artifact.java:629) at example_JaCaMo.MyTimer.save(MyTimer.java:66) at example_JaCaMo.MyTimer$1.run(MyTimer.java:42) at java.base/java.util.TimerThread.mainLoop(Timer.java:556) at java.base/java.util.TimerThread.run(Timer.java:506)* Thank you. Best regards. Burak Karaduman <bbu...@gm...>, 6 Haz 2022 Pzt, 01:40 tarihinde şunu yazdı: > Hi, > > I deleted the signal and decided to move on with belief addition. However, > it only updates the value from 0 to 1 once. I think as the operation still > goes on because of timerTask, it does not update the observable property. > In the book, I saw that commitObsState was proposed, but I haven't been > able to see any detailed example of usage. Also, I have only seen > commitChanges() in the version that I use. > > Best regards. > > Burak Karaduman <bbu...@gm...>, 6 Haz 2022 Pzt, 00:18 > tarihinde şunu yazdı: > >> Dear all, >> >> I am trying to create a timer that counts based on seconds. However, I am >> getting this error; >> >> >> >> >> >> >> >> >> *java.lang.IllegalMonitorStateException at >> java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.signalAll(AbstractQueuedSynchronizer.java:1487) >> at cartago.Artifact.commitObsStateChangesAndSignal(Artifact.java:573)at >> cartago.Artifact.signal(Artifact.java:637) at >> example_JaCaMo.MyTimer.access$000(MyTimer.java:11) at >> example_JaCaMo.MyTimer$1.run(MyTimer.java:29) at >> java.base/java.util.TimerThread.mainLoop(Timer.java:556) at >> java.base/java.util.TimerThread.run(Timer.java:506)* >> >> My code is simply like this: >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> *public class MyTimer extends Artifact { void init() { >> defineObsProperty("mytimer", 0); timer_creation(); } void timer_creation() >> { this.beginExternalSession(); Timer timer = new Timer(); TimerTask task >> = new TimerTask(){ private int i = 0; public void run(){ if (i >> <= 30) { signal("timerEnd"); System.out.println(i); >> } }}; timer.scheduleAtFixedRate(task, 0, 1000); //1000ms = 1sec >> this.endExternalSession(true); }}* >> >> How can I tackle this problem? >> >> Thank you. >> >> Best regards. >> >> >> >> -- >> >> *Burak KARADUMAN,* >> Ph.D. Student at the University of Antwerp & Flanders Make, >> Modeling Intelligent Complex Software & Systems (MICSS-Lab), >> *G236, Department of **Computer Science**, Faculty of Science, Campus >> Middelheim,* >> Middelheimlaan 1, 2020 Antwerp, Belgium >> >> > > -- > > *Burak KARADUMAN,* > Ph.D. Student at the University of Antwerp & Flanders Make, > Modeling Intelligent Complex Software & Systems (MICSS-Lab), > *G236, Department of **Computer Science**, Faculty of Science, Campus > Middelheim,* > Middelheimlaan 1, 2020 Antwerp, Belgium > > -- *Burak KARADUMAN,* Ph.D. Student at the University of Antwerp & Flanders Make, Modeling Intelligent Complex Software & Systems (MICSS-Lab), *G236, Department of **Computer Science**, Faculty of Science, Campus Middelheim,* Middelheimlaan 1, 2020 Antwerp, Belgium |
From: Burak K. <bbu...@gm...> - 2022-06-05 23:40:36
|
Hi, I deleted the signal and decided to move on with belief addition. However, it only updates the value from 0 to 1 once. I think as the operation still goes on because of timerTask, it does not update the observable property. In the book, I saw that commitObsState was proposed, but I haven't been able to see any detailed example of usage. Also, I have only seen commitChanges() in the version that I use. Best regards. Burak Karaduman <bbu...@gm...>, 6 Haz 2022 Pzt, 00:18 tarihinde şunu yazdı: > Dear all, > > I am trying to create a timer that counts based on seconds. However, I am > getting this error; > > > > > > > > > *java.lang.IllegalMonitorStateException at > java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.signalAll(AbstractQueuedSynchronizer.java:1487) > at cartago.Artifact.commitObsStateChangesAndSignal(Artifact.java:573)at > cartago.Artifact.signal(Artifact.java:637) at > example_JaCaMo.MyTimer.access$000(MyTimer.java:11) at > example_JaCaMo.MyTimer$1.run(MyTimer.java:29) at > java.base/java.util.TimerThread.mainLoop(Timer.java:556) at > java.base/java.util.TimerThread.run(Timer.java:506)* > > My code is simply like this: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > *public class MyTimer extends Artifact { void init() { > defineObsProperty("mytimer", 0); timer_creation(); } void timer_creation() > { this.beginExternalSession(); Timer timer = new Timer(); TimerTask task > = new TimerTask(){ private int i = 0; public void run(){ if (i > <= 30) { signal("timerEnd"); System.out.println(i); > } }}; timer.scheduleAtFixedRate(task, 0, 1000); //1000ms = 1sec > this.endExternalSession(true); }}* > > How can I tackle this problem? > > Thank you. > > Best regards. > > > > -- > > *Burak KARADUMAN,* > Ph.D. Student at the University of Antwerp & Flanders Make, > Modeling Intelligent Complex Software & Systems (MICSS-Lab), > *G236, Department of **Computer Science**, Faculty of Science, Campus > Middelheim,* > Middelheimlaan 1, 2020 Antwerp, Belgium > > -- *Burak KARADUMAN,* Ph.D. Student at the University of Antwerp & Flanders Make, Modeling Intelligent Complex Software & Systems (MICSS-Lab), *G236, Department of **Computer Science**, Faculty of Science, Campus Middelheim,* Middelheimlaan 1, 2020 Antwerp, Belgium |
From: Burak K. <bbu...@gm...> - 2022-06-05 22:19:03
|
Dear all, I am trying to create a timer that counts based on seconds. However, I am getting this error; *java.lang.IllegalMonitorStateException at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.signalAll(AbstractQueuedSynchronizer.java:1487) at cartago.Artifact.commitObsStateChangesAndSignal(Artifact.java:573)at cartago.Artifact.signal(Artifact.java:637) at example_JaCaMo.MyTimer.access$000(MyTimer.java:11) at example_JaCaMo.MyTimer$1.run(MyTimer.java:29) at java.base/java.util.TimerThread.mainLoop(Timer.java:556) at java.base/java.util.TimerThread.run(Timer.java:506)* My code is simply like this: *public class MyTimer extends Artifact { void init() { defineObsProperty("mytimer", 0); timer_creation(); } void timer_creation() { this.beginExternalSession(); Timer timer = new Timer(); TimerTask task = new TimerTask(){ private int i = 0; public void run(){ if (i <= 30) { signal("timerEnd"); System.out.println(i); } }}; timer.scheduleAtFixedRate(task, 0, 1000); //1000ms = 1sec this.endExternalSession(true); }}* How can I tackle this problem? Thank you. Best regards. -- *Burak KARADUMAN,* Ph.D. Student at the University of Antwerp & Flanders Make, Modeling Intelligent Complex Software & Systems (MICSS-Lab), *G236, Department of **Computer Science**, Faculty of Science, Campus Middelheim,* Middelheimlaan 1, 2020 Antwerp, Belgium |
From: Jomi H. <jom...@gm...> - 2022-05-17 19:12:40
|
Hi Burak, I still do not fully understand your application (and its problem). Anyway, the instruction -color(_,ID)[source(_)] could be revised. If color/2 is perceived, it usually does not work to remove it from the BB because in the next cycle the agent will perceive it again and the belief will be reintroduced. Belief with [source(percept)] reflect the environment, and thus they are not directly manipulated by the agent. The agent can, of course, *act* on the environment so to change it and then, as consequence, perceive something different. If the case where color/2 comes from communication (as in the app you sent), the receiver can remove the belief and it remains “removed”. However, I think that belief told by other agent should preferably be removed by them (using untell performative). The best practice is that the agent changes only beliefs it has included, which have [source(self)] — what we sometimes call “mental notes”. However, I am not sure if this issue is related to the problem we are facing with a different environment. HTH, Jomi > On 13 May 2022, at 11:13, Burak Karaduman <bbu...@gm...> wrote: > > Hi Rafael, > > I realised that I shared the wrong code. I am sending the correct one. > > This version works, but first, you are going to see that agents run so fast even to trigger the same plan twice. Therefore, I added this condition (ID-ID2)<2. > > This implementation does not have any environment. It does not give any intention error. However, when I use an environment that has a colour sensor, it gives the intention not to finish the error. > > So if I define these plans as [automic] it may work? > > Thank you. > > > > > Rafael H Bordini <r.b...@ac...>, 13 May 2022 Cum, 04:36 tarihinde şunu yazdı: > Hi Burak, > > As far as I'm aware there is no implicit timeout for intentions. There could be and error in the actions that the intention execute, and I'm not sure if a failure to delete a belief also causes the intention to abort. This is very likely to happened because you manually deleting beliefs that are being created from perception (if I understood correctly) without making the plan atomic. Also, if you want a plan to trigger due to a belief addition, it should start > +color(... > And not > +!color > > > On Thu, 12 May 2022, 18:17 Burak Karaduman, <bbu...@gm...> wrote: > Hi Jomi, > > Thank you for your reply. Let me summarize the story for you, > > +!color(red,ID) : color(red,ID2) ..... > > For example, a sensor reads the colours of the incoming bricks. The first brick is red and has the ID 0, then this creates a belief addition as the head of the plan shows. { +!color(red,ID) }. > > Then, the second brick comes after 5 minutes, which is red and id is 1. > > In this case, this context matching should be triggered {+!color(red,ID) : color(red,ID2) & (ID-ID2)<2 & not ID == ID2} > > However, until the arrival of the second red brick, I think an implicit timeout mechanism is self-triggered and kills the intention by giving ''the intention could not finish error''. If that timeout was disabled, then it could work and wait until the occurrence of the next event. > > Maybe a blind commitment pattern is suitable. But, for this kind of work, I should be able to disable this timeout easily. I think I have already tried .wait commands. > > The intention should not be frozen, but patient enough for the next events. This code works on the computer without any environment, but when I deploy the code onto a system of course physical events do not happen that often. > > Best regards. > > > > > > Jomi Hubner <jom...@gm...>, 12 May 2022 Per, 13:41 tarihinde şunu yazdı: > Dear Burak, > > I wasn’t able to figure out the error that is happening. Is there something more in the error message? (Besides intention could not finish) > > Anyway, any intention can be suspended and resumed latter. The .wait internal action can be used for that, but also .suspend and .resume. > > Maybe the idea of commitments can also help you: > https://github.com/jason-lang/jason/blob/master/doc/tech/patterns.adoc#commitment > > HTH, > > Jomi > > > On 10 May 2022, at 17:06, Burak Karaduman <bbu...@gm...> wrote: > > > > Dear all, > > > > I have an agent code which is as follows: > > > > > > +!color(red,ID) : color(red,ID2) & (ID-ID2)<2 & not ID == ID2 <- push(ID,ID2); mediumPress; .print("A"); .print("Pushing:",red," ",red); -color(_,ID)[source(_)]; -color(_,ID2)[source(_)]. > > > > +!color(red,ID) : color(_,ID2) & (ID-ID2)<2 & not ID == ID2 <- reject(ID2); ejectProduct; .print("B"); -color(_,ID2)[source(_)]. > > > > +!color(OC,ID) : color(red,ID2) & (ID-ID2)<2 & not ID == ID2<- push(ID,ID2);.print("C"); mediumPress; .print("Pushing:",OC," ",red); -color(_,ID)[source(_)]; -color(_,ID2)[source(_)]. > > > > +!color(OC,ID) : color(OC,ID2) & (ID-ID2)<2 & not ID == ID2 <- push(ID,ID2);.print("D"); mediumPress; .print("Pushing:",OC," ",OC); -color(_,ID)[source(_)]; -color(_,ID2)[source(_)]. > > > > +!color(OC,ID) : color(OC2,ID2) & not OC==OC2 & (ID-ID2)<2 & not ID == ID2 <- .print("E"); reject(ID2); ejectProduct; -color(_,ID2)[source(_)]. > > > > The code runs well with a textual environment because the occurrence of the events is quite frequent. Therefore, the next contextual change happens right after the completion of the previous event. The planning mechanism is simple, various consecutive products which have IDs keep coming and the agent is trying to match these products according to their colours. It also uses IDs for comparison because agents run so fast to generate the same event (i.e same products with the same IDs). > > > > However, when I deploy this code to a physical system I get an "Intention could not finish" error, the occurrence of events can have long time periods because of the physical environment. For example product red with ID 0 is generated, then product blue with ID 1 can be generated after 2 minutes or hours. Is it possible to define a timeout for the intention? Or is it possible to await it forever etc? > > > > Best regards. > > > > > > -- > > Burak KARADUMAN, > > Ph.D. Student at the University of Antwerp & Flanders Make, > > Modeling Intelligent Complex Software & Systems (MICSS-Lab), > > G236, Department of Computer Science, Faculty of Science, Campus Middelheim, > > Middelheimlaan 1, 2020 Antwerp, Belgium > > > > _______________________________________________ > > Jason-users mailing list > > Jas...@li... > > https://lists.sourceforge.net/lists/listinfo/jason-users > > > > -- > Burak KARADUMAN, > Ph.D. Student at the University of Antwerp & Flanders Make, > Modeling Intelligent Complex Software & Systems (MICSS-Lab), > G236, Department of Computer Science, Faculty of Science, Campus Middelheim, > Middelheimlaan 1, 2020 Antwerp, Belgium > > _______________________________________________ > Jason-users mailing list > Jas...@li... > https://lists.sourceforge.net/lists/listinfo/jason-users > > > -- > Burak KARADUMAN, > Ph.D. Student at the University of Antwerp & Flanders Make, > Modeling Intelligent Complex Software & Systems (MICSS-Lab), > G236, Department of Computer Science, Faculty of Science, Campus Middelheim, > Middelheimlaan 1, 2020 Antwerp, Belgium > > <Question.zip> |
From: Rafael H B. <r.b...@ac...> - 2022-05-13 02:36:51
|
Hi Burak, As far as I'm aware there is no implicit timeout for intentions. There could be and error in the actions that the intention execute, and I'm not sure if a failure to delete a belief also causes the intention to abort. This is very likely to happened because you manually deleting beliefs that are being created from perception (if I understood correctly) without making the plan atomic. Also, if you want a plan to trigger due to a belief addition, it should start +color(... And not +!color On Thu, 12 May 2022, 18:17 Burak Karaduman, <bbu...@gm...> wrote: > Hi Jomi, > > Thank you for your reply. Let me summarize the story for you, > > *+!color(red,ID) : color(red,ID2) .....* > > For example, a sensor reads the colours of the incoming bricks. The first > brick is red and has the ID 0, then this creates a belief addition as the > head of the plan shows. { *+!color(red,ID) *}. > > Then, the second brick comes after 5 minutes, which is red and id is 1. > > In this case, this context matching should be triggered {*+!color(red,ID) > : color(red,ID2) & (ID-ID2)<2 & not ID == ID2}* > > However, until the arrival of the second red brick, I think an implicit timeout > mechanism is self-triggered and kills the intention by giving ''the > intention could not finish error''. If that timeout was disabled, then it > could work and wait until the occurrence of the next event. > > Maybe a blind commitment pattern is suitable. But, for this kind of work, > I should be able to disable this timeout easily. I think I have already > tried .wait commands. > > The intention should not be frozen, but patient enough for the next > events. This code works on the computer without any environment, but when I > deploy the code onto a system of course physical events do not happen that > often. > > Best regards. > > > > > > Jomi Hubner <jom...@gm...>, 12 May 2022 Per, 13:41 tarihinde şunu > yazdı: > >> Dear Burak, >> >> I wasn’t able to figure out the error that is happening. Is there >> something more in the error message? (Besides intention could not finish) >> >> Anyway, any intention can be suspended and resumed latter. The .wait >> internal action can be used for that, but also .suspend and .resume. >> >> Maybe the idea of commitments can also help you: >> >> https://github.com/jason-lang/jason/blob/master/doc/tech/patterns.adoc#commitment >> >> HTH, >> >> Jomi >> >> > On 10 May 2022, at 17:06, Burak Karaduman <bbu...@gm...> >> wrote: >> > >> > Dear all, >> > >> > I have an agent code which is as follows: >> > >> > >> > +!color(red,ID) : color(red,ID2) & (ID-ID2)<2 & not ID == ID2 <- >> push(ID,ID2); mediumPress; .print("A"); .print("Pushing:",red," ",red); >> -color(_,ID)[source(_)]; -color(_,ID2)[source(_)]. >> > >> > +!color(red,ID) : color(_,ID2) & (ID-ID2)<2 & not ID == ID2 <- >> reject(ID2); ejectProduct; .print("B"); -color(_,ID2)[source(_)]. >> > >> > +!color(OC,ID) : color(red,ID2) & (ID-ID2)<2 & not ID == ID2<- >> push(ID,ID2);.print("C"); mediumPress; .print("Pushing:",OC," ",red); >> -color(_,ID)[source(_)]; -color(_,ID2)[source(_)]. >> > >> > +!color(OC,ID) : color(OC,ID2) & (ID-ID2)<2 & not ID == ID2 <- >> push(ID,ID2);.print("D"); mediumPress; .print("Pushing:",OC," ",OC); >> -color(_,ID)[source(_)]; -color(_,ID2)[source(_)]. >> > >> > +!color(OC,ID) : color(OC2,ID2) & not OC==OC2 & (ID-ID2)<2 & not ID == >> ID2 <- .print("E"); reject(ID2); ejectProduct; >> -color(_,ID2)[source(_)]. >> > >> > The code runs well with a textual environment because the occurrence of >> the events is quite frequent. Therefore, the next contextual change happens >> right after the completion of the previous event. The planning mechanism is >> simple, various consecutive products which have IDs keep coming and the >> agent is trying to match these products according to their colours. It also >> uses IDs for comparison because agents run so fast to generate the same >> event (i.e same products with the same IDs). >> > >> > However, when I deploy this code to a physical system I get an >> "Intention could not finish" error, the occurrence of events can have long >> time periods because of the physical environment. For example product red >> with ID 0 is generated, then product blue with ID 1 can be generated after >> 2 minutes or hours. Is it possible to define a timeout for the intention? >> Or is it possible to await it forever etc? >> > >> > Best regards. >> > >> > >> > -- >> > Burak KARADUMAN, >> > Ph.D. Student at the University of Antwerp & Flanders Make, >> > Modeling Intelligent Complex Software & Systems (MICSS-Lab), >> > G236, Department of Computer Science, Faculty of Science, Campus >> Middelheim, >> > Middelheimlaan 1, 2020 Antwerp, Belgium >> > >> > _______________________________________________ >> > Jason-users mailing list >> > Jas...@li... >> > https://lists.sourceforge.net/lists/listinfo/jason-users >> >> > > -- > > *Burak KARADUMAN,* > Ph.D. Student at the University of Antwerp & Flanders Make, > Modeling Intelligent Complex Software & Systems (MICSS-Lab), > *G236, Department of **Computer Science**, Faculty of Science, Campus > Middelheim,* > Middelheimlaan 1, 2020 Antwerp, Belgium > > _______________________________________________ > Jason-users mailing list > Jas...@li... > https://lists.sourceforge.net/lists/listinfo/jason-users > |
From: Burak K. <bbu...@gm...> - 2022-05-12 21:16:58
|
Hi Jomi, Thank you for your reply. Let me summarize the story for you, *+!color(red,ID) : color(red,ID2) .....* For example, a sensor reads the colours of the incoming bricks. The first brick is red and has the ID 0, then this creates a belief addition as the head of the plan shows. { *+!color(red,ID) *}. Then, the second brick comes after 5 minutes, which is red and id is 1. In this case, this context matching should be triggered {*+!color(red,ID) : color(red,ID2) & (ID-ID2)<2 & not ID == ID2}* However, until the arrival of the second red brick, I think an implicit timeout mechanism is self-triggered and kills the intention by giving ''the intention could not finish error''. If that timeout was disabled, then it could work and wait until the occurrence of the next event. Maybe a blind commitment pattern is suitable. But, for this kind of work, I should be able to disable this timeout easily. I think I have already tried .wait commands. The intention should not be frozen, but patient enough for the next events. This code works on the computer without any environment, but when I deploy the code onto a system of course physical events do not happen that often. Best regards. Jomi Hubner <jom...@gm...>, 12 May 2022 Per, 13:41 tarihinde şunu yazdı: > Dear Burak, > > I wasn’t able to figure out the error that is happening. Is there > something more in the error message? (Besides intention could not finish) > > Anyway, any intention can be suspended and resumed latter. The .wait > internal action can be used for that, but also .suspend and .resume. > > Maybe the idea of commitments can also help you: > > https://github.com/jason-lang/jason/blob/master/doc/tech/patterns.adoc#commitment > > HTH, > > Jomi > > > On 10 May 2022, at 17:06, Burak Karaduman <bbu...@gm...> > wrote: > > > > Dear all, > > > > I have an agent code which is as follows: > > > > > > +!color(red,ID) : color(red,ID2) & (ID-ID2)<2 & not ID == ID2 <- > push(ID,ID2); mediumPress; .print("A"); .print("Pushing:",red," ",red); > -color(_,ID)[source(_)]; -color(_,ID2)[source(_)]. > > > > +!color(red,ID) : color(_,ID2) & (ID-ID2)<2 & not ID == ID2 <- > reject(ID2); ejectProduct; .print("B"); -color(_,ID2)[source(_)]. > > > > +!color(OC,ID) : color(red,ID2) & (ID-ID2)<2 & not ID == ID2<- > push(ID,ID2);.print("C"); mediumPress; .print("Pushing:",OC," ",red); > -color(_,ID)[source(_)]; -color(_,ID2)[source(_)]. > > > > +!color(OC,ID) : color(OC,ID2) & (ID-ID2)<2 & not ID == ID2 <- > push(ID,ID2);.print("D"); mediumPress; .print("Pushing:",OC," ",OC); > -color(_,ID)[source(_)]; -color(_,ID2)[source(_)]. > > > > +!color(OC,ID) : color(OC2,ID2) & not OC==OC2 & (ID-ID2)<2 & not ID == > ID2 <- .print("E"); reject(ID2); ejectProduct; > -color(_,ID2)[source(_)]. > > > > The code runs well with a textual environment because the occurrence of > the events is quite frequent. Therefore, the next contextual change happens > right after the completion of the previous event. The planning mechanism is > simple, various consecutive products which have IDs keep coming and the > agent is trying to match these products according to their colours. It also > uses IDs for comparison because agents run so fast to generate the same > event (i.e same products with the same IDs). > > > > However, when I deploy this code to a physical system I get an > "Intention could not finish" error, the occurrence of events can have long > time periods because of the physical environment. For example product red > with ID 0 is generated, then product blue with ID 1 can be generated after > 2 minutes or hours. Is it possible to define a timeout for the intention? > Or is it possible to await it forever etc? > > > > Best regards. > > > > > > -- > > Burak KARADUMAN, > > Ph.D. Student at the University of Antwerp & Flanders Make, > > Modeling Intelligent Complex Software & Systems (MICSS-Lab), > > G236, Department of Computer Science, Faculty of Science, Campus > Middelheim, > > Middelheimlaan 1, 2020 Antwerp, Belgium > > > > _______________________________________________ > > Jason-users mailing list > > Jas...@li... > > https://lists.sourceforge.net/lists/listinfo/jason-users > > -- *Burak KARADUMAN,* Ph.D. Student at the University of Antwerp & Flanders Make, Modeling Intelligent Complex Software & Systems (MICSS-Lab), *G236, Department of **Computer Science**, Faculty of Science, Campus Middelheim,* Middelheimlaan 1, 2020 Antwerp, Belgium |
From: Jomi H. <jom...@gm...> - 2022-05-12 11:41:32
|
Dear Burak, I wasn’t able to figure out the error that is happening. Is there something more in the error message? (Besides intention could not finish) Anyway, any intention can be suspended and resumed latter. The .wait internal action can be used for that, but also .suspend and .resume. Maybe the idea of commitments can also help you: https://github.com/jason-lang/jason/blob/master/doc/tech/patterns.adoc#commitment HTH, Jomi > On 10 May 2022, at 17:06, Burak Karaduman <bbu...@gm...> wrote: > > Dear all, > > I have an agent code which is as follows: > > > +!color(red,ID) : color(red,ID2) & (ID-ID2)<2 & not ID == ID2 <- push(ID,ID2); mediumPress; .print("A"); .print("Pushing:",red," ",red); -color(_,ID)[source(_)]; -color(_,ID2)[source(_)]. > > +!color(red,ID) : color(_,ID2) & (ID-ID2)<2 & not ID == ID2 <- reject(ID2); ejectProduct; .print("B"); -color(_,ID2)[source(_)]. > > +!color(OC,ID) : color(red,ID2) & (ID-ID2)<2 & not ID == ID2<- push(ID,ID2);.print("C"); mediumPress; .print("Pushing:",OC," ",red); -color(_,ID)[source(_)]; -color(_,ID2)[source(_)]. > > +!color(OC,ID) : color(OC,ID2) & (ID-ID2)<2 & not ID == ID2 <- push(ID,ID2);.print("D"); mediumPress; .print("Pushing:",OC," ",OC); -color(_,ID)[source(_)]; -color(_,ID2)[source(_)]. > > +!color(OC,ID) : color(OC2,ID2) & not OC==OC2 & (ID-ID2)<2 & not ID == ID2 <- .print("E"); reject(ID2); ejectProduct; -color(_,ID2)[source(_)]. > > The code runs well with a textual environment because the occurrence of the events is quite frequent. Therefore, the next contextual change happens right after the completion of the previous event. The planning mechanism is simple, various consecutive products which have IDs keep coming and the agent is trying to match these products according to their colours. It also uses IDs for comparison because agents run so fast to generate the same event (i.e same products with the same IDs). > > However, when I deploy this code to a physical system I get an "Intention could not finish" error, the occurrence of events can have long time periods because of the physical environment. For example product red with ID 0 is generated, then product blue with ID 1 can be generated after 2 minutes or hours. Is it possible to define a timeout for the intention? Or is it possible to await it forever etc? > > Best regards. > > > -- > Burak KARADUMAN, > Ph.D. Student at the University of Antwerp & Flanders Make, > Modeling Intelligent Complex Software & Systems (MICSS-Lab), > G236, Department of Computer Science, Faculty of Science, Campus Middelheim, > Middelheimlaan 1, 2020 Antwerp, Belgium > > _______________________________________________ > Jason-users mailing list > Jas...@li... > https://lists.sourceforge.net/lists/listinfo/jason-users |
From: Burak K. <bbu...@gm...> - 2022-05-10 20:06:37
|
Dear all, I have an agent code which is as follows: *+!color(red,ID) : color(red,ID2) & (ID-ID2)<2 & not ID == ID2 <- push(ID,ID2); mediumPress; .print("A"); .print("Pushing:",red," ",red); -color(_,ID)[source(_)]; -color(_,ID2)[source(_)].+!color(red,ID) : color(_,ID2) & (ID-ID2)<2 & not ID == ID2 <- reject(ID2); ejectProduct; .print("B"); -color(_,ID2)[source(_)].+!color(OC,ID) : color(red,ID2) & (ID-ID2)<2 & not ID == ID2<- push(ID,ID2);.print("C"); mediumPress; .print("Pushing:",OC," ",red); -color(_,ID)[source(_)]; -color(_,ID2)[source(_)].+!color(OC,ID) : color(OC,ID2) & (ID-ID2)<2 & not ID == ID2 <- push(ID,ID2);.print("D"); mediumPress; .print("Pushing:",OC," ",OC); -color(_,ID)[source(_)]; -color(_,ID2)[source(_)].+!color(OC,ID) : color(OC2,ID2) & not OC==OC2 & (ID-ID2)<2 & not ID == ID2 <- .print("E"); reject(ID2); ejectProduct; -color(_,ID2)[source(_)].* The code runs well with a textual environment because the occurrence of the events is quite frequent. Therefore, the next contextual change happens right after the completion of the previous event. The planning mechanism is simple, various consecutive products which have IDs keep coming and the agent is trying to match these products according to their colours. It also uses IDs for comparison because agents run so fast to generate the same event (i.e same products with the same IDs). However, when I deploy this code to a physical system I get an "Intention could not finish" error, the occurrence of events can have long time periods because of the physical environment. For example product red with ID 0 is generated, then product blue with ID 1 can be generated after 2 minutes or hours. Is it possible to define a timeout for the intention? Or is it possible to await it forever etc? Best regards. -- *Burak KARADUMAN,* Ph.D. Student at the University of Antwerp & Flanders Make, Modeling Intelligent Complex Software & Systems (MICSS-Lab), *G236, Department of **Computer Science**, Faculty of Science, Campus Middelheim,* Middelheimlaan 1, 2020 Antwerp, Belgium |
From: Rafael H B. <r.b...@ac...> - 2022-01-28 13:21:44
|
Hi Burak, Nothing that is computable is impossible in either, but it must be the case that some applications are easier to do in one than the other, as you conjectured, but it isn't easy to show that. Certainly an essentially reactive application like this will not help so much to differentiate the two. You'd have to think one where agents have long courses of action to achieve a goal, which depends on subgoals for which the courses of action may be more appropriate or fail depending on the context (the state of the environment and other agents). Perhaps Jomi has some pointers in the literature that tried to do this, I don't remember from the top of my mind now. Well, perhaps you could try the codes for the past multi agent programming competitions, the ones from my group and Jomi's are publicly available. On Fri, 28 Jan 2022, 07:16 Burak Karaduman, <bbu...@gm...> wrote: > Dear all, > > I have been researching for this answer for 2-3 weeks. I have a case study > that accepts four different coloured bricks. The system can eject any brick > outside of the system and can merge two bricks. The functionality of the > system works in this manner. It reads the colour of the brick and decides > whether to accept it or eject it. It then accepts a second brick and gives > the same decision. Then two bricks are merged and ejected. The two combined > bricks may have the same colour or maybe different. > > Therefore, considering such a system, evolving this to what kind of > problem may hinder the power of BDI while it becomes very hard or > impossible with Jade? > > Thank you. > Best regards. > -- > > *Burak KARADUMAN,* > Ph.D. Student at the University of Antwerp & Flanders Make, > Modeling Intelligent Complex Software & Systems (MICSS-Lab), > *G236, Department of **Computer Science**, Faculty of Science, Campus > Middelheim,* > Middelheimlaan 1, 2020 Antwerp, Belgium > > _______________________________________________ > Jason-users mailing list > Jas...@li... > https://lists.sourceforge.net/lists/listinfo/jason-users > |
From: Burak K. <bbu...@gm...> - 2022-01-28 10:16:17
|
Dear all, I have been researching for this answer for 2-3 weeks. I have a case study that accepts four different coloured bricks. The system can eject any brick outside of the system and can merge two bricks. The functionality of the system works in this manner. It reads the colour of the brick and decides whether to accept it or eject it. It then accepts a second brick and gives the same decision. Then two bricks are merged and ejected. The two combined bricks may have the same colour or maybe different. Therefore, considering such a system, evolving this to what kind of problem may hinder the power of BDI while it becomes very hard or impossible with Jade? Thank you. Best regards. -- *Burak KARADUMAN,* Ph.D. Student at the University of Antwerp & Flanders Make, Modeling Intelligent Complex Software & Systems (MICSS-Lab), *G236, Department of **Computer Science**, Faculty of Science, Campus Middelheim,* Middelheimlaan 1, 2020 Antwerp, Belgium |
From: Jomi H. <jom...@gm...> - 2021-10-05 18:27:42
|
Hi Burak, the use of Jade depends on several aspects…. just to start, have you checked 1) the FAQ http://jason.sourceforge.net/doc/faq.html#_how_to_run_my_agents_on_several_machines_with_jade 2) the demo https://github.com/jason-lang/jason/tree/master/demos/distributed-jade/case1 does the demo run on your machines? HTH Jomi ps.: you are right, Jason creates the containers. > On 5 Oct 2021, at 12:28, Burak Karaduman <bbu...@gm...> wrote: > > Dear All, > > I switched to Jade infrastructure. There are two -jar files that were built to run inside two computers (they are in the same LAN). However, Computer A cannot send messages to computer B and vice-versa. > > I tried infrastructure: Jade for both -jar files first ( agents successfully sent messages to each other in the centralized infrastructure). Then I tried infrastructure: Jade(main_container_host("IP address of computer A ")) for two jar files. > > However, they cannot send messages to each other. BTW, I have not created any Jade container I assume that Jason already handles it by itself once infrastructure: Jade is instructed. > > Best regards. > > Burak Karaduman <bbu...@gm...>, 5 Eki 2021 Sal, 11:09 tarihinde şunu yazdı: > Dear All, > > I have two devices. Each of them programmed to run a centeralized structure. All i need is to send messages between two container. Is this possible without Jade? > > Thank you. > > Best Regards. > > > -- > Burak KARADUMAN, > Ph.D. Student at the University of Antwerp & Flanders Make, > Modeling Intelligent Complex Software & Systems (MICSS-Lab), > G236, Department of Computer Science, Faculty of Science, Campus Middelheim, > Middelheimlaan 1, 2020 Antwerp, Belgium > > _______________________________________________ > Jason-users mailing list > Jas...@li... > https://lists.sourceforge.net/lists/listinfo/jason-users |
From: Burak K. <bbu...@gm...> - 2021-10-05 15:28:59
|
Dear All, I switched to Jade infrastructure. There are two -jar files that were built to run inside two computers (they are in the same LAN). However, Computer A cannot send messages to computer B and vice-versa. I tried infrastructure: Jade for both -jar files first ( agents successfully sent messages to each other in the centralized infrastructure). Then I tried infrastructure: Jade(main_container_host("IP address of computer A ")) for two jar files. However, they cannot send messages to each other. BTW, I have not created any Jade container I assume that Jason already handles it by itself once infrastructure: Jade is instructed. Best regards. Burak Karaduman <bbu...@gm...>, 5 Eki 2021 Sal, 11:09 tarihinde şunu yazdı: > Dear All, > > I have two devices. Each of them programmed to run a centeralized > structure. All i need is to send messages between two container. Is this > possible without Jade? > > Thank you. > > Best Regards. > -- *Burak KARADUMAN,* Ph.D. Student at the University of Antwerp & Flanders Make, Modeling Intelligent Complex Software & Systems (MICSS-Lab), *G236, Department of **Computer Science**, Faculty of Science, Campus Middelheim,* Middelheimlaan 1, 2020 Antwerp, Belgium |
From: Burak K. <bbu...@gm...> - 2021-10-05 09:09:39
|
Dear All, I have two devices. Each of them programmed to run a centeralized structure. All i need is to send messages between two container. Is this possible without Jade? Thank you. Best Regards. |
From: Amandine M. <am...@la...> - 2021-09-23 07:16:53
|
Hello, I think you should use the function removePerceptsByUnif for what you're trying to do. Best, Amandine Le 21/09/2021 à 15:29, Amandine Mayima a écrit : > > Hello, > > I think you should use the function removePerceptsByUnif for what > you're trying to do. > > Best, > > Amandine > > Le 06/09/2021 à 18:43, Burak Karaduman a écrit : >> Dear all, >> >> I have to clear a specific percept of a specific agent. >> >> I used the following code to clear its two combinations. >> >> removePercept("dropAgent",Literal.parseLiteral("dropButtonStatus(true)")); >> removePercept("dropAgent",Literal.parseLiteral("dropButtonStatus(false)")); >> >> It is worked, but for each combination of dropButtonStatus() or for >> any type of percept, I have to input the parameters one-by-one. >> >> I also tried something like this to address and clear all percepts >> related with dropButtonStatus >> removePercept("dropAgent",Literal.parseLiteral("dropButtonStatus(_)")); >> >> However, it did not work. How can I do it? >> >> Thank you. >> Best regards. >> >> -- >> >> *Burak KARADUMAN,* >> >> Ph.D. Student at the University of Antwerp & Flanders Make, >> Modeling Intelligent Complex Software & Systems (MICSS-Lab), >> **G236*, Department of **Computer Science**, Faculty of Science, >> Campus Middelheim,** >> *Middelheimlaan 1, 2020 Antwerp, Belgium >> >> >> >> _______________________________________________ >> Jason-users mailing list >> Jas...@li... >> https://lists.sourceforge.net/lists/listinfo/jason-users |
From: Burak K. <bbu...@gm...> - 2021-09-06 16:43:40
|
Dear all, I have to clear a specific percept of a specific agent. I used the following code to clear its two combinations. removePercept("dropAgent",Literal.parseLiteral("dropButtonStatus(true)")); removePercept("dropAgent",Literal.parseLiteral("dropButtonStatus(false)")); It is worked, but for each combination of dropButtonStatus() or for any type of percept, I have to input the parameters one-by-one. I also tried something like this to address and clear all percepts related with dropButtonStatus removePercept("dropAgent",Literal.parseLiteral("dropButtonStatus(_)")); However, it did not work. How can I do it? Thank you. Best regards. -- *Burak KARADUMAN,* Ph.D. Student at the University of Antwerp & Flanders Make, Modeling Intelligent Complex Software & Systems (MICSS-Lab), *G236, Department of **Computer Science**, Faculty of Science, Campus Middelheim,* Middelheimlaan 1, 2020 Antwerp, Belgium |
From: Burak K. <bbu...@gm...> - 2021-08-16 11:17:25
|
Dear All, I have to close Jason GUI. I am using a device that does not support Java swing libraries. Is there a parameter that can be added to .mas2j file to deactivate the GUI. Thank you. -- *Burak KARADUMAN,* Ph.D. Student at the University of Antwerp & Flanders Make, Modeling Intelligent Complex Software & Systems (MICSS-Lab), *G236, Department of **Computer Science**, Faculty of Science, Campus Middelheim,* Middelheimlaan 1, 2020 Antwerp, Belgium |
From: Burak K. <bbu...@gm...> - 2021-08-14 17:41:56
|
Dear all, Is it possible to install Jason on *IntelliJ *? Could you share the installation steps, please? Thank you. -- *Burak KARADUMAN,* Ph.D. Student at the University of Antwerp & Flanders Make, Modeling Intelligent Complex Software & Systems (MICSS-Lab), *G236, Department of **Computer Science**, Faculty of Science, Campus Middelheim,* Middelheimlaan 1, 2020 Antwerp, Belgium |
From: Jomi H. <jom...@gm...> - 2020-11-12 22:51:57
|
Thanks Stephen for reporting this bug. It is now fixed and included in Jason 2.6.2, just released. > On 27 Oct 2020, at 21:32, Stephen Cranefield <ste...@ot...> wrote: > > Is it possible to convert "special" atoms such as '$%12' into strings that include the single quotation marks? .term2string does not include the quotation marks, and .print does not include them either. I tested this with Jason 2.6.1. For example: > > !start. > +!start <- > .term2string(foo('$%12'), S); > .print(S); > .length(S, Len); > .print("Length: ", Len). > > Output: > foo($%12) > Length: 9 > > If the quotation marks aren't included in the string, then it is not possible to parse the strings again to convert them back to Jason atoms. > > Regards, > Stephen > > > _______________________________________________ > Jason-users mailing list > Jas...@li... > https://lists.sourceforge.net/lists/listinfo/jason-users |