manikandan-n-07 commited on
Commit
77e15e7
Β·
1 Parent(s): 5f30aac

Make the test to work properly

Browse files
.gitignore CHANGED
@@ -28,4 +28,4 @@ wheels/
28
  *.egg-info/
29
  .installed.cfg
30
  *.egg
31
-
 
28
  *.egg-info/
29
  .installed.cfg
30
  *.egg
31
+ test_output.txt
core/graders.py CHANGED
@@ -2,7 +2,7 @@
2
  drone_delivery_env/core/graders.py
3
  Evaluation logic for scoring Drone Delivery missions.
4
  """
5
- from models import DroneState
6
 
7
 
8
  def compute_grade(state: DroneState, max_steps: float) -> float:
 
2
  drone_delivery_env/core/graders.py
3
  Evaluation logic for scoring Drone Delivery missions.
4
  """
5
+ from drone_env.models import DroneState
6
 
7
 
8
  def compute_grade(state: DroneState, max_steps: float) -> float:
core/state_manager.py CHANGED
@@ -4,7 +4,7 @@ Handles initialization and management of the DroneState.
4
  """
5
  import uuid
6
  from typing import List, Tuple
7
- from models import DroneState
8
 
9
 
10
  def new_episode_state(
 
4
  """
5
  import uuid
6
  from typing import List, Tuple
7
+ from drone_env.models import DroneState
8
 
9
 
10
  def new_episode_state(
data/memory.json CHANGED
@@ -18598,5 +18598,1091 @@
18598
  "deliveries_done": 0,
18599
  "total_reward": -4.5,
18600
  "total_steps": 60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18601
  }
18602
  ]
 
18598
  "deliveries_done": 0,
18599
  "total_reward": -4.5,
18600
  "total_steps": 60
