Commit Graph

89 Commits

Author SHA1 Message Date
Chris McCarthy
af4e71db9b #915 - Synced with dev to bring in changes from #898 2023-06-09 13:11:14 +01:00
Chris McCarthy
9b4ed1199b Merge remote-tracking branch 'origin/dev' into feature/915_PRI-31_Packaging_Deployment
# Conflicts:
#	tests/conftest.py
#	tests/test_observation_space.py
#	tests/test_reward.py
2023-06-09 10:35:14 +01:00
Christopher McCarthy
647ba2fcc1 Apply suggestions from code review 2023-06-09 09:31:01 +00:00
Sunil Samra
6d502045cb Merged PR 76: 893 - Combine NODE and ACL action spaces into single action space
## Summary
To do this, I have altered `primaite_env` to add the changes from ADSP branch for implementing the `ANY` action space.

It impacts `NODE` and `ACL` action spaces in `primaite_env.py` as all three of them are now discrete action spaces, using dictionary keys to represent different valid actions a node can take on each step.

Previously they were multi-discrete where a single action would look like this `[1,2,1,0]`.

Now an action looks like this, a dictionary entry `{.. 5: [1,2,1,0] ... }` whereby the new action is `5` for example.

It changes the `enums.py` where I added the `ANY` into `ActionType`.

I have also added a package from the ADSP branch agents to add the file utils.py. The file contains functions used by primaite_env.py to decide and check valid actions a node can take and removes the ones which are unnecessary and invalid. This is done for all three types, `NODE`, `ACL` and `ANY`.

## Test process
I have written an unit test in `test_single_action_space.py` which checks the new action space for an `ANY` laydown config has both types of actions in the `action_space` dictionary stored by the environment.

I have written an integration tests to check an agent is carrying out both `NODE` and `ACL` actions in a single episode, where I have hard coded the agent to do two specific things on two different steps.
On one step, I tell the `computer_1` node to turn off one of the nodes and on the other step it creates an ACL rule denying communication between `computer_1` and `switch_1` nodes.

## Checklist
- [X] This PR is linked to a **work item**
- [X] I have performed **self-review** of the code
- [X] I have written **tests** for any new functionality added with this PR
- [X] I have updated the **documentation** if this PR changes or adds functionality
- [X] I have run **pre-commit** checks for code style

Related work items: #893, #1429
2023-06-09 07:28:31 +00:00
Chris McCarthy
de86c85b23 #915 - Refactored documentation and included APi docs, dependencies.
- make files now re-build autosummary and deps file.
- Added typer and platformdirs to deps in pyproject.toml.
- Made root_is_pure = True in setup.py as platform/python specific wheels don't need to be built but the option is there should we need to.
-
Added an e2e test for primaite.main.run func.
2023-06-08 15:57:38 +01:00
Chris McCarthy
1809cbe1f4 #915 - typer==0.9.0 added to pyproject.toml 2023-06-08 08:56:39 +01:00
Chris McCarthy
61bd70a6c9 #915 - Ensured LOG_DIR is created so primaite package can be used to perform setup while still logging using primaite logs. 2023-06-08 08:49:06 +01:00
Chris McCarthy
0795a7b4f8 #915 - Ensured primaite setup is carried out on devops pipelines that install primaite. 2023-06-08 08:39:00 +01:00
Chris McCarthy
02e37e5096 # 915 - Fixed issue in conftest.py where session_path and timestamp_str were not being passed to Primaite.
- Also now logging all test outputs to temp directory.
2023-06-07 22:57:37 +01:00
Chris McCarthy
273876873e #915 - Created app dirs and set as constants in the top-level init.
- renamed _config_values_main to training_config.py and renamed the ConfigValuesMain class to TrainingConfig.
Moved training_config.py to src/primaite/config/training_config.py
- Renamed all training config yaml file keys to make creating an instance of TrainingConfig easier.
Moved action_type and num_steps over to the training config.
- Decoupled the training config and lay down config.
- Refactored main.py so that it can be ran from CLI and can take a training config path and a lay down config path.
- refactored all outputs so that they save to the session dir.
- Added some necessary setup scripts that handle creating app dirs, fronting example config files to the user, fronting demo notebooks to the user, performing clean-up in between installations etc.
- Added functions that attempt to retrieve the file path of users example config files that have been fronted by the primaite setup.
- Added logging config and a getLogger function in the top-level init.
- Refactored all logs entries logged to use a logger using the primaite logging config.
- Added basic typer CLI for doing things like setup, viewing logs, viewing primaite version, running a basic session.
- Updated test to use new features and config structures.
- Began updating docs. More to do here.
2023-06-07 22:40:16 +01:00
SunilSamra
6f3e40e390 893 - removed unnecessary functions from utils.py and changed single_action_space_fixed_blue_actions_main_config.yaml back to GENERIC agentIdentifier after PR comments 2023-06-07 14:39:52 +01:00
SunilSamra
709fbc500e 893 - removed print statements for demonstration 2023-06-07 09:19:30 +01:00
SunilSamra
57b982eea3 Merge remote-tracking branch 'origin/dev' into feature/893-node-acl-into-one-action-space 2023-06-07 09:18:24 +01:00
Marek Wolan
ef3cef530b Merged PR 61: Fix minor logic errors in main script
This PR fixes some minor issues that I found in the main.py script. Namely:

