Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/CyberBattleSim
Path: blob/main/notebooks/chainnetwork-optionwrapper.py
597 views
1
# ---
2
# jupyter:
3
# jupytext:
4
# formats: py:percent,ipynb
5
# text_representation:
6
# extension: .py
7
# format_name: percent
8
# format_version: '1.3'
9
# jupytext_version: 1.16.4
10
# kernelspec:
11
# display_name: cybersim
12
# language: python
13
# name: cybersim
14
# ---
15
16
# %% [markdown] magic_args="[markdown]"
17
# Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT License.
18
19
# %%
20
# %%
21
import plotly.io.orca
22
import gymnasium as gym
23
import numpy
24
from typing import cast
25
from cyberbattle._env.cyberbattle_env import CyberBattleEnv
26
27
# %%
28
# %matplotlib inline
29
plotly.io.orca.config.executable = "~/.npm-packages/bin/orca" # type: ignore
30
31
# %%
32
from cyberbattle._env.cyberbattle_env import AttackerGoal
33
from cyberbattle._env.option_wrapper import ContextWrapper, random_options
34
35
# %%
36
rnd = numpy.random.RandomState(13)
37
38
# %%
39
env = cast(CyberBattleEnv, gym.make("CyberBattleChain-v0", size=10, attacker_goal=AttackerGoal(reward=4000)))
40
env = ContextWrapper(env, options=random_options)
41
42
# %%
43
s, _ = env.reset()
44
env.render()
45
46
# %%
47
n = 10
48
49
# %%
50
for t in range(100):
51
s, r, done, _, info = env.step()
52
if r > 0:
53
print(r, done, info["action"])
54
# env.render()
55
if done:
56
if n == 0:
57
break
58
n -= r > 0
59
env.reset()
60
61