18601
+ },
18602
+ {
18603
+ "task": "easy_delivery",
18604
+ "steps": [
18605
+ {
18606
+ "step": 1,
18607
+ "x": 8,
18608
+ "y": 4,
18609
+ "action": "UP",
18610
+ "reward": -0.05,
18611
+ "battery": 0.9833
18612
+ },
18613
+ {
18614
+ "step": 2,
18615
+ "x": 8,
18616
+ "y": 5,
18617
+ "action": "DOWN",
18618
+ "reward": -0.05,
18619
+ "battery": 0.9667
18620
+ },
18621
+ {
18622
+ "step": 3,
18623
+ "x": 7,
18624
+ "y": 5,
18625
+ "action": "LEFT",
18626
+ "reward": -0.05,
18627
+ "battery": 0.95
18628
+ },
18629
+ {
18630
+ "step": 4,
18631
+ "x": 8,
18632
+ "y": 5,
18633
+ "action": "RIGHT",
18634
+ "reward": -0.05,
18635
+ "battery": 0.9333
18636
+ },
18637
+ {
18638
+ "step": 5,
18639
+ "x": 8,
18640
+ "y": 5,
18641
+ "action": "WAIT",
18642
+ "reward": -0.1,
18643
+ "battery": 0.9167
18644
+ }
18645
+ ],
18646
+ "grid_meta": {
18647
+ "width": 10,
18648
+ "height": 10
18649
+ },
18650
+ "delivery_positions": [
18651
+ [
18652
+ 4,
18653
+ 1
18654
+ ]
18655
+ ],
18656
+ "deliveries_done": 0,
18657
+ "total_reward": -0.3,
18658
+ "total_steps": 5
18659
+ },
18660
+ {
18661
+ "task": "easy_delivery",
18662
+ "steps": [
18663
+ {
18664
+ "step": 1,
18665
+ "x": 9,
18666
+ "y": 7,
18667
+ "action": "RIGHT",
18668
+ "reward": -0.05,
18669
+ "battery": 0.9833
18670
+ },
18671
+ {
18672
+ "step": 2,
18673
+ "x": 9,
18674
+ "y": 7,
18675
+ "action": "RIGHT",
18676
+ "reward": -0.25,
18677
+ "battery": 0.9667
18678
+ },
18679
+ {
18680
+ "step": 3,
18681
+ "x": 9,
18682
+ "y": 7,
18683
+ "action": "RIGHT",
18684
+ "reward": -0.25,
18685
+ "battery": 0.95
18686
+ },
18687
+ {
18688
+ "step": 4,
18689
+ "x": 9,
18690
+ "y": 7,
18691
+ "action": "RIGHT",
18692
+ "reward": -0.25,
18693
+ "battery": 0.9333
18694
+ },
18695
+ {
18696
+ "step": 5,
18697
+ "x": 9,
18698
+ "y": 7,
18699
+ "action": "RIGHT",
18700
+ "reward": -0.25,
18701
+ "battery": 0.9167
18702
+ }
18703
+ ],
18704
+ "grid_meta": {
18705
+ "width": 10,
18706
+ "height": 10
18707
+ },
18708
+ "delivery_positions": [
18709
+ [
18710
+ 7,
18711
+ 9
18712
+ ]
18713
+ ],
18714
+ "deliveries_done": 0,
18715
+ "total_reward": -1.05,
18716
+ "total_steps": 5
18717
+ },
18718
+ {
18719
+ "task": "easy_delivery",
18720
+ "steps": [
18721
+ {
18722
+ "step": 1,
18723
+ "x": 3,
18724
+ "y": 8,
18725
+ "action": "UP",
18726
+ "reward": -0.05,
18727
+ "battery": 0.9833
18728
+ },
18729
+ {
18730
+ "step": 2,
18731
+ "x": 4,
18732
+ "y": 8,
18733
+ "action": "RIGHT",
18734
+ "reward": -0.05,
18735
+ "battery": 0.9667
18736
+ },
18737
+ {
18738
+ "step": 3,
18739
+ "x": 4,
18740
+ "y": 9,
18741
+ "action": "DOWN",
18742
+ "reward": -0.05,
18743
+ "battery": 0.95
18744
+ },
18745
+ {
18746
+ "step": 4,
18747
+ "x": 3,
18748
+ "y": 9,
18749
+ "action": "LEFT",
18750
+ "reward": -0.05,
18751
+ "battery": 0.9333
18752
+ },
18753
+ {
18754
+ "step": 5,
18755
+ "x": 3,
18756
+ "y": 9,
18757
+ "action": "WAIT",
18758
+ "reward": -0.1,
18759
+ "battery": 0.9167
18760
+ },
18761
+ {
18762
+ "step": 6,
18763
+ "x": 3,
18764
+ "y": 8,
18765
+ "action": "UP",
18766
+ "reward": -0.05,
18767
+ "battery": 0.9
18768
+ },
18769
+ {
18770
+ "step": 7,
18771
+ "x": 4,
18772
+ "y": 8,
18773
+ "action": "RIGHT",
18774
+ "reward": -0.05,
18775
+ "battery": 0.8833
18776
+ }
18777
+ ],
18778
+ "grid_meta": {
18779
+ "width": 10,
18780
+ "height": 10
18781
+ },
18782
+ "delivery_positions": [
18783
+ [
18784
+ 8,
18785
+ 5
18786
+ ]
18787
+ ],
18788
+ "deliveries_done": 0,
18789
+ "total_reward": -0.4,
18790
+ "total_steps": 7
18791
+ },
18792
+ {
18793
+ "task": "easy_delivery",
18794
+ "steps": [
18795
+ {
18796
+ "step": 1,
18797
+ "x": 1,
18798
+ "y": 6,
18799
+ "action": "WAIT",
18800
+ "reward": -0.1,
18801
+ "battery": 0.9833
18802
+ },
18803
+ {
18804
+ "step": 2,
18805
+ "x": 1,
18806
+ "y": 6,
18807
+ "action": "WAIT",
18808
+ "reward": -0.1,
18809
+ "battery": 0.9667
18810
+ }
18811
+ ],
18812
+ "grid_meta": {
18813
+ "width": 10,
18814
+ "height": 10
18815
+ },
18816
+ "delivery_positions": [
18817
+ [
18818
+ 8,
18819
+ 3
18820
+ ]
18821
+ ],
18822
+ "deliveries_done": 0,
18823
+ "total_reward": -0.2,
18824
+ "total_steps": 2
18825
+ },
18826
+ {
18827
+ "task": "easy_delivery",
18828
+ "steps": [
18829
+ {
18830
+ "step": 1,
18831
+ "x": 5,
18832
+ "y": 8,
18833
+ "action": "DOWN",
18834
+ "reward": -0.05,
18835
+ "battery": 0.9833
18836
+ },
18837
+ {
18838
+ "step": 2,
18839
+ "x": 5,
18840
+ "y": 7,
18841
+ "action": "UP",
18842
+ "reward": -0.05,
18843
+ "battery": 0.9667
18844
+ },
18845
+ {
18846
+ "step": 3,
18847
+ "x": 4,
18848
+ "y": 7,
18849
+ "action": "LEFT",
18850
+ "reward": -0.05,
18851
+ "battery": 0.95
18852
+ },
18853
+ {
18854
+ "step": 4,
18855
+ "x": 3,
18856
+ "y": 7,
18857
+ "action": "LEFT",
18858
+ "reward": -0.05,
18859
+ "battery": 0.9333
18860
+ },
18861
+ {
18862
+ "step": 5,
18863
+ "x": 3,
18864
+ "y": 6,
18865
+ "action": "UP",
18866
+ "reward": -0.05,
18867
+ "battery": 0.9167
18868
+ },
18869
+ {
18870
+ "step": 6,
18871
+ "x": 4,
18872
+ "y": 6,
18873
+ "action": "RIGHT",
18874
+ "reward": -0.05,
18875
+ "battery": 0.9
18876
+ },
18877
+ {
18878
+ "step": 7,
18879
+ "x": 4,
18880
+ "y": 7,
18881
+ "action": "DOWN",
18882
+ "reward": -0.05,
18883
+ "battery": 0.8833
18884
+ },
18885
+ {
18886
+ "step": 8,
18887
+ "x": 3,
18888
+ "y": 7,
18889
+ "action": "LEFT",
18890
+ "reward": -0.05,
18891
+ "battery": 0.8667
18892
+ },
18893
+ {
18894
+ "step": 9,
18895
+ "x": 3,
18896
+ "y": 6,
18897
+ "action": "UP",
18898
+ "reward": -0.05,
18899
+ "battery": 0.85
18900
+ },
18901
+ {
18902
+ "step": 10,
18903
+ "x": 2,
18904
+ "y": 6,
18905
+ "action": "LEFT",
18906
+ "reward": -0.05,
18907
+ "battery": 0.8333
18908
+ },
18909
+ {
18910
+ "step": 11,
18911
+ "x": 2,
18912
+ "y": 7,
18913
+ "action": "DOWN",
18914
+ "reward": -0.05,
18915
+ "battery": 0.8167
18916
+ },
18917
+ {
18918
+ "step": 12,
18919
+ "x": 2,
18920
+ "y": 7,
18921
+ "action": "WAIT",
18922
+ "reward": -0.1,
18923
+ "battery": 0.8
18924
+ },
18925
+ {
18926
+ "step": 13,
18927
+ "x": 2,
18928
+ "y": 7,
18929
+ "action": "WAIT",
18930
+ "reward": -0.1,
18931
+ "battery": 0.7833
18932
+ },
18933
+ {
18934
+ "step": 14,
18935
+ "x": 2,
18936
+ "y": 7,
18937
+ "action": "WAIT",
18938
+ "reward": -0.1,
18939
+ "battery": 0.7667
18940
+ },
18941
+ {
18942
+ "step": 15,
18943
+ "x": 2,
18944
+ "y": 7,
18945
+ "action": "WAIT",
18946
+ "reward": -0.1,
18947
+ "battery": 0.75
18948
+ },
18949
+ {
18950
+ "step": 16,
18951
+ "x": 2,
18952
+ "y": 7,
18953
+ "action": "WAIT",
18954
+ "reward": -0.1,
18955
+ "battery": 0.7333
18956
+ },
18957
+ {
18958
+ "step": 17,
18959
+ "x": 3,
18960
+ "y": 7,
18961
+ "action": "RIGHT",
18962
+ "reward": -0.05,
18963
+ "battery": 0.7167
18964
+ },
18965
+ {
18966
+ "step": 18,
18967
+ "x": 4,
18968
+ "y": 7,
18969
+ "action": "RIGHT",
18970
+ "reward": -0.05,
18971
+ "battery": 0.7
18972
+ },
18973
+ {
18974
+ "step": 19,
18975
+ "x": 4,
18976
+ "y": 8,
18977
+ "action": "DOWN",
18978
+ "reward": -0.05,
18979
+ "battery": 0.6833
18980
+ },
18981
+ {
18982
+ "step": 20,
18983
+ "x": 4,
18984
+ "y": 7,
18985
+ "action": "UP",
18986
+ "reward": -0.05,
18987
+ "battery": 0.6667
18988
+ },
18989
+ {
18990
+ "step": 21,
18991
+ "x": 4,
18992
+ "y": 8,
18993
+ "action": "DOWN",
18994
+ "reward": -0.05,
18995
+ "battery": 0.65
18996
+ },
18997
+ {
18998
+ "step": 22,
18999
+ "x": 5,
19000
+ "y": 8,
19001
+ "action": "RIGHT",
19002
+ "reward": -0.05,
19003
+ "battery": 0.6333
19004
+ },
19005
+ {
19006
+ "step": 23,
19007
+ "x": 5,
19008
+ "y": 7,
19009
+ "action": "UP",
19010
+ "reward": -0.05,
19011
+ "battery": 0.6167
19012
+ },
19013
+ {
19014
+ "step": 24,
19015
+ "x": 5,
19016
+ "y": 8,
19017
+ "action": "DOWN",
19018
+ "reward": -0.05,
19019
+ "battery": 0.6
19020
+ },
19021
+ {
19022
+ "step": 25,
19023
+ "x": 5,
19024
+ "y": 9,
19025
+ "action": "DOWN",
19026
+ "reward": -0.05,
19027
+ "battery": 0.5833
19028
+ },
19029
+ {
19030
+ "step": 26,
19031
+ "x": 4,
19032
+ "y": 9,
19033
+ "action": "LEFT",
19034
+ "reward": -0.05,
19035
+ "battery": 0.5667
19036
+ },
19037
+ {
19038
+ "step": 27,
19039
+ "x": 4,
19040
+ "y": 9,
19041
+ "action": "DOWN",
19042
+ "reward": -0.25,
19043
+ "battery": 0.55
19044
+ },
19045
+ {
19046
+ "step": 28,
19047
+ "x": 5,
19048
+ "y": 9,
19049
+ "action": "RIGHT",
19050
+ "reward": -0.05,
19051
+ "battery": 0.5333
19052
+ },
19053
+ {
19054
+ "step": 29,
19055
+ "x": 5,
19056
+ "y": 9,
19057
+ "action": "DOWN",
19058
+ "reward": -0.25,
19059
+ "battery": 0.5167
19060
+ },
19061
+ {
19062
+ "step": 30,
19063
+ "x": 5,
19064
+ "y": 9,
19065
+ "action": "DOWN",
19066
+ "reward": -0.25,
19067
+ "battery": 0.5
19068
+ },
19069
+ {
19070
+ "step": 31,
19071
+ "x": 6,
19072
+ "y": 9,
19073
+ "action": "RIGHT",
19074
+ "reward": 0.95,
19075
+ "battery": 0.4833
19076
+ }
19077
+ ],
19078
+ "grid_meta": {
19079
+ "width": 10,
19080
+ "height": 10
19081
+ },
19082
+ "delivery_positions": [
19083
+ [
19084
+ 6,
19085
+ 9
19086
+ ]
19087
+ ],
19088
+ "deliveries_done": 1,
19089
+ "total_reward": -1.4,
19090
+ "total_steps": 31
19091
+ },
19092
+ {
19093
+ "task": "easy_delivery",
19094
+ "steps": [
19095
+ {
19096
+ "step": 1,
19097
+ "x": 5,
19098
+ "y": 7,
19099
+ "action": "UP",
19100
+ "reward": -0.1,
19101
+ "battery": 0.9833
19102
+ },
19103
+ {
19104
+ "step": 2,
19105
+ "x": 5,
19106
+ "y": 8,
19107
+ "action": "DOWN",
19108
+ "reward": -0.05,
19109
+ "battery": 0.9667
19110
+ },
19111
+ {
19112
+ "step": 3,
19113
+ "x": 4,
19114
+ "y": 8,
19115
+ "action": "LEFT",
19116
+ "reward": -0.05,
19117
+ "battery": 0.95
19118
+ },
19119
+ {
19120
+ "step": 4,
19121
+ "x": 5,
19122
+ "y": 8,
19123
+ "action": "RIGHT",
19124
+ "reward": -0.05,
19125
+ "battery": 0.9333
19126
+ },
19127
+ {
19128
+ "step": 5,
19129
+ "x": 5,
19130
+ "y": 8,
19131
+ "action": "WAIT",
19132
+ "reward": -0.1,
19133
+ "battery": 0.9167
19134
+ }
19135
+ ],
19136
+ "grid_meta": {
19137
+ "width": 10,
19138
+ "height": 10
19139
+ },
19140
+ "delivery_positions": [
19141
+ [
19142
+ 1,
19143
+ 4
19144
+ ]
19145
+ ],
19146
+ "deliveries_done": 0,
19147
+ "total_reward": -0.35,
19148
+ "total_steps": 5
19149
+ },
19150
+ {
19151
+ "task": "easy_delivery",
19152
+ "steps": [
19153
+ {
19154
+ "step": 1,
19155
+ "x": 3,
19156
+ "y": 1,
19157
+ "action": "RIGHT",
19158
+ "reward": -0.05,
19159
+ "battery": 0.9833
19160
+ },
19161
+ {
19162
+ "step": 2,
19163
+ "x": 4,
19164
+ "y": 1,
19165
+ "action": "RIGHT",
19166
+ "reward": -0.05,
19167
+ "battery": 0.9667
19168
+ },
19169
+ {
19170
+ "step": 3,
19171
+ "x": 5,
19172
+ "y": 1,
19173
+ "action": "RIGHT",
19174
+ "reward": -0.05,
19175
+ "battery": 0.95
19176
+ },
19177
+ {
19178
+ "step": 4,
19179
+ "x": 6,
19180
+ "y": 1,
19181
+ "action": "RIGHT",
19182
+ "reward": -0.05,
19183
+ "battery": 0.9333
19184
+ },
19185
+ {
19186
+ "step": 5,
19187
+ "x": 7,
19188
+ "y": 1,
19189
+ "action": "RIGHT",
19190
+ "reward": -0.05,
19191
+ "battery": 0.9167
19192
+ }
19193
+ ],
19194
+ "grid_meta": {
19195
+ "width": 10,
19196
+ "height": 10
19197
+ },
19198
+ "delivery_positions": [
19199
+ [
19200
+ 8,
19201
+ 9
19202
+ ]
19203
+ ],
19204
+ "deliveries_done": 0,
19205
+ "total_reward": -0.25,
19206
+ "total_steps": 5
19207
+ },
19208
+ {
19209
+ "task": "easy_delivery",
19210
+ "steps": [
19211
+ {
19212
+ "step": 1,
19213
+ "x": 3,
19214
+ "y": 2,
19215
+ "action": "UP",
19216
+ "reward": -0.05,
19217
+ "battery": 0.9833
19218
+ },
19219
+ {
19220
+ "step": 2,
19221
+ "x": 4,
19222
+ "y": 2,
19223
+ "action": "RIGHT",
19224
+ "reward": -0.1,
19225
+ "battery": 0.9667
19226
+ },
19227
+ {
19228
+ "step": 3,
19229
+ "x": 4,
19230
+ "y": 3,
19231
+ "action": "DOWN",
19232
+ "reward": -0.05,
19233
+ "battery": 0.95
19234
+ },
19235
+ {
19236
+ "step": 4,
19237
+ "x": 3,
19238
+ "y": 3,
19239
+ "action": "LEFT",
19240
+ "reward": -0.05,
19241
+ "battery": 0.9333
19242
+ },
19243
+ {
19244
+ "step": 5,
19245
+ "x": 3,
19246
+ "y": 3,
19247
+ "action": "WAIT",
19248
+ "reward": -0.1,
19249
+ "battery": 0.9167
19250
+ },
19251
+ {
19252
+ "step": 6,
19253
+ "x": 3,
19254
+ "y": 2,
19255
+ "action": "UP",
19256
+ "reward": -0.05,
19257
+ "battery": 0.9
19258
+ },
19259
+ {
19260
+ "step": 7,
19261
+ "x": 4,
19262
+ "y": 2,
19263
+ "action": "RIGHT",
19264
+ "reward": -0.1,
19265
+ "battery": 0.8833
19266
+ }
19267
+ ],
19268
+ "grid_meta": {
19269
+ "width": 10,
19270
+ "height": 10
19271
+ },
19272
+ "delivery_positions": [
19273
+ [
19274
+ 4,
19275
+ 5
19276
+ ]
19277
+ ],
19278
+ "deliveries_done": 0,
19279
+ "total_reward": -0.5,
19280
+ "total_steps": 7
19281
+ },
19282
+ {
19283
+ "task": "easy_delivery",
19284
+ "steps": [
19285
+ {
19286
+ "step": 1,
19287
+ "x": 4,
19288
+ "y": 4,
19289
+ "action": "WAIT",
19290
+ "reward": -0.1,
19291
+ "battery": 0.9833
19292
+ },
19293
+ {
19294
+ "step": 2,
19295
+ "x": 4,
19296
+ "y": 4,
19297
+ "action": "WAIT",
19298
+ "reward": -0.1,
19299
+ "battery": 0.9667
19300
+ }
19301
+ ],
19302
+ "grid_meta": {
19303
+ "width": 10,
19304
+ "height": 10
19305
+ },
19306
+ "delivery_positions": [
19307
+ [
19308
+ 6,
19309
+ 4
19310
+ ]
19311
+ ],
19312
+ "deliveries_done": 0,
19313
+ "total_reward": -0.2,
19314
+ "total_steps": 2
19315
+ },
19316
+ {
19317
+ "task": "easy_delivery",
19318
+ "steps": [
19319
+ {
19320
+ "step": 1,
19321
+ "x": 6,
19322
+ "y": 1,
19323
+ "action": "WAIT",
19324
+ "reward": -0.1,
19325
+ "battery": 0.9833
19326
+ },
19327
+ {
19328
+ "step": 2,
19329
+ "x": 6,
19330
+ "y": 0,
19331
+ "action": "UP",
19332
+ "reward": -0.05,
19333
+ "battery": 0.9667
19334
+ },
19335
+ {
19336
+ "step": 3,
19337
+ "x": 6,
19338
+ "y": 0,
19339
+ "action": "WAIT",
19340
+ "reward": -0.1,
19341
+ "battery": 0.95
19342
+ },
19343
+ {
19344
+ "step": 4,
19345
+ "x": 6,
19346
+ "y": 0,
19347
+ "action": "WAIT",
19348
+ "reward": -0.1,
19349
+ "battery": 0.9333
19350
+ },
19351
+ {
19352
+ "step": 5,
19353
+ "x": 6,
19354
+ "y": 0,
19355
+ "action": "UP",
19356
+ "reward": -0.25,
19357
+ "battery": 0.9167
19358
+ },
19359
+ {
19360
+ "step": 6,
19361
+ "x": 6,
19362
+ "y": 0,
19363
+ "action": "UP",
19364
+ "reward": -0.25,
19365
+ "battery": 0.9
19366
+ },
19367
+ {
19368
+ "step": 7,
19369
+ "x": 6,
19370
+ "y": 0,
19371
+ "action": "WAIT",
19372
+ "reward": -0.1,
19373
+ "battery": 0.8833
19374
+ },
19375
+ {
19376
+ "step": 8,
19377
+ "x": 6,
19378
+ "y": 1,
19379
+ "action": "DOWN",
19380
+ "reward": -0.05,
19381
+ "battery": 0.8667
19382
+ },
19383
+ {
19384
+ "step": 9,
19385
+ "x": 6,
19386
+ "y": 1,
19387
+ "action": "WAIT",
19388
+ "reward": -0.1,
19389
+ "battery": 0.85
19390
+ },
19391
+ {
19392
+ "step": 10,
19393
+ "x": 6,
19394
+ "y": 0,
19395
+ "action": "UP",
19396
+ "reward": -0.05,
19397
+ "battery": 0.8333
19398
+ },
19399
+ {
19400
+ "step": 11,
19401
+ "x": 7,
19402
+ "y": 0,
19403
+ "action": "RIGHT",
19404
+ "reward": -0.05,
19405
+ "battery": 0.8167
19406
+ },
19407
+ {
19408
+ "step": 12,
19409
+ "x": 8,
19410
+ "y": 0,
19411
+ "action": "RIGHT",
19412
+ "reward": -0.05,
19413
+ "battery": 0.8
19414
+ },
19415
+ {
19416
+ "step": 13,
19417
+ "x": 9,
19418
+ "y": 0,
19419
+ "action": "RIGHT",
19420
+ "reward": -0.05,
19421
+ "battery": 0.7833
19422
+ },
19423
+ {
19424
+ "step": 14,
19425
+ "x": 9,
19426
+ "y": 1,
19427
+ "action": "DOWN",
19428
+ "reward": -0.05,
19429
+ "battery": 0.7667
19430
+ },
19431
+ {
19432
+ "step": 15,
19433
+ "x": 9,
19434
+ "y": 2,
19435
+ "action": "DOWN",
19436
+ "reward": -0.05,
19437
+ "battery": 0.75
19438
+ },
19439
+ {
19440
+ "step": 16,
19441
+ "x": 9,
19442
+ "y": 1,
19443
+ "action": "UP",
19444
+ "reward": -0.05,
19445
+ "battery": 0.7333
19446
+ },
19447
+ {
19448
+ "step": 17,
19449
+ "x": 9,
19450
+ "y": 2,
19451
+ "action": "DOWN",
19452
+ "reward": -0.05,
19453
+ "battery": 0.7167
19454
+ },
19455
+ {
19456
+ "step": 18,
19457
+ "x": 9,
19458
+ "y": 2,
19459
+ "action": "WAIT",
19460
+ "reward": -0.1,
19461
+ "battery": 0.7
19462
+ },
19463
+ {
19464
+ "step": 19,
19465
+ "x": 9,
19466
+ "y": 2,
19467
+ "action": "WAIT",
19468
+ "reward": -0.1,
19469
+ "battery": 0.6833
19470
+ },
19471
+ {
19472
+ "step": 20,
19473
+ "x": 8,
19474
+ "y": 2,
19475
+ "action": "LEFT",
19476
+ "reward": -0.05,
19477
+ "battery": 0.6667
19478
+ },
19479
+ {
19480
+ "step": 21,
19481
+ "x": 8,
19482
+ "y": 2,
19483
+ "action": "WAIT",
19484
+ "reward": -0.1,
19485
+ "battery": 0.65
19486
+ },
19487
+ {
19488
+ "step": 22,
19489
+ "x": 7,
19490
+ "y": 2,
19491
+ "action": "LEFT",
19492
+ "reward": -0.1,
19493
+ "battery": 0.6333
19494
+ },
19495
+ {
19496
+ "step": 23,
19497
+ "x": 6,
19498
+ "y": 2,
19499
+ "action": "LEFT",
19500
+ "reward": -0.05,
19501
+ "battery": 0.6167
19502
+ },
19503
+ {
19504
+ "step": 24,
19505
+ "x": 6,
19506
+ "y": 3,
19507
+ "action": "DOWN",
19508
+ "reward": -0.05,
19509
+ "battery": 0.6
19510
+ },
19511
+ {
19512
+ "step": 25,
19513
+ "x": 6,
19514
+ "y": 2,
19515
+ "action": "UP",
19516
+ "reward": -0.05,
19517
+ "battery": 0.5833
19518
+ },
19519
+ {
19520
+ "step": 26,
19521
+ "x": 5,
19522
+ "y": 2,
19523
+ "action": "LEFT",
19524
+ "reward": -0.05,
19525
+ "battery": 0.5667
19526
+ },
19527
+ {
19528
+ "step": 27,
19529
+ "x": 5,
19530
+ "y": 2,
19531
+ "action": "WAIT",
19532
+ "reward": -0.1,
19533
+ "battery": 0.55
19534
+ },
19535
+ {
19536
+ "step": 28,
19537
+ "x": 5,
19538
+ "y": 2,
19539
+ "action": "WAIT",
19540
+ "reward": -0.1,
19541
+ "battery": 0.5333
19542
+ },
19543
+ {
19544
+ "step": 29,
19545
+ "x": 5,
19546
+ "y": 2,
19547
+ "action": "WAIT",
19548
+ "reward": -0.1,
19549
+ "battery": 0.5167
19550
+ },
19551
+ {
19552
+ "step": 30,
19553
+ "x": 6,
19554
+ "y": 2,
19555
+ "action": "RIGHT",
19556
+ "reward": -0.05,
19557
+ "battery": 0.5
19558
+ },
19559
+ {
19560
+ "step": 31,
19561
+ "x": 6,
19562
+ "y": 3,
19563
+ "action": "DOWN",
19564
+ "reward": -0.05,
19565
+ "battery": 0.4833
19566
+ },
19567
+ {
19568
+ "step": 32,
19569
+ "x": 7,
19570
+ "y": 3,
19571
+ "action": "RIGHT",
19572
+ "reward": -0.05,
19573
+ "battery": 0.4667
19574
+ },
19575
+ {
19576
+ "step": 33,
19577
+ "x": 7,
19578
+ "y": 4,
19579
+ "action": "DOWN",
19580
+ "reward": -0.1,
19581
+ "battery": 0.45
19582
+ },
19583
+ {
19584
+ "step": 34,
19585
+ "x": 7,
19586
+ "y": 4,
19587
+ "action": "WAIT",
19588
+ "reward": -0.1,
19589
+ "battery": 0.4333
19590
+ },
19591
+ {
19592
+ "step": 35,
19593
+ "x": 6,
19594
+ "y": 4,
19595
+ "action": "LEFT",
19596
+ "reward": -0.05,
19597
+ "battery": 0.4167
19598
+ },
19599
+ {
19600
+ "step": 36,
19601
+ "x": 6,
19602
+ "y": 3,
19603
+ "action": "UP",
19604
+ "reward": -0.05,
19605
+ "battery": 0.4
19606
+ },
19607
+ {
19608
+ "step": 37,
19609
+ "x": 5,
19610
+ "y": 3,
19611
+ "action": "LEFT",
19612
+ "reward": -0.05,
19613
+ "battery": 0.3833
19614
+ },
19615
+ {
19616
+ "step": 38,
19617
+ "x": 5,
19618
+ "y": 4,
19619
+ "action": "DOWN",
19620
+ "reward": 0.95,
19621
+ "battery": 0.3667
19622
+ }
19623
+ ],
19624
+ "grid_meta": {
19625
+ "width": 10,
19626
+ "height": 10
19627
+ },
19628
+ "delivery_positions": [
19629
+ [
19630
+ 5,
19631
+ 4
19632
+ ]
19633
+ ],
19634
+ "deliveries_done": 1,
19635
+ "total_reward": -2.0,
19636
+ "total_steps": 38
19637
+ },
19638
+ {
19639
+ "task": "easy_delivery",
19640
+ "steps": [
19641
+ {
19642
+ "step": 1,
19643
+ "x": 7,
19644
+ "y": 7,
19645
+ "action": "LEFT",
19646
+ "reward": -0.05,
19647
+ "battery": 0.9833
19648
+ },
19649
+ {
19650
+ "step": 2,
19651
+ "x": 6,
19652
+ "y": 7,
19653
+ "action": "LEFT",
19654
+ "reward": -0.1,
19655
+ "battery": 0.9667
19656
+ },
19657
+ {
19658
+ "step": 3,
19659
+ "x": 6,
19660
+ "y": 6,
19661
+ "action": "UP",
19662
+ "reward": -0.05,
19663
+ "battery": 0.95
19664
+ },
19665
+ {
19666
+ "step": 4,
19667
+ "x": 5,
19668
+ "y": 6,
19669
+ "action": "LEFT",
19670
+ "reward": 0.95,
19671
+ "battery": 0.9333
19672
+ }
19673
+ ],
19674
+ "grid_meta": {
19675
+ "width": 10,
19676
+ "height": 10
19677
+ },
19678
+ "delivery_positions": [
19679
+ [
19680
+ 5,
19681
+ 6
19682
+ ]
19683
+ ],
19684
+ "deliveries_done": 1,
19685
+ "total_reward": 0.75,
19686
+ "total_steps": 4
19687
  }