1. The first observation was always all zeroes when using a generic agent. This is because the `update_environment_obs()` method is not called automatically and is only called by `env.reset()`.
2. The config yaml is never closed as the close function of the file reader was only referenced but never called.

Related work items: #1441
2023-06-06 15:02:40 +00:00
SunilSamra
6cc9516744 893 - added new line for assert statements 2023-06-06 15:54:35 +01:00
Marek Wolan
bfd19280d5 Merge remote-tracking branch 'origin/dev' into bugfix/1441-main-py-minor-bugs 2023-06-06 15:50:35 +01:00
SunilSamra
2eff3912fb 893 - added consistent action for test_reward.py 2023-06-06 13:49:22 +01:00
SunilSamra
69c5c9458b 893 - 2023-06-06 13:47:07 +01:00
SunilSamra
af44b99b6f Merge remote-tracking branch 'origin/dev' into feature/893-node-acl-into-one-action-space 2023-06-06 13:46:01 +01:00
Marek Wolan
a987ffb745 Merged PR 62: Make reward calculation consider red POL
Check out the linked bug ticket to understand the issue.

The fix was very simple- just changing which variable is passed to the reward calculation funciton.

Related work items: #1442
2023-06-06 12:27:55 +00:00
SunilSamra
babd4eb5f8 893 - changed action in conftest.py back to sample of the environment action space 2023-06-06 13:23:08 +01:00
SunilSamra
d922d4d054 893 - returned config_values in conftest to move run_generic_set_actions into test_single_action_space.py 2023-06-06 13:21:04 +01:00
SunilSamra
940013f9a6 Merge remote-tracking branch 'origin/feature/893-node-acl-into-one-action-space' into feature/893-node-acl-into-one-action-space 2023-06-06 13:12:58 +01:00
SunilSamra
e15c8c8c89 893 - applied changes raised during PR 2023-06-06 13:12:28 +01:00
Sunil Samra
dcab4b0d4a Apply suggestions from code review 2023-06-06 12:07:22 +00:00
SunilSamra
8558ca1020 893 - updated the docs to reflect changes made to action space 2023-06-06 11:57:04 +01:00
SunilSamra
17d036302f Merge remote-tracking branch 'origin/dev' into feature/893-node-acl-into-one-action-space 2023-06-06 11:56:52 +01:00
SunilSamra
49707b0a17 893 - set the action_space to NOTHING so test_reward.py passes and removed unnecessary test print statements 2023-06-06 11:10:38 +01:00
SunilSamra
55f13ae654 893 - added new tests to test action space size and node is completing both sets of actions in a single episode and created new main config 2023-06-06 11:00:41 +01:00
Marek Wolan
cdd710d672 Merge remote-tracking branch 'origin/dev' into bugfix/1442-reward-ignores-red-pol 2023-06-02 14:22:45 +01:00
SunilSamra
2c95087056 893 - added test which shows the new action space has been created when ANY is selected in single_action_space_lay_down_config.yaml 2023-06-02 11:55:31 +01:00
SunilSamra
d854773e84 893 - added ANY to enums.py 2023-06-02 09:51:15 +01:00
SunilSamra
8efa0295df 1443 - added in print test statements 2023-06-01 16:27:25 +01:00
Marek Wolan
c276a31b9c Merged PR 65: Add MultiDiscrete observation spaces
**Summary:**

