Introduction Jacamo-web Demonstration Final remarks Jacamo-web is on the fly: an interactive MultiAgent System IDE1 Cleber Jorge Amaral1,2 and Jomi Fred Hübner1 1Federal University of Santa Catarina (UFSC) 2Federal Institute of Santa Catarina (IFSC) EMAS 2019 - 7th International Workshop on Engineering Multi-Agent Systems 1 Supported by Petrobras project AG-BR, IFSC and UFSC. Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
Introduction Jacamo-web Demonstration Final remarks Interactive programming Jacamo-web Standard Programming: we stop to apply changes. Interactive Programming: we change while it is running. Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
Introduction Jacamo-web Demonstration Final remarks Interactive programming Jacamo-web Advantages: Rapid prototyping, debugging and learning; Reduced system development time [2]; Development is done Incrementally. Applications: Unclear problems; Long-term running apps; Running apps possibly performing critical missions; Teaching. Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
Introduction Jacamo-web Demonstration Final remarks Interactive programming Jacamo-web Based on JaCaMo [1]: A Multi-Agent Oriented Programming (MAOP) platform; Agents developed in Jason; Shared environment programmed in CArtAgO; Coordination of global behaviour developed in MOISE. Provides Read-Eval-Print Loop (REPL) functions [3]; Brings a built-in Java compiler; Provides Web-interface for: create, modify, interact with, and destroy agents, artifacts, and organisations; Free and open source. Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
Introduction Jacamo-web Demonstration Final remarks Functionalities and demonstration Live demonstration Note: See details on: https://github.com/jacamo-lang/ jacamo-web/tree/master/examples/financial-consultants Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
Introduction Jacamo-web Demonstration Final remarks Functionalities and demonstration Create an artifact dynamic.Account, with a property called balance and two operations: debit and credit: package dynamic; import cartago.*; public class Account extends Artifact { void init() { defineObsProperty("balance", 0); } @OPERATION void setBalance(int newBalance) { ObsProperty prop = getObsProperty("balance"); prop.updateValue(newBalance); signal("tick"); } @OPERATION void incBalance() { ObsProperty prop = getObsProperty("balance"); prop.updateValue(prop.intValue()+1); signal("tick"); } } Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
Introduction Jacamo-web Demonstration Final remarks Functionalities and demonstration Create agent bob by command box Note: (i) if bob.asl file does not exist, create it, else load it. (ii) to create from another agent use .create_agent(bob). (iii) agents can be killed opening it and clicking on kill agent Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
Introduction Jacamo-web Demonstration Final remarks Functionalities and demonstration Make artifact Account, create father and give credit to bob. Note: (i) graph allow click to navigate; (ii) It shows current events and intentions. Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
Introduction Jacamo-web Demonstration Final remarks Functionalities and demonstration Modify bob’s plan library to react when balance changes and to say Hi in a loop. Edit again and change it to say Bonjour. Note: (i) intentions that were running are not affected. (ii) initial beliefs and goals are not loaded. Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
Introduction Jacamo-web Demonstration Final remarks Functionalities and demonstration Creating organisation family. bob plays husband and alice plays wife role. createWorkspace(family); joinWorkspace(family,Ofa); o::makeArtifact(family, "ora4mas.nopl.OrgBoard", ["src/org/family.xml"], OrgArtId)[wid(Ofa)]; o::focus(OrgArtId); g::createGroup(familygroup, familygroup, GrArtId); g::focus(GrArtId); Joining the organisation (bob’s command) joinWorkspace(family,Ofa); g::lookupArtifact(familygroup, GrArtId)[wid(Ofa)]; g::focus(GrArtId)[wid(Ofa)]; g::adoptRole(husband)[wid(Ofa)]; Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
Introduction Jacamo-web Demonstration Final remarks Functionalities and demonstration Change organisation’s structure adding new roles: Note: (i) agent can use adoptRole("son"). Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
Introduction Jacamo-web Demonstration Final remarks Functionalities and demonstration Inspect organisations: Note: (i) Graph allows navigation; (ii) show/hide options for groups, schemes and norms. Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
Introduction Jacamo-web Demonstration Final remarks Functionalities and demonstration To demonstrate a bigger system, create agent one and invoke existing plan !launchFinancialAgents. Note: financialagents organisation also has norms and schemes. Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
Introduction Jacamo-web Demonstration Final remarks Functionalities and demonstration Consult directory facilitator: Note: agents may register or deregister using the commands: .df_register(service) or .df_deregister(service). Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
Introduction Jacamo-web Demonstration Final remarks Conclusion and future Questions? Do it by your own Interactive programming sounds to fit MAOP well considering open and long term running systems; Jacamo-web is bringing useful functions in this direction; We have to move from asl file to direct change the agent itself, including functions to save agent state in case of crash; To enhance artifact interface functions we must allow to change instances directly, maybe creating an interface to add/edit/delete operations and another for properties. Actually java file could not be visible; Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
Introduction Jacamo-web Demonstration Final remarks Conclusion and future Questions? Do it by your own Questions? Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
Introduction Jacamo-web Demonstration Final remarks Conclusion and future Questions? Do it by your own Download jacamo-web from github: $ git clone https://github.com/jacamo-lang/jacamo-web Compile javamo-web: $ jacamo-web/gradle build Run this demo: $ jacamo-web/examples/financial-consultants/gradle run Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
Introduction Jacamo-web Demonstration Final remarks Conclusion and future Questions? Do it by your own Boissier, O., Bordini, R.H., Hübner, J.F., Ricci, A.: Dimensions in programming multi-agent systems. The Knowledge Engineering Review 34, e2 (2019). https://doi.org/10.1017/S026988891800005X Tung, S.H.S.: Interactive modular programming in Scheme. ACM SIGPLAN Lisp Pointers V(1), 86–95 (1992). https://doi.org/10.1145/141478.141512 Wenzel, M.: READ-EVAL-PRINT in Parallel and Asynchronous Proof-checking. Electronic Proceedings in Theoretical Computer Science 118, 57–71 (2013). https://doi.org/10.4204/EPTCS.118.4, http://arxiv.org/abs/1307.1944v1 Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
Introduction Jacamo-web Demonstration Final remarks Conclusion and future Questions? Do it by your own Appendix Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
Introduction Jacamo-web Demonstration Final remarks Conclusion and future Questions? Do it by your own Figure: Financial Agents Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
Introduction Jacamo-web Demonstration Final remarks Conclusion and future Questions? Do it by your own Agents: myPA: asks for recommendations and answer the user; graham: uses the formula Price < (22.5 ∗ EPS ∗ BVPS); bazin: uses the formula DY >= 0.06 and Debt/EV <= 1; greenblatt: uses the formula EBIT/(MarketCap + NetDebt) < 0.1. Organisation: financialteam Group: 1..100 assistant and 1..100 consultant, assistant communicate with consultant. financialtsch Scheme: mAssistant ask for opportunities, mConsultant focus on the artifact. Environment: fundamentus Artifacts: placed in financialagents Workspace, capable to parse a web-site retrieving financial data about assets. Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID

