Commit Graph

72 Commits

Author SHA1 Message Date
Marek Wolan
89cea9289b Merge remote-tracking branch 'origin/dev' into feature/1468-observations-class 2023-06-07 14:39:20 +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
Marek Wolan
bfd19280d5 Merge remote-tracking branch 'origin/dev' into bugfix/1441-main-py-minor-bugs 2023-06-06 15:50:35 +01:00
Marek Wolan
c969bc32f5 Merge remote-tracking branch 'origin/dev' into feature/1468-observations-class 2023-06-06 13:40:17 +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
Marek Wolan
cdd710d672 Merge remote-tracking branch 'origin/dev' into bugfix/1442-reward-ignores-red-pol 2023-06-02 14:22:45 +01:00
Marek Wolan
1ee6a37188 Merge remote-tracking branch 'origin/dev' into feature/1468-observations-class 2023-06-02 13:41:49 +01:00
Marek Wolan
9d868c5090 Update docs with configurable obs space info 2023-06-02 13:23:03 +01:00
Marek Wolan
25ec0d93a9 Fix Link Traffic Levels observation encoding 2023-06-02 13:15:38 +01:00
Marek Wolan
2330a30021 Get observation tests passing 2023-06-02 13:08:11 +01:00
Marek Wolan
f37b943f7e Add tests for observations 2023-06-02 12:59:01 +01:00
Marek Wolan
b6ce1cbae9 Edit configs for observation space 2023-06-02 09:10:53 +01:00
Marek Wolan
875562c385 begin updating observations tests 2023-06-01 21:56:05 +01:00
Marek Wolan
85c102cfc1 Update docs page on observations 2023-06-01 21:42:34 +01:00
Marek Wolan
484a31d082 Add docstrings to new observation code 2023-06-01 21:28:38 +01:00
Marek Wolan
c0b214612a Let single-component spaces not use Tuple Spaces 2023-06-01 18:01:47 +01:00
Marek Wolan
3e208bad9b Better Obs default handling 2023-06-01 17:50:18 +01:00
Marek Wolan
7041b79d2a Fix trying to init obs before building network 2023-06-01 17:42:35 +01:00
Marek Wolan
2b25573378 Integrate obs handler with Primaite Env 2023-06-01 16:42:10 +01:00
Marek Wolan
46352ff9c2 Integrate observation handler with components 2023-06-01 13:28:40 +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
c904334c83 Merge branch 'feature/1463-multidiscrete-observation-option' into feature/1468-observations-class 2023-06-01 11:09:21 +01: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
Marek Wolan
6e58c01e8d Start creating observations module 2023-05-31 17:03:53 +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
Sunil Samra
fbb26bbc63 Merged PR 64: 1443-check-reward-function
In reward.py, the comparisons for the IF statements used when assigning config_values reward values currently compares the initial state to the reference state. However, it should be comparing the reference state (What it should be without any blue/red agent interference) and the final state (state after red and blue actions have taken affect).

Change the IF statement logic to say if `reference_node_os_state` and then in the following IF statement if `final_node_os_state` to compare it.
Do this for all reward functions
Write tests to evaluate step rewards

Related work items: #1443
2023-05-31 09:31:01 +00:00
Marek Wolan
5ea77f3e75 Added pull_request_template.md 2023-05-31 09:26:40 +00:00
Sunil Samra
83694fe537 Apply suggestions from code review 2023-05-31 08:09:09 +00:00
Marek Wolan
045e074d0f Update docs on MultiDiscrete observation spaces. 2023-05-30 16:54:34 +01:00
Marek Wolan
6507529db3 Add test for new multidiscrete spaces 2023-05-30 15:48:11 +01:00
Marek Wolan
fa44dd1a26 Update configs and transactions to include new obs 2023-05-30 15:24:13 +01:00
Marek Wolan
0227769c34 Fix observation node shape 2023-05-30 15:16:14 +01:00
Marek Wolan
375e20a67b Configure observation type MULTIDISCRETE 2023-05-30 15:11:41 +01:00
Marek Wolan
2724838cf8 Setup testing scripts 2023-05-30 13:14:43 +01:00
SunilSamra
91dec9e83d 1443 - updated test_reward.py to reflect updates to reward.py so that the correct config values are called i.e. compromisedShouldBeGood on the correct steps during the training run 2023-05-30 11:50:54 +01:00
SunilSamra
0483eeca82 1443 - changed IF statements from if initial ... if reference to if reference ... if final to compare the final state (state after red and blue actions) with the reference state (state with no red or blue action and with green normal network traffic occurring) 2023-05-30 11:40:40 +01:00
Marek Wolan
77a6fd6aff Make reward calculation consider red POL 2023-05-30 08:50:57 +00:00
Marek Wolan
8a24427bf7 Fix minor logic errors in main script 2023-05-26 14:50:15 +01:00
Christopher McCarthy
b255f557db Merged PR 60: #1355 - Carried out full renaming in node.py, active_node.py, passive_node.py...
**The following changes are made to constructor params in the Node class and its children (ActiveNode, PassiveNode, and ServiceNode):**
- _id -> node_id
- _name -> name
- _type -> node_type
- _priority -> priority
- _state -> hardware_state
- _ip_address -> ip_address
- _os_state -> software state
- _file_system_state -> file_system_state
- _config_values -> config_values
- Add type hints to all params.

(node_id, name, and ip_address are str, states and other defines types are the respective enums, leave config_values without a type for now.)

**The following changes are made to instance variables in the Node class and its children:**
- self.type -> self.node_type
- self.operating_state -> self.hardware_state
- self.os_state -> self.software_state
- Add type hints to all instance variables.

(node_id, name, and ip_address are str, states and other defines types are the respective enums, leave config_values without a type for now.)

**The following changes are made to the config files where itemType is NODE:**
- itemType -> item_type
- id -> node_id
- portsList -> ports_list
- serviceList -> service_list
- baseType -> base_type
- nodeType -> node_type
- hardwareState -> hardware_state
- ipAddress -> ip_address
- softwareState -> software_state
- fileSystemState -> file_system_state

**The following changes are made in the primaite/environment/primaite_env.py module:
In the create_node function, the id of the node needs to be retrieved using the new "node_id" key.**
- _id -> node_id
- _name -> name
- _type -> node_type
- _priority -> priority
- _state -> hardware_state
- _ip_address -> ip_address
- _os_state -> software state
- _file_system_state -> file_system_state
- _config_values -> config_values

**Few other cosmetic/code style changes too:**
- Enum classes renamed to use CamelCase.
Started refactoring out unnescessary getters and setters by using `@property` and `@<property name>.setter`.
- Have started to add Type Hints.
- Have started to move docstrings over to the Sphinx ReStructured text format.

Related work items: #1355
2023-05-26 09:01:21 +00:00