{"id":37633235,"url":"https://github.com/parantapa/sim2apl","last_synced_at":"2026-01-16T11:00:22.559Z","repository":{"id":39951418,"uuid":"217897310","full_name":"parantapa/sim2apl","owner":"parantapa","description":null,"archived":false,"fork":false,"pushed_at":"2022-05-20T21:14:51.000Z","size":180,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-03-15T08:45:29.673Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/parantapa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-10-27T18:23:20.000Z","updated_at":"2020-02-06T17:32:52.000Z","dependencies_parsed_at":"2022-09-15T15:02:24.282Z","dependency_job_id":null,"html_url":"https://github.com/parantapa/sim2apl","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/parantapa/sim2apl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parantapa%2Fsim2apl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parantapa%2Fsim2apl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parantapa%2Fsim2apl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parantapa%2Fsim2apl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/parantapa","download_url":"https://codeload.github.com/parantapa/sim2apl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parantapa%2Fsim2apl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478106,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-16T11:00:16.462Z","updated_at":"2026-01-16T11:00:22.527Z","avatar_url":"https://github.com/parantapa.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"A 2APL Java library for step-based simulations\n\nThis library allows you to program cogntive / BDI agents to use in (social) simulation environments. With this version of 2APL, agents are synchronized through ticks, and perform one deliberation cycle (sense-reason-act) per tick. Where the default 2APL allows agents to perform actions in the environment directly, Sim2APl requires agents to produce action references. The actions should be effected in the environment after a tick has executed in a deterministic manner. All this together allows running reproducible, deterministic simulations using complex BDI agents.\n\n### Defaults\nBy default, agents are initiated through a `Platform`. The platform is the central class through which agents can be instantiated, changed, or removed.\n\nThe agents are scheduled and executed through a `TickExecutor`, which ensures all agents scheduled to perform during a tick receive CPU time and collects all produced actions. The default `TickExecutor` uses a `DefaulThreadPoolExecutor` service to run all agents in parallel during a single tick. \n\nThe `TickExecutor` only performs a tick when an outside event is generated. By default, a `SimulationEngine` can generate these events. The `DefaultSimulationEngine` runs each tick in a blocking manner, and notifies subscribed classes through pre- and post tick hooks of scheduling and results. These hooks can be used by the environment to effect the actions produced by the agents in the environment, before the simulation continues with the next step. \n\nFor the environment to register to these hooks, it should implement the `TickHookProcessor` interface\n\n### Open issues\nThe default messenger is the ACLMessenger, which is able to send messages to other machines through a TCP connection. In the future, messages should be handled by the TickExecutor, as messenges count as an external action. Receiving a message between ticks may influence the outcome of the simulation.\n\n# Installation\nThis library can be used by other Java programs to program 2APL agents and execute them in a synchronized, tick-based mannaer.\n\nTo install, clone the project, and run Maven:\n\n```bash\n$ git clone https://bitbucket.org/goldenagents/sim2apl.git\n$ cd sim2apl\n$ mvn install\n```\n\nThis adds Sim2APL to your local Maven repository. You can now include it as a dependency in your pom.xml, or include the generated Jar under `target` in the included sources of your IDE project.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparantapa%2Fsim2apl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparantapa%2Fsim2apl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparantapa%2Fsim2apl/lists"}