Jacamo web is on the fly: an interactive multi-agent systems programming environment

  • 1.
    Introduction Jacamo-web Demonstration Final remarks Jacamo-webis on the fly: an interactive MultiAgent System IDE1 Cleber Jorge Amaral1,2 and Jomi Fred Hübner1 1Federal University of Santa Catarina (UFSC) 2Federal Institute of Santa Catarina (IFSC) EMAS 2019 - 7th International Workshop on Engineering Multi-Agent Systems 1 Supported by Petrobras project AG-BR, IFSC and UFSC. Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
  • 2.
    Introduction Jacamo-web Demonstration Final remarks Interactiveprogramming Jacamo-web Standard Programming: we stop to apply changes. Interactive Programming: we change while it is running. Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
  • 3.
    Introduction Jacamo-web Demonstration Final remarks Interactiveprogramming Jacamo-web Advantages: Rapid prototyping, debugging and learning; Reduced system development time [2]; Development is done Incrementally. Applications: Unclear problems; Long-term running apps; Running apps possibly performing critical missions; Teaching. Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
  • 4.
    Introduction Jacamo-web Demonstration Final remarks Interactiveprogramming Jacamo-web Based on JaCaMo [1]: A Multi-Agent Oriented Programming (MAOP) platform; Agents developed in Jason; Shared environment programmed in CArtAgO; Coordination of global behaviour developed in MOISE. Provides Read-Eval-Print Loop (REPL) functions [3]; Brings a built-in Java compiler; Provides Web-interface for: create, modify, interact with, and destroy agents, artifacts, and organisations; Free and open source. Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
  • 5.
    Introduction Jacamo-web Demonstration Final remarks Functionalitiesand demonstration Live demonstration Note: See details on: https://github.com/jacamo-lang/ jacamo-web/tree/master/examples/financial-consultants Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
  • 6.
    Introduction Jacamo-web Demonstration Final remarks Functionalitiesand demonstration Create an artifact dynamic.Account, with a property called balance and two operations: debit and credit: package dynamic; import cartago.*; public class Account extends Artifact { void init() { defineObsProperty("balance", 0); } @OPERATION void setBalance(int newBalance) { ObsProperty prop = getObsProperty("balance"); prop.updateValue(newBalance); signal("tick"); } @OPERATION void incBalance() { ObsProperty prop = getObsProperty("balance"); prop.updateValue(prop.intValue()+1); signal("tick"); } } Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
  • 7.
    Introduction Jacamo-web Demonstration Final remarks Functionalitiesand demonstration Create agent bob by command box Note: (i) if bob.asl file does not exist, create it, else load it. (ii) to create from another agent use .create_agent(bob). (iii) agents can be killed opening it and clicking on kill agent Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
  • 8.
    Introduction Jacamo-web Demonstration Final remarks Functionalitiesand demonstration Make artifact Account, create father and give credit to bob. Note: (i) graph allow click to navigate; (ii) It shows current events and intentions. Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
  • 9.
    Introduction Jacamo-web Demonstration Final remarks Functionalitiesand demonstration Modify bob’s plan library to react when balance changes and to say Hi in a loop. Edit again and change it to say Bonjour. Note: (i) intentions that were running are not affected. (ii) initial beliefs and goals are not loaded. Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
  • 10.
    Introduction Jacamo-web Demonstration Final remarks Functionalitiesand demonstration Creating organisation family. bob plays husband and alice plays wife role. createWorkspace(family); joinWorkspace(family,Ofa); o::makeArtifact(family, "ora4mas.nopl.OrgBoard", ["src/org/family.xml"], OrgArtId)[wid(Ofa)]; o::focus(OrgArtId); g::createGroup(familygroup, familygroup, GrArtId); g::focus(GrArtId); Joining the organisation (bob’s command) joinWorkspace(family,Ofa); g::lookupArtifact(familygroup, GrArtId)[wid(Ofa)]; g::focus(GrArtId)[wid(Ofa)]; g::adoptRole(husband)[wid(Ofa)]; Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
  • 11.
    Introduction Jacamo-web Demonstration Final remarks Functionalitiesand demonstration Change organisation’s structure adding new roles: Note: (i) agent can use adoptRole("son"). Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
  • 12.
    Introduction Jacamo-web Demonstration Final remarks Functionalitiesand demonstration Inspect organisations: Note: (i) Graph allows navigation; (ii) show/hide options for groups, schemes and norms. Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
  • 13.
    Introduction Jacamo-web Demonstration Final remarks Functionalitiesand demonstration To demonstrate a bigger system, create agent one and invoke existing plan !launchFinancialAgents. Note: financialagents organisation also has norms and schemes. Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
  • 14.
    Introduction Jacamo-web Demonstration Final remarks Functionalitiesand demonstration Consult directory facilitator: Note: agents may register or deregister using the commands: .df_register(service) or .df_deregister(service). Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
  • 15.
    Introduction Jacamo-web Demonstration Final remarks Conclusionand future Questions? Do it by your own Interactive programming sounds to fit MAOP well considering open and long term running systems; Jacamo-web is bringing useful functions in this direction; We have to move from asl file to direct change the agent itself, including functions to save agent state in case of crash; To enhance artifact interface functions we must allow to change instances directly, maybe creating an interface to add/edit/delete operations and another for properties. Actually java file could not be visible; Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
  • 16.
    Introduction Jacamo-web Demonstration Final remarks Conclusionand future Questions? Do it by your own Questions? Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
  • 17.
    Introduction Jacamo-web Demonstration Final remarks Conclusionand future Questions? Do it by your own Download jacamo-web from github: $ git clone https://github.com/jacamo-lang/jacamo-web Compile javamo-web: $ jacamo-web/gradle build Run this demo: $ jacamo-web/examples/financial-consultants/gradle run Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
  • 18.
    Introduction Jacamo-web Demonstration Final remarks Conclusionand future Questions? Do it by your own Boissier, O., Bordini, R.H., Hübner, J.F., Ricci, A.: Dimensions in programming multi-agent systems. The Knowledge Engineering Review 34, e2 (2019). https://doi.org/10.1017/S026988891800005X Tung, S.H.S.: Interactive modular programming in Scheme. ACM SIGPLAN Lisp Pointers V(1), 86–95 (1992). https://doi.org/10.1145/141478.141512 Wenzel, M.: READ-EVAL-PRINT in Parallel and Asynchronous Proof-checking. Electronic Proceedings in Theoretical Computer Science 118, 57–71 (2013). https://doi.org/10.4204/EPTCS.118.4, http://arxiv.org/abs/1307.1944v1 Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
  • 19.
    Introduction Jacamo-web Demonstration Final remarks Conclusionand future Questions? Do it by your own Appendix Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
  • 20.
    Introduction Jacamo-web Demonstration Final remarks Conclusionand future Questions? Do it by your own Figure: Financial Agents Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID
  • 21.
    Introduction Jacamo-web Demonstration Final remarks Conclusionand future Questions? Do it by your own Agents: myPA: asks for recommendations and answer the user; graham: uses the formula Price < (22.5 ∗ EPS ∗ BVPS); bazin: uses the formula DY >= 0.06 and Debt/EV <= 1; greenblatt: uses the formula EBIT/(MarketCap + NetDebt) < 0.1. Organisation: financialteam Group: 1..100 assistant and 1..100 consultant, assistant communicate with consultant. financialtsch Scheme: mAssistant ask for opportunities, mConsultant focus on the artifact. Environment: fundamentus Artifacts: placed in financialagents Workspace, capable to parse a web-site retrieving financial data about assets. Amaral C.J. and Hübner, J.F. Jacamo-web is on the fly: an interactive MultiAgent System ID