19688
  ]
inference.py CHANGED
@@ -25,8 +25,8 @@ def load_dotenv(path: Path):
25
  load_dotenv(ROOT_DIR / ".env")
26
 
27
  from openai import OpenAI
28
- from server.grid_world_environment import DroneDeliveryEnvironment
29
- from models import DroneAction
30
 
31
  # MANDATORY Environment Variables
32
  # Determine the best API key and base URL combination
 
25
  load_dotenv(ROOT_DIR / ".env")
26
 
27
  from openai import OpenAI
28
+ from drone_env.server.grid_world_environment import DroneDeliveryEnvironment
29
+ from drone_env.models import DroneAction
30
 
31
  # MANDATORY Environment Variables
32
  # Determine the best API key and base URL combination
rl/policy.py CHANGED
@@ -5,7 +5,7 @@ Epsilon-greedy policy for exploration during training.
5
  from __future__ import annotations
6
  import random
7
  import torch
8
- from rl.model import PathQNet, ACTIONS
9
 
10
 
11
  class EpsilonGreedyPolicy:
 
5
  from __future__ import annotations
6
  import random
7
  import torch
8
+ from drone_env.rl.model import PathQNet, ACTIONS
9
 
10
 
11
  class EpsilonGreedyPolicy:
server/app.py CHANGED
@@ -23,11 +23,11 @@ if str(BASE_DIR) not in sys.path:
23
  sys.path.insert(0, str(BASE_DIR))