This adds support for the MultiDiscrete observation spaces, the same as what exists in the ADSP branch. The observation space is now configurable in the same way as the action space- by selecting a config item within the laydown config yaml.
The 'box' option has the same behaviour as before.

**Test Process:**

I added two integration tests to ensure that creating the environment is possible with both types of observation space. I also checked that all existing unit tests run fine as long as I update the observation space in the yaml to box.

**Other comments:**
I also updated the documentation relating to observation spaces, please check if the explanation makes sense.

Related work items: #1463
2023-06-01 11:05:00 +00:00
Marek Wolan
3b0d05e9c9 More info in docstring 2023-06-01 11:02:10 +01:00
Marek Wolan
37d606eda6 Separate obs functions and provide docstrings 2023-06-01 10:57:11 +01:00
Marek Wolan
bfd20b7a6b Type hint init_observations return type 2023-06-01 09:57:33 +01:00
Marek Wolan
a0960555fc Fix docstrings to use ReST format 2023-06-01 09:54:45 +01:00
Marek Wolan
76ec9683cb Improve observation space test 2023-06-01 09:45:46 +01:00
Marek Wolan
4ee77656be Merge remote-tracking branch 'origin/dev' into feature/1463-multidiscrete-observation-option 2023-06-01 09:02:48 +01:00
SunilSamra
81e9ddca9b 1443 - reverted changes made to observation space and added config files for testing 2023-05-31 14:11:15 +01:00
SunilSamra
a8cc50a495 Merge remote-tracking branch 'origin/dev' into feature/893-node-acl-into-one-action-space 2023-05-31 13:28:39 +01:00
SunilSamra
9a231821ea 1443 - added changes from ADSP to observation space in primaite_env.py 2023-05-31 13:15:25 +01:00
Marek Wolan
d8cd96100e Merged PR 66: Add a Pull Request template
I wanted to add this pull request template just as a checklist for everyone to ensure they add tests and update documentation.

Do you think it's necessary? Feel free to discuss in the comments of this PR or accept/reject the suggestion.

Related work items: #1467
2023-05-31 11:55:38 +00:00
Marek Wolan
31b5031808 Merge remote-tracking branch 'origin/dev' into bugfix/1441-main-py-minor-bugs 2023-05-31 11:07:06 +01:00
Marek Wolan
5906ed7e39 Merge remote-tracking branch 'origin/dev' into bugfix/1442-reward-ignores-red-pol 2023-05-31 11:04:00 +01:00
Marek Wolan
c6bb855456 Revert unnecessary main.py change 2023-05-31 09:55:28 +00:00
Marek Wolan
2260cb1668 Revert config changes by removing observations 2023-05-31 10:52:57 +01:00
Marek Wolan
65f2d6202f Add default observation type 2023-05-31 10:51:29 +01:00
Marek Wolan
733025bd53 Merge remote-tracking branch 'origin/dev' into feature/1463-multidiscrete-observation-option 2023-05-31 10:46:18 +01:00