24
 
25
  # Unified Imports - Root-relative
26
- from models import DroneAction, DroneObservation, DroneState
27
- from server.grid_world_environment import DroneDeliveryEnvironment
28
- from core.tasks import TASK_CONFIG
29
- from core.graders import GRADERS
30
- from rl.trainer import PathLearner, get_action_from_policy
31
 
32
  app = FastAPI(
33
  title="Drone Delivery OpenEnv",
 
23
  sys.path.insert(0, str(BASE_DIR))
24
 
25
  # Unified Imports - Root-relative
26
+ from drone_env.models import DroneAction, DroneObservation, DroneState
27
+ from drone_env.server.grid_world_environment import DroneDeliveryEnvironment
28
+ from drone_env.core.tasks import TASK_CONFIG
29
+ from drone_env.core.graders import GRADERS
30
+ from drone_env.rl.trainer import PathLearner, get_action_from_policy
31
 
32
  app = FastAPI(
33
  title="Drone Delivery OpenEnv",
server/drone_env_environment.py CHANGED
@@ -6,13 +6,13 @@ from openenv.core.env_server.interfaces import Environment
6
  from openenv.core.env_server.types import State
7
 
8
  try:
9
- from ..models import DroneAction, DroneObservation
10
  except ImportError:
11
  from models import DroneAction, DroneObservation
12
 
13
  # Import map generator
14
  try:
15
- from .map_generator import generate_grid
16
  except ImportError:
17
  from map_generator import generate_grid
18
 
 
6
  from openenv.core.env_server.types import State
7
 
8
  try:
9
+ from drone_env.models import DroneAction, DroneObservation
10
  except ImportError:
11
  from models import DroneAction, DroneObservation
12
 
13
  # Import map generator
14
  try:
15
+ from drone_env.server.map_generator import generate_grid
16
  except ImportError:
17
  from map_generator import generate_grid
18
 
server/grid_world_environment.py CHANGED
@@ -18,14 +18,14 @@ except ImportError:
18
  @property
19
  def state(self): raise NotImplementedError
20
 
21
- from models import DroneAction, DroneObservation, DroneState
22
- from core.grid_generator import generate_city_map, EMOJI, LEGEND
23
- from core.tasks import TASK_CONFIG
24
- from core.drone import compute_next_pos, drain_battery
25
- from core.obstacles import check_move
26
- from core.state_manager import new_episode_state
27
- from core.graders import GRADERS
28
- from rl.trainer import record_episode
29
 
30
 
31
  class DroneDeliveryEnvironment(Environment):
 
18
  @property
19
  def state(self): raise NotImplementedError
20
 
21
+ from drone_env.models import DroneAction, DroneObservation, DroneState
22
+ from drone_env.core.grid_generator import generate_city_map, EMOJI, LEGEND
23
+ from drone_env.core.tasks import TASK_CONFIG
24
+ from drone_env.core.drone import compute_next_pos, drain_battery
25
+ from drone_env.core.obstacles import check_move
26
+ from drone_env.core.state_manager import new_episode_state
27
+ from drone_env.core.graders import GRADERS
28
+ from drone_env.rl.trainer import record_episode
29
 
30
 
31
  class DroneDeliveryEnvironment(Environment):
train.py CHANGED
@@ -19,9 +19,9 @@ ROOT_DIR = Path(__file__).parent
19
  if str(ROOT_DIR) not in sys.path:
20
  sys.path.insert(0, str(ROOT_DIR))
21
 
22
- from rl.model import PathQNet, ACTIONS, ACTION2IDX, CELL2IDX
23
- from server.grid_world_environment import DroneDeliveryEnvironment
24
- from models import DroneAction
25
 
26
  # ── Hyperparameters ───────────────────────────────────────────────────────────
27
  GAMMA = 0.99
 
19
  if str(ROOT_DIR) not in sys.path:
20
  sys.path.insert(0, str(ROOT_DIR))
21
 
22
+ from drone_env.rl.model import PathQNet, ACTIONS, ACTION2IDX, CELL2IDX
23
+ from drone_env.server.grid_world_environment import DroneDeliveryEnvironment
24
+ from drone_env.models import DroneAction
25
 
26
  # ── Hyperparameters ───────────────────────────────────────────────────────────
27
  GAMMA = 0.99