比较提交
合并到: unity-tech-cn:main
unity-tech-cn:/main
unity-tech-cn:/develop-generalizationTraining-TrainerController
unity-tech-cn:/tag-0.2.0
unity-tech-cn:/tag-0.2.1
unity-tech-cn:/tag-0.2.1a
unity-tech-cn:/tag-0.2.1c
unity-tech-cn:/tag-0.2.1d
unity-tech-cn:/hotfix-v0.9.2a
unity-tech-cn:/develop-gpu-test
unity-tech-cn:/0.10.1
unity-tech-cn:/develop-pyinstaller
unity-tech-cn:/develop-horovod
unity-tech-cn:/PhysXArticulations20201
unity-tech-cn:/importdocfix
unity-tech-cn:/develop-resizetexture
unity-tech-cn:/hh-develop-walljump_bugfixes
unity-tech-cn:/develop-walljump-fix-sac
unity-tech-cn:/hh-develop-walljump_rnd
unity-tech-cn:/tag-0.11.0.dev0
unity-tech-cn:/develop-pytorch
unity-tech-cn:/tag-0.11.0.dev2
unity-tech-cn:/develop-newnormalization
unity-tech-cn:/tag-0.11.0.dev3
unity-tech-cn:/develop
unity-tech-cn:/release-0.12.0
unity-tech-cn:/tag-0.12.0-dev
unity-tech-cn:/tag-0.12.0.dev0
unity-tech-cn:/tag-0.12.1
unity-tech-cn:/2D-explorations
unity-tech-cn:/asymm-envs
unity-tech-cn:/tag-0.12.1.dev0
unity-tech-cn:/2D-exploration-raycast
unity-tech-cn:/tag-0.12.1.dev1
unity-tech-cn:/release-0.13.0
unity-tech-cn:/release-0.13.1
unity-tech-cn:/plugin-proof-of-concept
unity-tech-cn:/release-0.14.0
unity-tech-cn:/hotfix-bump-version-master
unity-tech-cn:/soccer-fives
unity-tech-cn:/release-0.14.1
unity-tech-cn:/bug-failed-api-check
unity-tech-cn:/test-recurrent-gail
unity-tech-cn:/hh-add-icons
unity-tech-cn:/release-0.15.0
unity-tech-cn:/release-0.15.1
unity-tech-cn:/hh-develop-all-posed-characters
unity-tech-cn:/internal-policy-ghost
unity-tech-cn:/distributed-training
unity-tech-cn:/hh-develop-improve_tennis
unity-tech-cn:/test-tf-ver
unity-tech-cn:/release_1_branch
unity-tech-cn:/tennis-time-horizon
unity-tech-cn:/whitepaper-experiments
unity-tech-cn:/r2v-yamato-linux
unity-tech-cn:/docs-update
unity-tech-cn:/release_2_branch
unity-tech-cn:/exp-mede
unity-tech-cn:/sensitivity
unity-tech-cn:/release_2_verified_load_fix
unity-tech-cn:/test-sampler
unity-tech-cn:/release_2_verified
unity-tech-cn:/hh-develop-ragdoll-testing
unity-tech-cn:/origin-develop-taggedobservations
unity-tech-cn:/MLA-1734-demo-provider
unity-tech-cn:/sampler-refactor-copy
unity-tech-cn:/PhysXArticulations20201Package
unity-tech-cn:/tag-com.unity.ml-agents_1.0.8
unity-tech-cn:/release_3_branch
unity-tech-cn:/github-actions
unity-tech-cn:/release_3_distributed
unity-tech-cn:/fix-batch-tennis
unity-tech-cn:/distributed-ppo-sac
unity-tech-cn:/gridworld-custom-obs
unity-tech-cn:/hw20-segmentation
unity-tech-cn:/hh-develop-gamedev-demo
unity-tech-cn:/active-variablespeed
unity-tech-cn:/release_4_branch
unity-tech-cn:/fix-env-step-loop
unity-tech-cn:/release_5_branch
unity-tech-cn:/fix-walker
unity-tech-cn:/release_6_branch
unity-tech-cn:/hh-32-observation-crawler
unity-tech-cn:/trainer-plugin
unity-tech-cn:/hh-develop-max-steps-demo-recorder
unity-tech-cn:/hh-develop-loco-walker-variable-speed
unity-tech-cn:/exp-0002
unity-tech-cn:/experiment-less-max-step
unity-tech-cn:/hh-develop-hallway-wall-mesh-fix
unity-tech-cn:/release_7_branch
unity-tech-cn:/exp-vince
unity-tech-cn:/hh-develop-gridsensor-tests
unity-tech-cn:/tag-release_8_test0
unity-tech-cn:/tag-release_8_test1
unity-tech-cn:/release_8_branch
unity-tech-cn:/docfix-end-episode
unity-tech-cn:/release_9_branch
unity-tech-cn:/hybrid-action-rewardsignals
unity-tech-cn:/MLA-462-yamato-win
unity-tech-cn:/exp-alternate-atten
unity-tech-cn:/hh-develop-fps_game_project
unity-tech-cn:/fix-conflict-base-env
unity-tech-cn:/release_10_branch
unity-tech-cn:/exp-bullet-hell-trainer
unity-tech-cn:/ai-summit-exp
unity-tech-cn:/comms-grad
unity-tech-cn:/walljump-pushblock
unity-tech-cn:/goal-conditioning
unity-tech-cn:/release_11_branch
unity-tech-cn:/hh-develop-water-balloon-fight
unity-tech-cn:/gc-hyper
unity-tech-cn:/layernorm
unity-tech-cn:/yamato-linux-debug-venv
unity-tech-cn:/soccer-comms
unity-tech-cn:/hh-develop-pushblockcollab
unity-tech-cn:/release_12_branch
unity-tech-cn:/fix-get-step-sp-curr
unity-tech-cn:/continuous-comms
unity-tech-cn:/no-comms
unity-tech-cn:/hh-develop-zombiepushblock
unity-tech-cn:/hypernetwork
unity-tech-cn:/revert-4859-develop-update-readme
unity-tech-cn:/sequencer-env-attention
unity-tech-cn:/hh-develop-variableobs
unity-tech-cn:/exp-tanh
unity-tech-cn:/reward-dist
unity-tech-cn:/exp-weight-decay
unity-tech-cn:/exp-robot
unity-tech-cn:/bullet-hell-barracuda-test-1.3.1
unity-tech-cn:/release_13_branch
unity-tech-cn:/release_14_branch
unity-tech-cn:/exp-clipped-gaussian-entropy
unity-tech-cn:/tic-tac-toe
unity-tech-cn:/hh-develop-dodgeball
unity-tech-cn:/repro-vis-obs-perf
unity-tech-cn:/v2-staging-rebase
unity-tech-cn:/release_15_branch
unity-tech-cn:/release_15_removeendepisode
unity-tech-cn:/release_16_branch
unity-tech-cn:/release_16_fix_gridsensor
unity-tech-cn:/ai-hw-2021
unity-tech-cn:/check-for-ModelOverriders
unity-tech-cn:/fix-grid-obs-shape-init
unity-tech-cn:/fix-gym-needs-reset
unity-tech-cn:/fix-resume-imi
unity-tech-cn:/release_17_branch
unity-tech-cn:/release_17_branch_gpu_test
unity-tech-cn:/colab-links
unity-tech-cn:/exp-continuous-div
unity-tech-cn:/release_17_branch_gpu_2
unity-tech-cn:/exp-diverse-behavior
unity-tech-cn:/grid-onehot-extra-dim-empty
unity-tech-cn:/2.0-verified
unity-tech-cn:/faster-entropy-coeficient-convergence
unity-tech-cn:/pre-r18-update-changelog
unity-tech-cn:/release_18_branch
unity-tech-cn:/main/tracking
unity-tech-cn:/main/reward-providers
unity-tech-cn:/main/project-upgrade
unity-tech-cn:/main/limitation-docs
unity-tech-cn:/develop/nomaxstep-test
unity-tech-cn:/develop/tf2.0
unity-tech-cn:/develop/tanhsquash
unity-tech-cn:/develop/magic-string
unity-tech-cn:/develop/trainerinterface
unity-tech-cn:/develop/separatevalue
unity-tech-cn:/develop/nopreviousactions
unity-tech-cn:/develop/reenablerepeatactions
unity-tech-cn:/develop/0memories
unity-tech-cn:/develop/fixmemoryleak
unity-tech-cn:/develop/reducewalljump
unity-tech-cn:/develop/removeactionholder-onehot
unity-tech-cn:/develop/canonicalize-quaternions
unity-tech-cn:/develop/self-playassym
unity-tech-cn:/develop/demo-load-seek
unity-tech-cn:/develop/progress-bar
unity-tech-cn:/develop/sac-apex
unity-tech-cn:/develop/cubewars
unity-tech-cn:/develop/add-fire
unity-tech-cn:/develop/gym-wrapper
unity-tech-cn:/develop/mm-docs-main-readme
unity-tech-cn:/develop/mm-docs-overview
unity-tech-cn:/develop/no-threading
unity-tech-cn:/develop/dockerfile
unity-tech-cn:/develop/model-store
unity-tech-cn:/develop/checkout-conversion-rebase
unity-tech-cn:/develop/model-transfer
unity-tech-cn:/develop/bisim-review
unity-tech-cn:/develop/taggedobservations
unity-tech-cn:/develop/transfer-bisim
unity-tech-cn:/develop/bisim-sac-transfer
unity-tech-cn:/develop/basketball
unity-tech-cn:/develop/torchmodules
unity-tech-cn:/develop/fixmarkdown
unity-tech-cn:/develop/shortenstrikervsgoalie
unity-tech-cn:/develop/shortengoalie
unity-tech-cn:/develop/torch-save-rp
unity-tech-cn:/develop/torch-to-np
unity-tech-cn:/develop/torch-omp-no-thread
unity-tech-cn:/develop/actionmodel-csharp
unity-tech-cn:/develop/torch-extra
unity-tech-cn:/develop/restructure-torch-networks
unity-tech-cn:/develop/jit
unity-tech-cn:/develop/adjust-cpu-settings-experiment
unity-tech-cn:/develop/torch-sac-threading
unity-tech-cn:/develop/wb
unity-tech-cn:/develop/amrl
unity-tech-cn:/develop/memorydump
unity-tech-cn:/develop/permutepytorch
unity-tech-cn:/develop/sac-targetq
unity-tech-cn:/develop/actions-out
unity-tech-cn:/develop/reshapeonnxmemories
unity-tech-cn:/develop/crawlergail
unity-tech-cn:/develop/debugtorchfood
unity-tech-cn:/develop/hybrid-actions
unity-tech-cn:/develop/bullet-hell
unity-tech-cn:/develop/action-spec-gym
unity-tech-cn:/develop/battlefoodcollector
unity-tech-cn:/develop/use-action-buffers
unity-tech-cn:/develop/hardswish
unity-tech-cn:/develop/leakyrelu
unity-tech-cn:/develop/torch-clip-scale
unity-tech-cn:/develop/contentropy
unity-tech-cn:/develop/manch
unity-tech-cn:/develop/torchcrawlerdebug
unity-tech-cn:/develop/fix-nan
unity-tech-cn:/develop/multitype-buffer
unity-tech-cn:/develop/windows-delay
unity-tech-cn:/develop/torch-tanh
unity-tech-cn:/develop/gail-norm
unity-tech-cn:/develop/multiprocess
unity-tech-cn:/develop/unified-obs
unity-tech-cn:/develop/rm-rf-new-models
unity-tech-cn:/develop/skipcritic
unity-tech-cn:/develop/centralizedcritic
unity-tech-cn:/develop/dodgeball-tests
unity-tech-cn:/develop/cc-teammanager
unity-tech-cn:/develop/weight-decay
unity-tech-cn:/develop/singular-embeddings
unity-tech-cn:/develop/zombieteammanager
unity-tech-cn:/develop/superpush
unity-tech-cn:/develop/teammanager
unity-tech-cn:/develop/zombie-exp
unity-tech-cn:/develop/update-readme
unity-tech-cn:/develop/readme-fix
unity-tech-cn:/develop/coma-noact
unity-tech-cn:/develop/coma-withq
unity-tech-cn:/develop/coma2
unity-tech-cn:/develop/action-slice
unity-tech-cn:/develop/gru
unity-tech-cn:/develop/critic-op-lstm-currentmem
unity-tech-cn:/develop/decaygail
unity-tech-cn:/develop/gail-srl-hack
unity-tech-cn:/develop/rear-pad
unity-tech-cn:/develop/mm-copyright-dates
unity-tech-cn:/develop/dodgeball-raycasts
unity-tech-cn:/develop/collab-envs-exp-ervin
unity-tech-cn:/develop/pushcollabonly
unity-tech-cn:/develop/sample-curation
unity-tech-cn:/develop/soccer-groupman
unity-tech-cn:/develop/input-actuator-tanks
unity-tech-cn:/develop/validate-release-fix
unity-tech-cn:/develop/new-console-log
unity-tech-cn:/develop/lex-walker-model
unity-tech-cn:/develop/lstm-burnin
unity-tech-cn:/develop/grid-vaiable-names
unity-tech-cn:/develop/fix-attn-embedding
unity-tech-cn:/develop/api-documentation-update-some-fixes
unity-tech-cn:/develop/update-grpc
unity-tech-cn:/develop/grid-rootref-debug
unity-tech-cn:/develop/pbcollab-rays
unity-tech-cn:/develop/2.0-verified-pre
unity-tech-cn:/develop/parameterizedenvs
unity-tech-cn:/develop/custom-ray-sensor
unity-tech-cn:/develop/mm-add-v2blog
unity-tech-cn:/develop/custom-raycast
unity-tech-cn:/develop/area-manager
unity-tech-cn:/develop/remove-unecessary-lr
unity-tech-cn:/develop/use-base-env-in-learn
unity-tech-cn:/soccer-fives/multiagent
unity-tech-cn:/develop/cubewars/splashdamage
unity-tech-cn:/develop/add-fire/exp
unity-tech-cn:/develop/add-fire/jit
unity-tech-cn:/develop/add-fire/speedtest
unity-tech-cn:/develop/add-fire/bc
unity-tech-cn:/develop/add-fire/ckpt-2
unity-tech-cn:/develop/add-fire/normalize-context
unity-tech-cn:/develop/add-fire/components-dir
unity-tech-cn:/develop/add-fire/halfentropy
unity-tech-cn:/develop/add-fire/memoryclass
unity-tech-cn:/develop/add-fire/categoricaldist
unity-tech-cn:/develop/add-fire/mm
unity-tech-cn:/develop/add-fire/sac-lst
unity-tech-cn:/develop/add-fire/mm3
unity-tech-cn:/develop/add-fire/continuous
unity-tech-cn:/develop/add-fire/ghost
unity-tech-cn:/develop/add-fire/policy-tests
unity-tech-cn:/develop/add-fire/export-discrete
unity-tech-cn:/develop/add-fire/test-simple-rl-fix-resnet
unity-tech-cn:/develop/add-fire/remove-currdoc
unity-tech-cn:/develop/add-fire/clean2
unity-tech-cn:/develop/add-fire/doc-cleanups
unity-tech-cn:/develop/add-fire/changelog
unity-tech-cn:/develop/add-fire/mm2
unity-tech-cn:/develop/model-transfer/add-physics
unity-tech-cn:/develop/model-transfer/train
unity-tech-cn:/develop/jit/experiments
unity-tech-cn:/exp-vince/sep30-2020
unity-tech-cn:/hh-develop-gridsensor-tests/static
unity-tech-cn:/develop/hybrid-actions/distlist
unity-tech-cn:/develop/bullet-hell/buffer
unity-tech-cn:/goal-conditioning/new
unity-tech-cn:/goal-conditioning/sensors-2
unity-tech-cn:/goal-conditioning/sensors-3-pytest-fix
unity-tech-cn:/goal-conditioning/grid-world
unity-tech-cn:/soccer-comms/disc
unity-tech-cn:/develop/centralizedcritic/counterfact
unity-tech-cn:/develop/centralizedcritic/mm
unity-tech-cn:/develop/centralizedcritic/nonego
unity-tech-cn:/develop/zombieteammanager/disableagent
unity-tech-cn:/develop/zombieteammanager/killfirst
unity-tech-cn:/develop/superpush/int
unity-tech-cn:/develop/superpush/branch-cleanup
unity-tech-cn:/develop/teammanager/int
unity-tech-cn:/develop/teammanager/cubewar-nocycle
unity-tech-cn:/develop/teammanager/cubewars
unity-tech-cn:/develop/superpush/int/hunter
unity-tech-cn:/goal-conditioning/new/allo-crawler
unity-tech-cn:/develop/coma2/clip
unity-tech-cn:/develop/coma2/singlenetwork
unity-tech-cn:/develop/coma2/samenet
unity-tech-cn:/develop/coma2/fixgroup
unity-tech-cn:/develop/coma2/samenet/sum
unity-tech-cn:/hh-develop-dodgeball/goy-input
unity-tech-cn:/develop/soccer-groupman/mod
unity-tech-cn:/develop/soccer-groupman/mod/hunter
unity-tech-cn:/develop/soccer-groupman/mod/hunter/cine
unity-tech-cn:/ai-hw-2021/tensor-applier
拉取从: unity-tech-cn:active-variablespeed
unity-tech-cn:/main
unity-tech-cn:/develop-generalizationTraining-TrainerController
unity-tech-cn:/tag-0.2.0
unity-tech-cn:/tag-0.2.1
unity-tech-cn:/tag-0.2.1a
unity-tech-cn:/tag-0.2.1c
unity-tech-cn:/tag-0.2.1d
unity-tech-cn:/hotfix-v0.9.2a
unity-tech-cn:/develop-gpu-test
unity-tech-cn:/0.10.1
unity-tech-cn:/develop-pyinstaller
unity-tech-cn:/develop-horovod
unity-tech-cn:/PhysXArticulations20201
unity-tech-cn:/importdocfix
unity-tech-cn:/develop-resizetexture
unity-tech-cn:/hh-develop-walljump_bugfixes
unity-tech-cn:/develop-walljump-fix-sac
unity-tech-cn:/hh-develop-walljump_rnd
unity-tech-cn:/tag-0.11.0.dev0
unity-tech-cn:/develop-pytorch
unity-tech-cn:/tag-0.11.0.dev2
unity-tech-cn:/develop-newnormalization
unity-tech-cn:/tag-0.11.0.dev3
unity-tech-cn:/develop
unity-tech-cn:/release-0.12.0
unity-tech-cn:/tag-0.12.0-dev
unity-tech-cn:/tag-0.12.0.dev0
unity-tech-cn:/tag-0.12.1
unity-tech-cn:/2D-explorations
unity-tech-cn:/asymm-envs
unity-tech-cn:/tag-0.12.1.dev0
unity-tech-cn:/2D-exploration-raycast
unity-tech-cn:/tag-0.12.1.dev1
unity-tech-cn:/release-0.13.0
unity-tech-cn:/release-0.13.1
unity-tech-cn:/plugin-proof-of-concept
unity-tech-cn:/release-0.14.0
unity-tech-cn:/hotfix-bump-version-master
unity-tech-cn:/soccer-fives
unity-tech-cn:/release-0.14.1
unity-tech-cn:/bug-failed-api-check
unity-tech-cn:/test-recurrent-gail
unity-tech-cn:/hh-add-icons
unity-tech-cn:/release-0.15.0
unity-tech-cn:/release-0.15.1
unity-tech-cn:/hh-develop-all-posed-characters
unity-tech-cn:/internal-policy-ghost
unity-tech-cn:/distributed-training
unity-tech-cn:/hh-develop-improve_tennis
unity-tech-cn:/test-tf-ver
unity-tech-cn:/release_1_branch
unity-tech-cn:/tennis-time-horizon
unity-tech-cn:/whitepaper-experiments
unity-tech-cn:/r2v-yamato-linux
unity-tech-cn:/docs-update
unity-tech-cn:/release_2_branch
unity-tech-cn:/exp-mede
unity-tech-cn:/sensitivity
unity-tech-cn:/release_2_verified_load_fix
unity-tech-cn:/test-sampler
unity-tech-cn:/release_2_verified
unity-tech-cn:/hh-develop-ragdoll-testing
unity-tech-cn:/origin-develop-taggedobservations
unity-tech-cn:/MLA-1734-demo-provider
unity-tech-cn:/sampler-refactor-copy
unity-tech-cn:/PhysXArticulations20201Package
unity-tech-cn:/tag-com.unity.ml-agents_1.0.8
unity-tech-cn:/release_3_branch
unity-tech-cn:/github-actions
unity-tech-cn:/release_3_distributed
unity-tech-cn:/fix-batch-tennis
unity-tech-cn:/distributed-ppo-sac
unity-tech-cn:/gridworld-custom-obs
unity-tech-cn:/hw20-segmentation
unity-tech-cn:/hh-develop-gamedev-demo
unity-tech-cn:/active-variablespeed
unity-tech-cn:/release_4_branch
unity-tech-cn:/fix-env-step-loop
unity-tech-cn:/release_5_branch
unity-tech-cn:/fix-walker
unity-tech-cn:/release_6_branch
unity-tech-cn:/hh-32-observation-crawler
unity-tech-cn:/trainer-plugin
unity-tech-cn:/hh-develop-max-steps-demo-recorder
unity-tech-cn:/hh-develop-loco-walker-variable-speed
unity-tech-cn:/exp-0002
unity-tech-cn:/experiment-less-max-step
unity-tech-cn:/hh-develop-hallway-wall-mesh-fix
unity-tech-cn:/release_7_branch
unity-tech-cn:/exp-vince
unity-tech-cn:/hh-develop-gridsensor-tests
unity-tech-cn:/tag-release_8_test0
unity-tech-cn:/tag-release_8_test1
unity-tech-cn:/release_8_branch
unity-tech-cn:/docfix-end-episode
unity-tech-cn:/release_9_branch
unity-tech-cn:/hybrid-action-rewardsignals
unity-tech-cn:/MLA-462-yamato-win
unity-tech-cn:/exp-alternate-atten
unity-tech-cn:/hh-develop-fps_game_project
unity-tech-cn:/fix-conflict-base-env
unity-tech-cn:/release_10_branch
unity-tech-cn:/exp-bullet-hell-trainer
unity-tech-cn:/ai-summit-exp
unity-tech-cn:/comms-grad
unity-tech-cn:/walljump-pushblock
unity-tech-cn:/goal-conditioning
unity-tech-cn:/release_11_branch
unity-tech-cn:/hh-develop-water-balloon-fight
unity-tech-cn:/gc-hyper
unity-tech-cn:/layernorm
unity-tech-cn:/yamato-linux-debug-venv
unity-tech-cn:/soccer-comms
unity-tech-cn:/hh-develop-pushblockcollab
unity-tech-cn:/release_12_branch
unity-tech-cn:/fix-get-step-sp-curr
unity-tech-cn:/continuous-comms
unity-tech-cn:/no-comms
unity-tech-cn:/hh-develop-zombiepushblock
unity-tech-cn:/hypernetwork
unity-tech-cn:/revert-4859-develop-update-readme
unity-tech-cn:/sequencer-env-attention
unity-tech-cn:/hh-develop-variableobs
unity-tech-cn:/exp-tanh
unity-tech-cn:/reward-dist
unity-tech-cn:/exp-weight-decay
unity-tech-cn:/exp-robot
unity-tech-cn:/bullet-hell-barracuda-test-1.3.1
unity-tech-cn:/release_13_branch
unity-tech-cn:/release_14_branch
unity-tech-cn:/exp-clipped-gaussian-entropy
unity-tech-cn:/tic-tac-toe
unity-tech-cn:/hh-develop-dodgeball
unity-tech-cn:/repro-vis-obs-perf
unity-tech-cn:/v2-staging-rebase
unity-tech-cn:/release_15_branch
unity-tech-cn:/release_15_removeendepisode
unity-tech-cn:/release_16_branch
unity-tech-cn:/release_16_fix_gridsensor
unity-tech-cn:/ai-hw-2021
unity-tech-cn:/check-for-ModelOverriders
unity-tech-cn:/fix-grid-obs-shape-init
unity-tech-cn:/fix-gym-needs-reset
unity-tech-cn:/fix-resume-imi
unity-tech-cn:/release_17_branch
unity-tech-cn:/release_17_branch_gpu_test
unity-tech-cn:/colab-links
unity-tech-cn:/exp-continuous-div
unity-tech-cn:/release_17_branch_gpu_2
unity-tech-cn:/exp-diverse-behavior
unity-tech-cn:/grid-onehot-extra-dim-empty
unity-tech-cn:/2.0-verified
unity-tech-cn:/faster-entropy-coeficient-convergence
unity-tech-cn:/pre-r18-update-changelog
unity-tech-cn:/release_18_branch
unity-tech-cn:/main/tracking
unity-tech-cn:/main/reward-providers
unity-tech-cn:/main/project-upgrade
unity-tech-cn:/main/limitation-docs
unity-tech-cn:/develop/nomaxstep-test
unity-tech-cn:/develop/tf2.0
unity-tech-cn:/develop/tanhsquash
unity-tech-cn:/develop/magic-string
unity-tech-cn:/develop/trainerinterface
unity-tech-cn:/develop/separatevalue
unity-tech-cn:/develop/nopreviousactions
unity-tech-cn:/develop/reenablerepeatactions
unity-tech-cn:/develop/0memories
unity-tech-cn:/develop/fixmemoryleak
unity-tech-cn:/develop/reducewalljump
unity-tech-cn:/develop/removeactionholder-onehot
unity-tech-cn:/develop/canonicalize-quaternions
unity-tech-cn:/develop/self-playassym
unity-tech-cn:/develop/demo-load-seek
unity-tech-cn:/develop/progress-bar
unity-tech-cn:/develop/sac-apex
unity-tech-cn:/develop/cubewars
unity-tech-cn:/develop/add-fire
unity-tech-cn:/develop/gym-wrapper
unity-tech-cn:/develop/mm-docs-main-readme
unity-tech-cn:/develop/mm-docs-overview
unity-tech-cn:/develop/no-threading
unity-tech-cn:/develop/dockerfile
unity-tech-cn:/develop/model-store
unity-tech-cn:/develop/checkout-conversion-rebase
unity-tech-cn:/develop/model-transfer
unity-tech-cn:/develop/bisim-review
unity-tech-cn:/develop/taggedobservations
unity-tech-cn:/develop/transfer-bisim
unity-tech-cn:/develop/bisim-sac-transfer
unity-tech-cn:/develop/basketball
unity-tech-cn:/develop/torchmodules
unity-tech-cn:/develop/fixmarkdown
unity-tech-cn:/develop/shortenstrikervsgoalie
unity-tech-cn:/develop/shortengoalie
unity-tech-cn:/develop/torch-save-rp
unity-tech-cn:/develop/torch-to-np
unity-tech-cn:/develop/torch-omp-no-thread
unity-tech-cn:/develop/actionmodel-csharp
unity-tech-cn:/develop/torch-extra
unity-tech-cn:/develop/restructure-torch-networks
unity-tech-cn:/develop/jit
unity-tech-cn:/develop/adjust-cpu-settings-experiment
unity-tech-cn:/develop/torch-sac-threading
unity-tech-cn:/develop/wb
unity-tech-cn:/develop/amrl
unity-tech-cn:/develop/memorydump
unity-tech-cn:/develop/permutepytorch
unity-tech-cn:/develop/sac-targetq
unity-tech-cn:/develop/actions-out
unity-tech-cn:/develop/reshapeonnxmemories
unity-tech-cn:/develop/crawlergail
unity-tech-cn:/develop/debugtorchfood
unity-tech-cn:/develop/hybrid-actions
unity-tech-cn:/develop/bullet-hell
unity-tech-cn:/develop/action-spec-gym
unity-tech-cn:/develop/battlefoodcollector
unity-tech-cn:/develop/use-action-buffers
unity-tech-cn:/develop/hardswish
unity-tech-cn:/develop/leakyrelu
unity-tech-cn:/develop/torch-clip-scale
unity-tech-cn:/develop/contentropy
unity-tech-cn:/develop/manch
unity-tech-cn:/develop/torchcrawlerdebug
unity-tech-cn:/develop/fix-nan
unity-tech-cn:/develop/multitype-buffer
unity-tech-cn:/develop/windows-delay
unity-tech-cn:/develop/torch-tanh
unity-tech-cn:/develop/gail-norm
unity-tech-cn:/develop/multiprocess
unity-tech-cn:/develop/unified-obs
unity-tech-cn:/develop/rm-rf-new-models
unity-tech-cn:/develop/skipcritic
unity-tech-cn:/develop/centralizedcritic
unity-tech-cn:/develop/dodgeball-tests
unity-tech-cn:/develop/cc-teammanager
unity-tech-cn:/develop/weight-decay
unity-tech-cn:/develop/singular-embeddings
unity-tech-cn:/develop/zombieteammanager
unity-tech-cn:/develop/superpush
unity-tech-cn:/develop/teammanager
unity-tech-cn:/develop/zombie-exp
unity-tech-cn:/develop/update-readme
unity-tech-cn:/develop/readme-fix
unity-tech-cn:/develop/coma-noact
unity-tech-cn:/develop/coma-withq
unity-tech-cn:/develop/coma2
unity-tech-cn:/develop/action-slice
unity-tech-cn:/develop/gru
unity-tech-cn:/develop/critic-op-lstm-currentmem
unity-tech-cn:/develop/decaygail
unity-tech-cn:/develop/gail-srl-hack
unity-tech-cn:/develop/rear-pad
unity-tech-cn:/develop/mm-copyright-dates
unity-tech-cn:/develop/dodgeball-raycasts
unity-tech-cn:/develop/collab-envs-exp-ervin
unity-tech-cn:/develop/pushcollabonly
unity-tech-cn:/develop/sample-curation
unity-tech-cn:/develop/soccer-groupman
unity-tech-cn:/develop/input-actuator-tanks
unity-tech-cn:/develop/validate-release-fix
unity-tech-cn:/develop/new-console-log
unity-tech-cn:/develop/lex-walker-model
unity-tech-cn:/develop/lstm-burnin
unity-tech-cn:/develop/grid-vaiable-names
unity-tech-cn:/develop/fix-attn-embedding
unity-tech-cn:/develop/api-documentation-update-some-fixes
unity-tech-cn:/develop/update-grpc
unity-tech-cn:/develop/grid-rootref-debug
unity-tech-cn:/develop/pbcollab-rays
unity-tech-cn:/develop/2.0-verified-pre
unity-tech-cn:/develop/parameterizedenvs
unity-tech-cn:/develop/custom-ray-sensor
unity-tech-cn:/develop/mm-add-v2blog
unity-tech-cn:/develop/custom-raycast
unity-tech-cn:/develop/area-manager
unity-tech-cn:/develop/remove-unecessary-lr
unity-tech-cn:/develop/use-base-env-in-learn
unity-tech-cn:/soccer-fives/multiagent
unity-tech-cn:/develop/cubewars/splashdamage
unity-tech-cn:/develop/add-fire/exp
unity-tech-cn:/develop/add-fire/jit
unity-tech-cn:/develop/add-fire/speedtest
unity-tech-cn:/develop/add-fire/bc
unity-tech-cn:/develop/add-fire/ckpt-2
unity-tech-cn:/develop/add-fire/normalize-context
unity-tech-cn:/develop/add-fire/components-dir
unity-tech-cn:/develop/add-fire/halfentropy
unity-tech-cn:/develop/add-fire/memoryclass
unity-tech-cn:/develop/add-fire/categoricaldist
unity-tech-cn:/develop/add-fire/mm
unity-tech-cn:/develop/add-fire/sac-lst
unity-tech-cn:/develop/add-fire/mm3
unity-tech-cn:/develop/add-fire/continuous
unity-tech-cn:/develop/add-fire/ghost
unity-tech-cn:/develop/add-fire/policy-tests
unity-tech-cn:/develop/add-fire/export-discrete
unity-tech-cn:/develop/add-fire/test-simple-rl-fix-resnet
unity-tech-cn:/develop/add-fire/remove-currdoc
unity-tech-cn:/develop/add-fire/clean2
unity-tech-cn:/develop/add-fire/doc-cleanups
unity-tech-cn:/develop/add-fire/changelog
unity-tech-cn:/develop/add-fire/mm2
unity-tech-cn:/develop/model-transfer/add-physics
unity-tech-cn:/develop/model-transfer/train
unity-tech-cn:/develop/jit/experiments
unity-tech-cn:/exp-vince/sep30-2020
unity-tech-cn:/hh-develop-gridsensor-tests/static
unity-tech-cn:/develop/hybrid-actions/distlist
unity-tech-cn:/develop/bullet-hell/buffer
unity-tech-cn:/goal-conditioning/new
unity-tech-cn:/goal-conditioning/sensors-2
unity-tech-cn:/goal-conditioning/sensors-3-pytest-fix
unity-tech-cn:/goal-conditioning/grid-world
unity-tech-cn:/soccer-comms/disc
unity-tech-cn:/develop/centralizedcritic/counterfact
unity-tech-cn:/develop/centralizedcritic/mm
unity-tech-cn:/develop/centralizedcritic/nonego
unity-tech-cn:/develop/zombieteammanager/disableagent
unity-tech-cn:/develop/zombieteammanager/killfirst
unity-tech-cn:/develop/superpush/int
unity-tech-cn:/develop/superpush/branch-cleanup
unity-tech-cn:/develop/teammanager/int
unity-tech-cn:/develop/teammanager/cubewar-nocycle
unity-tech-cn:/develop/teammanager/cubewars
unity-tech-cn:/develop/superpush/int/hunter
unity-tech-cn:/goal-conditioning/new/allo-crawler
unity-tech-cn:/develop/coma2/clip
unity-tech-cn:/develop/coma2/singlenetwork
unity-tech-cn:/develop/coma2/samenet
unity-tech-cn:/develop/coma2/fixgroup
unity-tech-cn:/develop/coma2/samenet/sum
unity-tech-cn:/hh-develop-dodgeball/goy-input
unity-tech-cn:/develop/soccer-groupman/mod
unity-tech-cn:/develop/soccer-groupman/mod/hunter
unity-tech-cn:/develop/soccer-groupman/mod/hunter/cine
unity-tech-cn:/ai-hw-2021/tensor-applier
此合并请求有变更与目标分支冲突。
/protobuf-definitions/proto/mlagents_envs/communicator_objects/observation.proto
/Project/Assets/ML-Agents/Examples/SharedAssets/Scripts/DirectionIndicator.cs
/Project/Assets/ML-Agents/Examples/SharedAssets/Scripts/OrientationCubeController.cs
/Project/Assets/ML-Agents/Examples/SharedAssets/Scripts/SensorBase.cs
/Project/Assets/ML-Agents/Examples/Walker/Scripts/WalkerAgent.cs
/com.unity.ml-agents/Tests/Editor/MLAgentsEditModeTest.cs
/com.unity.ml-agents/Runtime/Communicator/GrpcExtensions.cs
/com.unity.ml-agents/Runtime/Academy.cs
/com.unity.ml-agents/Runtime/Agent.cs
/com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/Observation.cs
/com.unity.ml-agents/Runtime/Sensors/RayPerceptionSensor.cs
/com.unity.ml-agents/Runtime/Sensors/Reflection/ReflectionSensorBase.cs
/com.unity.ml-agents/Runtime/Sensors/RenderTextureSensor.cs
/com.unity.ml-agents/Runtime/Sensors/StackingSensor.cs
/com.unity.ml-agents/Runtime/Sensors/CameraSensor.cs
/com.unity.ml-agents/Runtime/Sensors/ISensor.cs
/com.unity.ml-agents/Runtime/Sensors/VectorSensor.cs
/ml-agents-envs/mlagents_envs/rpc_utils.py
/ml-agents-envs/mlagents_envs/communicator_objects/observation_pb2.py
/ml-agents-envs/mlagents_envs/communicator_objects/observation_pb2.pyi
/ml-agents-envs/mlagents_envs/base_env.py
/docs/Learning-Environment-Examples.md
/ml-agents/mlagents/trainers/settings.py
/ml-agents/mlagents/trainers/learn.py
/ml-agents/mlagents/trainers/trainer_controller.py
/ml-agents/mlagents/trainers/stats.py
/ml-agents/mlagents/trainers/subprocess_env_manager.py
/ml-agents/mlagents/trainers/agent_processor.py
/com.unity.ml-agents/Tests/Editor/Sensor/FloatVisualSensorTests.cs
/com.unity.ml-agents/Tests/Editor/Sensor/SensorShapeValidatorTests.cs
/Project/Assets/ML-Agents/Examples/Walker/Scenes/WalkerDynamicVariableSpeed.unity.meta
/Project/Assets/ML-Agents/Examples/SharedAssets/Prefabs/PlatformDynamicTarget.prefab
/Project/Assets/ML-Agents/Examples/SharedAssets/Prefabs/Targets
/Project/Assets/ML-Agents/Examples/Walker/Prefabs/Platforms
/Project/Assets/ML-Agents/Examples/Walker/Prefabs/Ragdoll
/com.unity.ml-agents/Tests/Editor/ParameterLoaderTest.cs
/Project/Assets/ML-Agents/Examples/Walker/Scenes/WalkerDynamic.unity.meta
/Project/Assets/ML-Agents/Examples/Walker/Scenes/WalkerStatic.unity
/Project/Assets/ML-Agents/Examples/Walker/Scenes/WalkerDynamic.unity
/Project/Assets/ML-Agents/Examples/Walker/TFModels/WalkerStatic.nn
/Project/Assets/ML-Agents/Examples/Walker/TFModels/WalkerStatic.nn.meta
/config/ppo/WalkerDynamic.yaml
/config/ppo/WalkerStatic.yaml
10 次代码提交
作者 | SHA1 | 备注 | 提交日期 |
---|---|---|---|
Scott Jordan | e33168d6 | Added comments and new yaml files for variable speed walker | 4 年前 |
Scott Jordan | d188890b | fixed settings imports for active learning | 4 年前 |
Scott Jordan | f9748b70 | moved batch outside of active learner | 4 年前 |
Scott Jordan | cf2a06ad | Added num repeat parameter for tasks | 4 年前 |
Scott Jordan | cab9d77e | Added Batch setting to active learning | 4 年前 |
Scott Jordan | 87969325 |
added histogram recorded, fixed active learning bug
added histogram recorder for task samples. Fixed a bug that prevented active learning from being used. |
4 年前 |
Scott Jordan | 78f8a9a2 |
Updated task manager
active learning is no optional and defaults to uniform sampling of tasks. Renamed ActiveLearningTaskManager to just TaskManager |
4 年前 |
Scott Jordan | 56745026 |
Initial commit of running active learning code
Active learning code is running on walker variable speed. Needs to be tested to see if it is working. |
4 年前 |
Scott Jordan | 9f3d3428 | Merge branch 'master' into active-variablespeed | 4 年前 |
Scott Jordan | d695c044 | initial addition of active learning (incomplete) | 4 年前 |
共有 149 个文件被更改,包括 10563 次插入 和 2529 次删除
-
7protobuf-definitions/proto/mlagents_envs/communicator_objects/observation.proto
-
7ml-agents-envs/mlagents_envs/base_env.py
-
51ml-agents-envs/mlagents_envs/communicator_objects/observation_pb2.py
-
87ml-agents-envs/mlagents_envs/communicator_objects/observation_pb2.pyi
-
4ml-agents-envs/mlagents_envs/rpc_utils.py
-
7com.unity.ml-agents/Runtime/Academy.cs
-
5com.unity.ml-agents/Runtime/Agent.cs
-
2com.unity.ml-agents/Runtime/Communicator/GrpcExtensions.cs
-
51com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/Observation.cs
-
10com.unity.ml-agents/Runtime/Sensors/CameraSensor.cs
-
29com.unity.ml-agents/Runtime/Sensors/ISensor.cs
-
6com.unity.ml-agents/Runtime/Sensors/RayPerceptionSensor.cs
-
6com.unity.ml-agents/Runtime/Sensors/Reflection/ReflectionSensorBase.cs
-
9com.unity.ml-agents/Runtime/Sensors/RenderTextureSensor.cs
-
6com.unity.ml-agents/Runtime/Sensors/StackingSensor.cs
-
6com.unity.ml-agents/Runtime/Sensors/VectorSensor.cs
-
5com.unity.ml-agents/Tests/Editor/MLAgentsEditModeTest.cs
-
5com.unity.ml-agents/Tests/Editor/ParameterLoaderTest.cs
-
5com.unity.ml-agents/Tests/Editor/Sensor/FloatVisualSensorTests.cs
-
5com.unity.ml-agents/Tests/Editor/Sensor/SensorShapeValidatorTests.cs
-
31docs/Learning-Environment-Examples.md
-
19Project/Assets/ML-Agents/Examples/SharedAssets/Scripts/DirectionIndicator.cs
-
4Project/Assets/ML-Agents/Examples/SharedAssets/Scripts/OrientationCubeController.cs
-
6Project/Assets/ML-Agents/Examples/SharedAssets/Scripts/SensorBase.cs
-
2Project/Assets/ML-Agents/Examples/Walker/Scenes/WalkerDynamic.unity.meta
-
962Project/Assets/ML-Agents/Examples/Walker/Scenes/WalkerStatic.unity
-
977Project/Assets/ML-Agents/Examples/Walker/Scenes/WalkerDynamic.unity
-
1001Project/Assets/ML-Agents/Examples/Walker/TFModels/WalkerStatic.nn
-
2Project/Assets/ML-Agents/Examples/Walker/TFModels/WalkerStatic.nn.meta
-
158Project/Assets/ML-Agents/Examples/Walker/Scripts/WalkerAgent.cs
-
2config/ppo/WalkerDynamic.yaml
-
2config/ppo/WalkerStatic.yaml
-
137ml-agents/mlagents/trainers/stats.py
-
20ml-agents/mlagents/trainers/subprocess_env_manager.py
-
66ml-agents/mlagents/trainers/agent_processor.py
-
6ml-agents/mlagents/trainers/learn.py
-
32ml-agents/mlagents/trainers/trainer_controller.py
-
55ml-agents/mlagents/trainers/settings.py
-
19Project/Assets/ML-Agents/Examples/SharedAssets/Prefabs/Targets/StaticTarget.prefab
-
82Project/Assets/ML-Agents/Examples/Walker/Prefabs/Ragdoll/WalkerRagdollBase.prefab
-
34ml-agents-envs/mlagents_envs/side_channel/agent_parameters_channel.py
-
50com.unity.ml-agents/Runtime/AgentParameters.cs
-
11com.unity.ml-agents/Runtime/AgentParameters.cs.meta
-
65com.unity.ml-agents/Runtime/SideChannels/AgentParametersChannel.cs
-
11com.unity.ml-agents/Runtime/SideChannels/AgentParametersChannel.cs.meta
-
18send_obs.py
-
737Project/Assets/ML-Agents/Examples/3DBall/Prefabs/3DBallTask.prefab
-
8Project/Assets/ML-Agents/Examples/3DBall/Prefabs/3DBallTask.prefab.meta
-
1001Project/Assets/ML-Agents/Examples/3DBall/Scenes/3DBallTask.unity
-
9Project/Assets/ML-Agents/Examples/3DBall/Scenes/3DBallTask.unity.meta
-
93Project/Assets/ML-Agents/Examples/3DBall/Scripts/Task3DAgent.cs
-
12Project/Assets/ML-Agents/Examples/3DBall/Scripts/Task3DAgent.cs.meta
-
48Project/Assets/ML-Agents/Examples/3DBall/Scripts/TaskSensorComponent.cs
-
11Project/Assets/ML-Agents/Examples/3DBall/Scripts/TaskSensorComponent.cs.meta
-
252Project/Assets/ML-Agents/Examples/3DBall/TFModels/My3DBall.nn
-
11Project/Assets/ML-Agents/Examples/3DBall/TFModels/My3DBall.nn.meta
-
7Project/Assets/ML-Agents/Examples/SharedAssets/Prefabs/PlatformDynamicTarget.prefab.meta
-
8Project/Assets/ML-Agents/Examples/SharedAssets/Prefabs/Targets.meta
-
523Project/Assets/ML-Agents/Examples/SharedAssets/Prefabs/PlatformDynamicTarget.prefab
-
10Project/Assets/ML-Agents/Examples/Walker/Demos/ExpertWalkerDy.demo.meta
-
10Project/Assets/ML-Agents/Examples/Walker/Demos/ExpertWalkerDyVS.demo.meta
-
10Project/Assets/ML-Agents/Examples/Walker/Demos/ExpertWalkerSt.demo.meta
-
10Project/Assets/ML-Agents/Examples/Walker/Demos/ExpertWalkerStVS.demo.meta
-
8Project/Assets/ML-Agents/Examples/Walker/Prefabs/Ragdoll.meta
-
8Project/Assets/ML-Agents/Examples/Walker/Prefabs/Platforms.meta
-
9Project/Assets/ML-Agents/Examples/Walker/Scenes/WalkerStaticVariableSpeed.unity.meta
-
1001Project/Assets/ML-Agents/Examples/Walker/Scenes/WalkerDynamicVariableSpeed.unity
-
7Project/Assets/ML-Agents/Examples/Walker/Scenes/WalkerDynamicVariableSpeed.unity.meta
-
1001Project/Assets/ML-Agents/Examples/Walker/Scenes/WalkerStaticVariableSpeed.unity
-
1001Project/Assets/ML-Agents/Examples/Walker/TFModels/WalkerDynamicVariableSpeed.nn
-
11Project/Assets/ML-Agents/Examples/Walker/TFModels/WalkerDynamicVariableSpeed.nn.meta
-
1001Project/Assets/ML-Agents/Examples/Walker/TFModels/WalkerDynamic.nn
-
11Project/Assets/ML-Agents/Examples/Walker/TFModels/WalkerDynamic.nn.meta
-
1001Project/Assets/ML-Agents/Examples/Walker/TFModels/WalkerStaticVariableSpeed.nn
-
11Project/Assets/ML-Agents/Examples/Walker/TFModels/WalkerStaticVariableSpeed.nn.meta
-
8Project/Assets/ML-Agents/Examples/Walker/TFModels/ObserveDist.meta
-
8Project/Assets/ML-Agents/Examples/Walker/TFModels/ObserveDistWithHH.meta
-
8Project/Assets/ML-Agents/Examples/Walker/TFModels/OrigTarg.meta
-
26config/ppo/WalkerDynamicVariableSpeed.yaml
-
27config/ppo/RollerBall.yaml
-
35config/ppo/WalkerStaticVariableSpeed.yaml
-
42config/ppo/WalkerStaticVariableSpeedActive.yaml
-
233ml-agents/mlagents/trainers/active_learning.py
-
175ml-agents/mlagents/trainers/task_manager.py
-
146Project/Assets/ML-Agents/Examples/SharedAssets/Prefabs/Targets/DynamicTarget.prefab
-
7Project/Assets/ML-Agents/Examples/Walker/Prefabs/Platforms/PlatformWalkerDynamicSingleSpeed.prefab.meta
-
157Project/Assets/ML-Agents/Examples/Walker/Prefabs/Platforms/PlatformWalkerDynamicSingleSpeed.prefab
-
7Project/Assets/ML-Agents/Examples/Walker/Prefabs/Platforms/PlatformWalkerDynamicVariableSpeed.prefab.meta
-
298Project/Assets/ML-Agents/Examples/Walker/Prefabs/Platforms/PlatformWalkerDynamicVariableSpeed.prefab
|
|||
fileFormatVersion: 2 |
|||
guid: 79d5d2687bfbe45f5b78bd6c04992e0d |
|||
guid: 65c87f50b8c81433d8fd7f6550773467 |
|||
DefaultImporter: |
|||
externalObjects: {} |
|||
userData: |
962
Project/Assets/ML-Agents/Examples/Walker/Scenes/WalkerStatic.unity
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
977
Project/Assets/ML-Agents/Examples/Walker/Scenes/WalkerDynamic.unity
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
1001
Project/Assets/ML-Agents/Examples/Walker/TFModels/WalkerStatic.nn
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
|
|||
from mlagents_envs.side_channel import SideChannel, IncomingMessage, OutgoingMessage |
|||
from mlagents_envs.exception import UnityCommunicationException |
|||
from mlagents_envs.base_env import AgentId |
|||
import uuid |
|||
|
|||
|
|||
class AgentParametersChannel(SideChannel): |
|||
""" |
|||
This is the SideChannel for sending agent-specific parameters to Unity. |
|||
You can send parameters to an environment with the command |
|||
set_float_parameter. |
|||
""" |
|||
|
|||
def __init__(self) -> None: |
|||
channel_id = uuid.UUID(("534c891e-810f-11ea-a9d0-822485860401")) |
|||
super().__init__(channel_id) |
|||
|
|||
def on_message_received(self, msg: IncomingMessage) -> None: |
|||
raise UnityCommunicationException( |
|||
"The EnvironmentParametersChannel received a message from Unity, " |
|||
+ "this should not have happend." |
|||
) |
|||
|
|||
def set_float_parameter(self, agent_id: AgentId, key: str, value: float) -> None: |
|||
""" |
|||
Sets a float environment parameter in the Unity Environment. |
|||
:param key: The string identifier of the parameter. |
|||
:param value: The float value of the parameter. |
|||
""" |
|||
msg = OutgoingMessage() |
|||
msg.write_int32(agent_id) |
|||
msg.write_string(key) |
|||
msg.write_float32(value) |
|||
super().queue_message_to_send(msg) |
|
|||
using System; |
|||
using System.Collections.Generic; |
|||
using Unity.MLAgents.SideChannels; |
|||
|
|||
namespace Unity.MLAgents |
|||
{ |
|||
/// <summary>
|
|||
/// A container for the Environment Parameters that may be modified during training.
|
|||
/// The keys for those parameters are defined in the trainer configurations and the
|
|||
/// the values are generated from the training process in features such as Curriculum Learning
|
|||
/// and Environment Parameter Randomization.
|
|||
///
|
|||
/// One current assumption for all the environment parameters is that they are of type float.
|
|||
/// </summary>
|
|||
public sealed class AgentParameters |
|||
{ |
|||
/// <summary>
|
|||
/// The side channel that is used to receive the new parameter values.
|
|||
/// </summary>
|
|||
readonly AgentParametersChannel m_Channel; |
|||
|
|||
/// <summary>
|
|||
/// Constructor.
|
|||
/// </summary>
|
|||
internal AgentParameters() |
|||
{ |
|||
m_Channel = new AgentParametersChannel(); |
|||
SideChannelManager.RegisterSideChannel(m_Channel); |
|||
} |
|||
|
|||
/// <summary>
|
|||
/// Returns the parameter value for the specified key. Returns the default value provided
|
|||
/// if this parameter key does not have a value. Only returns a parameter value if it is
|
|||
/// of type float.
|
|||
/// </summary>
|
|||
/// <param name="key">The parameter key</param>
|
|||
/// <param name="defaultValue">Default value for this parameter.</param>
|
|||
/// <returns></returns>
|
|||
public float GetWithDefault(int episodeId, string key, float defaultValue) |
|||
{ |
|||
return m_Channel.GetWithDefault(episodeId, key, defaultValue); |
|||
} |
|||
|
|||
|
|||
internal void Dispose() |
|||
{ |
|||
SideChannelManager.UnregisterSideChannel(m_Channel); |
|||
} |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: c6d4c5ad59e7b4066b64fa47b5205889 |
|||
MonoImporter: |
|||
externalObjects: {} |
|||
serializedVersion: 2 |
|||
defaultReferences: [] |
|||
executionOrder: 0 |
|||
icon: {instanceID: 0} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
using System.Collections.Generic; |
|||
using System; |
|||
using UnityEngine; |
|||
|
|||
namespace Unity.MLAgents.SideChannels |
|||
{ |
|||
internal class AgentParametersChannel : SideChannel |
|||
{ |
|||
Dictionary<int, Dictionary<string, float>> m_Parameters = new Dictionary<int, Dictionary<string, float>>(); |
|||
|
|||
const string k_EnvParamsId = "534c891e-810f-11ea-a9d0-822485860401"; |
|||
|
|||
/// <summary>
|
|||
/// Initializes the side channel. The constructor is internal because only one instance is
|
|||
/// supported at a time, and is created by the Academy.
|
|||
/// </summary>
|
|||
internal AgentParametersChannel() |
|||
{ |
|||
ChannelId = new Guid(k_EnvParamsId); |
|||
} |
|||
|
|||
/// <inheritdoc/>
|
|||
protected override void OnMessageReceived(IncomingMessage msg) |
|||
{ |
|||
var episodeId = msg.ReadInt32(); |
|||
var key = msg.ReadString(); |
|||
var value = msg.ReadFloat32(); |
|||
if(!m_Parameters.ContainsKey(episodeId)) |
|||
{ |
|||
m_Parameters[episodeId] = new Dictionary<string, float>(); |
|||
} |
|||
m_Parameters[episodeId][key] = value; |
|||
} |
|||
|
|||
/// <summary>
|
|||
/// Returns the parameter value associated with the provided key. Returns the default
|
|||
/// value if one doesn't exist.
|
|||
/// </summary>
|
|||
/// <param name="key">Parameter key.</param>
|
|||
/// <param name="defaultValue">Default value to return.</param>
|
|||
/// <returns></returns>
|
|||
public float GetWithDefault(int episodeId, string key, float defaultValue) |
|||
{ |
|||
float value = defaultValue; |
|||
bool hasKey = false; |
|||
Dictionary<string, float> agent_dict; |
|||
if(m_Parameters.TryGetValue(episodeId, out agent_dict)) |
|||
{ |
|||
agent_dict.TryGetValue(key, out value); |
|||
} |
|||
return value; |
|||
} |
|||
|
|||
/// <summary>
|
|||
/// Returns all parameter keys that have a registered value.
|
|||
/// </summary>
|
|||
/// <returns></returns>
|
|||
public IList<string> ListParameters(int episodeId) |
|||
{ |
|||
Dictionary<string, float> agent_dict; |
|||
m_Parameters.TryGetValue(episodeId, out agent_dict); |
|||
return new List<string>(agent_dict.Keys); |
|||
} |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: 22884d2b9466b4a589e059247a2f519f |
|||
MonoImporter: |
|||
externalObjects: {} |
|||
serializedVersion: 2 |
|||
defaultReferences: [] |
|||
executionOrder: 0 |
|||
icon: {instanceID: 0} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
from mlagents_envs.environment import UnityEnvironment |
|||
from mlagents_envs.side_channel.agent_parameters_channel import AgentParametersChannel |
|||
|
|||
|
|||
# Getting observation types |
|||
agent_params = AgentParametersChannel() |
|||
env = UnityEnvironment(side_channels=[agent_params]) |
|||
env.reset() |
|||
bspec = list(env.behavior_specs.values())[0] |
|||
print(bspec.sensor_types) |
|||
dsteps, tsteps = env.get_steps(list(env.behavior_specs.keys())[0]) |
|||
print(dsteps.obs) |
|||
|
|||
# Sending agent parameterizations |
|||
for i, _id in enumerate(dsteps.agent_id): |
|||
agent_params.set_float_parameter(_id, "test_param", i * 1000) |
|||
env.reset() |
|||
env.step() |
|
|||
%YAML 1.1 |
|||
%TAG !u! tag:unity3d.com,2011: |
|||
--- !u!1 &1036225416237908 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 4259352808153402} |
|||
- component: {fileID: 33399516572863624} |
|||
- component: {fileID: 135693586603893602} |
|||
- component: {fileID: 23610325484096200} |
|||
- component: {fileID: 54597526346971362} |
|||
m_Layer: 0 |
|||
m_Name: Ball |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!4 &4259352808153402 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1036225416237908} |
|||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
|||
m_LocalPosition: {x: 0, y: 4.31, z: 0} |
|||
m_LocalScale: {x: 1, y: 1, z: 1} |
|||
m_Children: [] |
|||
m_Father: {fileID: 4679453577574622} |
|||
m_RootOrder: 0 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
--- !u!33 &33399516572863624 |
|||
MeshFilter: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1036225416237908} |
|||
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} |
|||
--- !u!135 &135693586603893602 |
|||
SphereCollider: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1036225416237908} |
|||
m_Material: {fileID: 13400000, guid: 56162663048874fd4b10e065f9cf78b7, type: 2} |
|||
m_IsTrigger: 0 |
|||
m_Enabled: 1 |
|||
serializedVersion: 2 |
|||
m_Radius: 0.5 |
|||
m_Center: {x: 0, y: 0, z: 0} |
|||
--- !u!23 &23610325484096200 |
|||
MeshRenderer: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1036225416237908} |
|||
m_Enabled: 1 |
|||
m_CastShadows: 1 |
|||
m_ReceiveShadows: 1 |
|||
m_DynamicOccludee: 1 |
|||
m_MotionVectors: 1 |
|||
m_LightProbeUsage: 1 |
|||
m_ReflectionProbeUsage: 1 |
|||
m_RenderingLayerMask: 1 |
|||
m_RendererPriority: 0 |
|||
m_Materials: |
|||
- {fileID: 2100000, guid: cf2a3769e6d5446698f2e3f5aab68915, type: 2} |
|||
m_StaticBatchInfo: |
|||
firstSubMesh: 0 |
|||
subMeshCount: 0 |
|||
m_StaticBatchRoot: {fileID: 0} |
|||
m_ProbeAnchor: {fileID: 0} |
|||
m_LightProbeVolumeOverride: {fileID: 0} |
|||
m_ScaleInLightmap: 1 |
|||
m_PreserveUVs: 1 |
|||
m_IgnoreNormalsForChartDetection: 0 |
|||
m_ImportantGI: 0 |
|||
m_StitchLightmapSeams: 0 |
|||
m_SelectedEditorRenderState: 3 |
|||
m_MinimumChartSize: 4 |
|||
m_AutoUVMaxDistance: 0.5 |
|||
m_AutoUVMaxAngle: 89 |
|||
m_LightmapParameters: {fileID: 0} |
|||
m_SortingLayerID: 0 |
|||
m_SortingLayer: 0 |
|||
m_SortingOrder: 0 |
|||
--- !u!54 &54597526346971362 |
|||
Rigidbody: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1036225416237908} |
|||
serializedVersion: 2 |
|||
m_Mass: 1 |
|||
m_Drag: 0 |
|||
m_AngularDrag: 0.01 |
|||
m_UseGravity: 1 |
|||
m_IsKinematic: 0 |
|||
m_Interpolate: 0 |
|||
m_Constraints: 0 |
|||
m_CollisionDetection: 0 |
|||
--- !u!1 &1218265376493012 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 4082575947564308} |
|||
- component: {fileID: 33986757750372936} |
|||
- component: {fileID: 23248495933290848} |
|||
m_Layer: 0 |
|||
m_Name: eye |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!4 &4082575947564308 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1218265376493012} |
|||
m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} |
|||
m_LocalPosition: {x: 0.29999995, y: 0.07399994, z: 0.50040054} |
|||
m_LocalScale: {x: 0.29457998, y: 0.29457998, z: 0.29457998} |
|||
m_Children: [] |
|||
m_Father: {fileID: 4294419716796784} |
|||
m_RootOrder: 1 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} |
|||
--- !u!33 &33986757750372936 |
|||
MeshFilter: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1218265376493012} |
|||
m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} |
|||
--- !u!23 &23248495933290848 |
|||
MeshRenderer: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1218265376493012} |
|||
m_Enabled: 1 |
|||
m_CastShadows: 1 |
|||
m_ReceiveShadows: 1 |
|||
m_DynamicOccludee: 1 |
|||
m_MotionVectors: 1 |
|||
m_LightProbeUsage: 1 |
|||
m_ReflectionProbeUsage: 1 |
|||
m_RenderingLayerMask: 1 |
|||
m_RendererPriority: 0 |
|||
m_Materials: |
|||
- {fileID: 2100000, guid: f731be6866ce749fd8349e67ae81f76a, type: 2} |
|||
m_StaticBatchInfo: |
|||
firstSubMesh: 0 |
|||
subMeshCount: 0 |
|||
m_StaticBatchRoot: {fileID: 0} |
|||
m_ProbeAnchor: {fileID: 0} |
|||
m_LightProbeVolumeOverride: {fileID: 0} |
|||
m_ScaleInLightmap: 1 |
|||
m_PreserveUVs: 1 |
|||
m_IgnoreNormalsForChartDetection: 0 |
|||
m_ImportantGI: 0 |
|||
m_StitchLightmapSeams: 0 |
|||
m_SelectedEditorRenderState: 3 |
|||
m_MinimumChartSize: 4 |
|||
m_AutoUVMaxDistance: 0.5 |
|||
m_AutoUVMaxAngle: 89 |
|||
m_LightmapParameters: {fileID: 0} |
|||
m_SortingLayerID: 0 |
|||
m_SortingLayer: 0 |
|||
m_SortingOrder: 0 |
|||
--- !u!1 &1321468028730240 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 4679453577574622} |
|||
m_Layer: 0 |
|||
m_Name: 3DBallTask |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!4 &4679453577574622 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1321468028730240} |
|||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
|||
m_LocalPosition: {x: 0, y: 0, z: 5} |
|||
m_LocalScale: {x: 1, y: 1, z: 1} |
|||
m_Children: |
|||
- {fileID: 4259352808153402} |
|||
- {fileID: 4780098186595842} |
|||
m_Father: {fileID: 0} |
|||
m_RootOrder: 0 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
--- !u!1 &1424713891854676 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 4780098186595842} |
|||
- component: {fileID: 65010516625723872} |
|||
- component: {fileID: 114368073295828880} |
|||
- component: {fileID: 1306725529891448089} |
|||
- component: {fileID: 1758424554059689351} |
|||
- component: {fileID: 1287132100719688250} |
|||
- component: {fileID: 6825609771517314395} |
|||
m_Layer: 0 |
|||
m_Name: Agent |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!4 &4780098186595842 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1424713891854676} |
|||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
|||
m_LocalPosition: {x: 0, y: 0, z: 0} |
|||
m_LocalScale: {x: 5, y: 5, z: 5} |
|||
m_Children: |
|||
- {fileID: 4294419716796784} |
|||
m_Father: {fileID: 4679453577574622} |
|||
m_RootOrder: 1 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
--- !u!65 &65010516625723872 |
|||
BoxCollider: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1424713891854676} |
|||
m_Material: {fileID: 0} |
|||
m_IsTrigger: 0 |
|||
m_Enabled: 1 |
|||
serializedVersion: 2 |
|||
m_Size: {x: 1, y: 1, z: 1} |
|||
m_Center: {x: 0, y: 0, z: 0} |
|||
--- !u!114 &114368073295828880 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1424713891854676} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: 5d1c4e0b1822b495aa52bc52839ecb30, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
m_BrainParameters: |
|||
VectorObservationSize: 8 |
|||
NumStackedVectorObservations: 1 |
|||
VectorActionSize: 02000000 |
|||
VectorActionDescriptions: [] |
|||
VectorActionSpaceType: 1 |
|||
m_Model: {fileID: 11400000, guid: 20a7b83be6b0c493d9271c65c897eb9b, type: 3} |
|||
m_InferenceDevice: 0 |
|||
m_BehaviorType: 0 |
|||
m_BehaviorName: 3DBall |
|||
TeamId: 0 |
|||
m_UseChildSensors: 1 |
|||
m_ObservableAttributeHandling: 0 |
|||
--- !u!114 &1306725529891448089 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1424713891854676} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: 3a5c9d521e5ef4759a8246a07d52221e, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
DecisionPeriod: 5 |
|||
TakeActionsBetweenDecisions: 1 |
|||
--- !u!114 &1758424554059689351 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1424713891854676} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: 3a6da8f78a394c6ab027688eab81e04d, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
debugCommandLineOverride: |
|||
--- !u!114 &1287132100719688250 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1424713891854676} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: 3bb324825cf6e4dd6838288011a49a2b, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
agentParameters: |
|||
maxStep: 0 |
|||
hasUpgradedFromAgentParameters: 1 |
|||
MaxStep: 5000 |
|||
ball: {fileID: 1036225416237908} |
|||
--- !u!114 &6825609771517314395 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1424713891854676} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: 176ce9d33a1e6436e87ae60ed5d5a450, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
observationSize: 1 |
|||
--- !u!1 &1533320402322554 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 4667923401885968} |
|||
- component: {fileID: 20793118999710892} |
|||
m_Layer: 0 |
|||
m_Name: AgentCamera |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 0 |
|||
--- !u!4 &4667923401885968 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1533320402322554} |
|||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
|||
m_LocalPosition: {x: 0, y: 0, z: 0.15} |
|||
m_LocalScale: {x: 1, y: 1, z: 1} |
|||
m_Children: [] |
|||
m_Father: {fileID: 4294419716796784} |
|||
m_RootOrder: 0 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
--- !u!20 &20793118999710892 |
|||
Camera: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1533320402322554} |
|||
m_Enabled: 1 |
|||
serializedVersion: 2 |
|||
m_ClearFlags: 2 |
|||
m_BackGroundColor: {r: 0.46666667, g: 0.5647059, b: 0.60784316, a: 1} |
|||
m_projectionMatrixMode: 1 |
|||
m_SensorSize: {x: 36, y: 24} |
|||
m_LensShift: {x: 0, y: 0} |
|||
m_GateFitMode: 2 |
|||
m_FocalLength: 50 |
|||
m_NormalizedViewPortRect: |
|||
serializedVersion: 2 |
|||
x: 0 |
|||
y: 0 |
|||
width: 1 |
|||
height: 1 |
|||
near clip plane: 0.3 |
|||
far clip plane: 1000 |
|||
field of view: 60 |
|||
orthographic: 0 |
|||
orthographic size: 5 |
|||
m_Depth: 0 |
|||
m_CullingMask: |
|||
serializedVersion: 2 |
|||
m_Bits: 4294950911 |
|||
m_RenderingPath: -1 |
|||
m_TargetTexture: {fileID: 0} |
|||
m_TargetDisplay: 0 |
|||
m_TargetEye: 3 |
|||
m_HDR: 1 |
|||
m_AllowMSAA: 1 |
|||
m_AllowDynamicResolution: 0 |
|||
m_ForceIntoRT: 0 |
|||
m_OcclusionCulling: 1 |
|||
m_StereoConvergence: 10 |
|||
m_StereoSeparation: 0.022 |
|||
--- !u!1 &1619100162539582 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 4425897039098228} |
|||
- component: {fileID: 33259119028337980} |
|||
- component: {fileID: 23108868206887546} |
|||
m_Layer: 0 |
|||
m_Name: mouth |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!4 &4425897039098228 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1619100162539582} |
|||
m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} |
|||
m_LocalPosition: {x: 0, y: -0.18299997, z: 0.50040054} |
|||
m_LocalScale: {x: 0.27602, y: 0.042489994, z: 0.13891} |
|||
m_Children: [] |
|||
m_Father: {fileID: 4294419716796784} |
|||
m_RootOrder: 3 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} |
|||
--- !u!33 &33259119028337980 |
|||
MeshFilter: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1619100162539582} |
|||
m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} |
|||
--- !u!23 &23108868206887546 |
|||
MeshRenderer: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1619100162539582} |
|||
m_Enabled: 1 |
|||
m_CastShadows: 1 |
|||
m_ReceiveShadows: 1 |
|||
m_DynamicOccludee: 1 |
|||
m_MotionVectors: 1 |
|||
m_LightProbeUsage: 1 |
|||
m_ReflectionProbeUsage: 1 |
|||
m_RenderingLayerMask: 1 |
|||
m_RendererPriority: 0 |
|||
m_Materials: |
|||
- {fileID: 2100000, guid: f731be6866ce749fd8349e67ae81f76a, type: 2} |
|||
m_StaticBatchInfo: |
|||
firstSubMesh: 0 |
|||
subMeshCount: 0 |
|||
m_StaticBatchRoot: {fileID: 0} |
|||
m_ProbeAnchor: {fileID: 0} |
|||
m_LightProbeVolumeOverride: {fileID: 0} |
|||
m_ScaleInLightmap: 1 |
|||
m_PreserveUVs: 1 |
|||
m_IgnoreNormalsForChartDetection: 0 |
|||
m_ImportantGI: 0 |
|||
m_StitchLightmapSeams: 0 |
|||
m_SelectedEditorRenderState: 3 |
|||
m_MinimumChartSize: 4 |
|||
m_AutoUVMaxDistance: 0.5 |
|||
m_AutoUVMaxAngle: 89 |
|||
m_LightmapParameters: {fileID: 0} |
|||
m_SortingLayerID: 0 |
|||
m_SortingLayer: 0 |
|||
m_SortingOrder: 0 |
|||
--- !u!1 &1854695166504686 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 4300192163442926} |
|||
- component: {fileID: 33165976320323760} |
|||
- component: {fileID: 23468552506669568} |
|||
m_Layer: 0 |
|||
m_Name: Headband |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!4 &4300192163442926 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1854695166504686} |
|||
m_LocalRotation: {x: -0, y: -0, z: 0.016506119, w: 0.9998638} |
|||
m_LocalPosition: {x: 0, y: 0.341, z: 0} |
|||
m_LocalScale: {x: 1.0441425, y: 0.19278127, z: 1.0441422} |
|||
m_Children: [] |
|||
m_Father: {fileID: 4294419716796784} |
|||
m_RootOrder: 4 |
|||
m_LocalEulerAnglesHint: {x: 0, y: -179.99998, z: 1.8920001} |
|||
--- !u!33 &33165976320323760 |
|||
MeshFilter: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1854695166504686} |
|||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} |
|||
--- !u!23 &23468552506669568 |
|||
MeshRenderer: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1854695166504686} |
|||
m_Enabled: 1 |
|||
m_CastShadows: 1 |
|||
m_ReceiveShadows: 1 |
|||
m_DynamicOccludee: 1 |
|||
m_MotionVectors: 1 |
|||
m_LightProbeUsage: 1 |
|||
m_ReflectionProbeUsage: 1 |
|||
m_RenderingLayerMask: 1 |
|||
m_RendererPriority: 0 |
|||
m_Materials: |
|||
- {fileID: 2100000, guid: 04be259c590de46f69db4cbd1da877d5, type: 2} |
|||
m_StaticBatchInfo: |
|||
firstSubMesh: 0 |
|||
subMeshCount: 0 |
|||
m_StaticBatchRoot: {fileID: 0} |
|||
m_ProbeAnchor: {fileID: 0} |
|||
m_LightProbeVolumeOverride: {fileID: 0} |
|||
m_ScaleInLightmap: 1 |
|||
m_PreserveUVs: 1 |
|||
m_IgnoreNormalsForChartDetection: 0 |
|||
m_ImportantGI: 0 |
|||
m_StitchLightmapSeams: 0 |
|||
m_SelectedEditorRenderState: 3 |
|||
m_MinimumChartSize: 4 |
|||
m_AutoUVMaxDistance: 0.5 |
|||
m_AutoUVMaxAngle: 89 |
|||
m_LightmapParameters: {fileID: 0} |
|||
m_SortingLayerID: 0 |
|||
m_SortingLayer: 0 |
|||
m_SortingOrder: 0 |
|||
--- !u!1 &1859240399150782 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 4294419716796784} |
|||
- component: {fileID: 33973749152356522} |
|||
- component: {fileID: 23340305563606254} |
|||
m_Layer: 0 |
|||
m_Name: AgentCube_Blue |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!4 &4294419716796784 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1859240399150782} |
|||
m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} |
|||
m_LocalPosition: {x: 0, y: 0, z: 0} |
|||
m_LocalScale: {x: 1, y: 1, z: 1} |
|||
m_Children: |
|||
- {fileID: 4667923401885968} |
|||
- {fileID: 4082575947564308} |
|||
- {fileID: 4144856465265480} |
|||
- {fileID: 4425897039098228} |
|||
- {fileID: 4300192163442926} |
|||
m_Father: {fileID: 4780098186595842} |
|||
m_RootOrder: 0 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} |
|||
--- !u!33 &33973749152356522 |
|||
MeshFilter: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1859240399150782} |
|||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} |
|||
--- !u!23 &23340305563606254 |
|||
MeshRenderer: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1859240399150782} |
|||
m_Enabled: 1 |
|||
m_CastShadows: 1 |
|||
m_ReceiveShadows: 1 |
|||
m_DynamicOccludee: 1 |
|||
m_MotionVectors: 1 |
|||
m_LightProbeUsage: 1 |
|||
m_ReflectionProbeUsage: 1 |
|||
m_RenderingLayerMask: 1 |
|||
m_RendererPriority: 0 |
|||
m_Materials: |
|||
- {fileID: 2100000, guid: c9fa44c2c3f8ce74ca39a3355ea42631, type: 2} |
|||
m_StaticBatchInfo: |
|||
firstSubMesh: 0 |
|||
subMeshCount: 0 |
|||
m_StaticBatchRoot: {fileID: 0} |
|||
m_ProbeAnchor: {fileID: 0} |
|||
m_LightProbeVolumeOverride: {fileID: 0} |
|||
m_ScaleInLightmap: 1 |
|||
m_PreserveUVs: 1 |
|||
m_IgnoreNormalsForChartDetection: 0 |
|||
m_ImportantGI: 0 |
|||
m_StitchLightmapSeams: 0 |
|||
m_SelectedEditorRenderState: 3 |
|||
m_MinimumChartSize: 4 |
|||
m_AutoUVMaxDistance: 0.5 |
|||
m_AutoUVMaxAngle: 89 |
|||
m_LightmapParameters: {fileID: 0} |
|||
m_SortingLayerID: 0 |
|||
m_SortingLayer: 0 |
|||
m_SortingOrder: 0 |
|||
--- !u!1 &1999020414315134 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 4144856465265480} |
|||
- component: {fileID: 33069174244444078} |
|||
- component: {fileID: 23048386147321498} |
|||
m_Layer: 0 |
|||
m_Name: eye |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!4 &4144856465265480 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1999020414315134} |
|||
m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} |
|||
m_LocalPosition: {x: -0.29999995, y: 0.07399994, z: 0.50040054} |
|||
m_LocalScale: {x: 0.29457998, y: 0.29457998, z: 0.29457998} |
|||
m_Children: [] |
|||
m_Father: {fileID: 4294419716796784} |
|||
m_RootOrder: 2 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} |
|||
--- !u!33 &33069174244444078 |
|||
MeshFilter: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1999020414315134} |
|||
m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} |
|||
--- !u!23 &23048386147321498 |
|||
MeshRenderer: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1999020414315134} |
|||
m_Enabled: 1 |
|||
m_CastShadows: 1 |
|||
m_ReceiveShadows: 1 |
|||
m_DynamicOccludee: 1 |
|||
m_MotionVectors: 1 |
|||
m_LightProbeUsage: 1 |
|||
m_ReflectionProbeUsage: 1 |
|||
m_RenderingLayerMask: 1 |
|||
m_RendererPriority: 0 |
|||
m_Materials: |
|||
- {fileID: 2100000, guid: f731be6866ce749fd8349e67ae81f76a, type: 2} |
|||
m_StaticBatchInfo: |
|||
firstSubMesh: 0 |
|||
subMeshCount: 0 |
|||
m_StaticBatchRoot: {fileID: 0} |
|||
m_ProbeAnchor: {fileID: 0} |
|||
m_LightProbeVolumeOverride: {fileID: 0} |
|||
m_ScaleInLightmap: 1 |
|||
m_PreserveUVs: 1 |
|||
m_IgnoreNormalsForChartDetection: 0 |
|||
m_ImportantGI: 0 |
|||
m_StitchLightmapSeams: 0 |
|||
m_SelectedEditorRenderState: 3 |
|||
m_MinimumChartSize: 4 |
|||
m_AutoUVMaxDistance: 0.5 |
|||
m_AutoUVMaxAngle: 89 |
|||
m_LightmapParameters: {fileID: 0} |
|||
m_SortingLayerID: 0 |
|||
m_SortingLayer: 0 |
|||
m_SortingOrder: 0 |
|
|||
fileFormatVersion: 2 |
|||
guid: 26c60e3742e9c4a3d9106c283a4a0b9c |
|||
NativeFormatImporter: |
|||
externalObjects: {} |
|||
mainObjectFileID: 100100000 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
1001
Project/Assets/ML-Agents/Examples/3DBall/Scenes/3DBallTask.unity
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
|
|||
fileFormatVersion: 2 |
|||
guid: ef7bf52aa263d4784bbee42176046057 |
|||
timeCreated: 1513216032 |
|||
licenseType: Pro |
|||
DefaultImporter: |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
using UnityEngine; |
|||
using Unity.MLAgents; |
|||
using Unity.MLAgents.Sensors; |
|||
|
|||
public class Task3DAgent : Agent |
|||
{ |
|||
[Header("Specific to Ball3D")] |
|||
public GameObject ball; |
|||
Rigidbody m_BallRb; |
|||
EnvironmentParameters m_ResetParams; |
|||
|
|||
TaskSensorComponent m_TaskSensor; |
|||
|
|||
public override void Initialize() |
|||
{ |
|||
m_BallRb = ball.GetComponent<Rigidbody>(); |
|||
m_ResetParams = Academy.Instance.EnvironmentParameters; |
|||
SetResetParameters(); |
|||
} |
|||
|
|||
public override void CollectObservations(VectorSensor sensor) |
|||
{ |
|||
sensor.AddObservation(gameObject.transform.rotation.z); |
|||
sensor.AddObservation(gameObject.transform.rotation.x); |
|||
sensor.AddObservation(ball.transform.position - gameObject.transform.position); |
|||
sensor.AddObservation(m_BallRb.velocity); |
|||
// Example of setting task parameterization to ball x position
|
|||
m_TaskSensor = this.GetComponent<TaskSensorComponent>(); |
|||
m_TaskSensor.AddParameterizaton(ball.transform.position.x); |
|||
} |
|||
|
|||
public override void OnActionReceived(float[] vectorAction) |
|||
{ |
|||
var actionZ = 2f * Mathf.Clamp(vectorAction[0], -1f, 1f); |
|||
var actionX = 2f * Mathf.Clamp(vectorAction[1], -1f, 1f); |
|||
|
|||
if ((gameObject.transform.rotation.z < 0.25f && actionZ > 0f) || |
|||
(gameObject.transform.rotation.z > -0.25f && actionZ < 0f)) |
|||
{ |
|||
gameObject.transform.Rotate(new Vector3(0, 0, 1), actionZ); |
|||
} |
|||
|
|||
if ((gameObject.transform.rotation.x < 0.25f && actionX > 0f) || |
|||
(gameObject.transform.rotation.x > -0.25f && actionX < 0f)) |
|||
{ |
|||
gameObject.transform.Rotate(new Vector3(1, 0, 0), actionX); |
|||
} |
|||
if ((ball.transform.position.y - gameObject.transform.position.y) < -2f || |
|||
Mathf.Abs(ball.transform.position.x - gameObject.transform.position.x) > 3f || |
|||
Mathf.Abs(ball.transform.position.z - gameObject.transform.position.z) > 3f) |
|||
{ |
|||
SetReward(-1f); |
|||
EndEpisode(); |
|||
} |
|||
else |
|||
{ |
|||
SetReward(0.1f); |
|||
} |
|||
} |
|||
|
|||
public override void OnEpisodeBegin() |
|||
{ |
|||
gameObject.transform.rotation = new Quaternion(0f, 0f, 0f, 0f); |
|||
gameObject.transform.Rotate(new Vector3(1, 0, 0), Random.Range(-10f, 10f)); |
|||
gameObject.transform.Rotate(new Vector3(0, 0, 1), Random.Range(-10f, 10f)); |
|||
m_BallRb.velocity = new Vector3(0f, 0f, 0f); |
|||
ball.transform.position = new Vector3(Random.Range(-1.5f, 1.5f), 4f, Random.Range(-1.5f, 1.5f)) |
|||
+ gameObject.transform.position; |
|||
//Reset the parameters when the Agent is reset.
|
|||
SetResetParameters(); |
|||
} |
|||
|
|||
public override void Heuristic(float[] actionsOut) |
|||
{ |
|||
actionsOut[0] = -Input.GetAxis("Horizontal"); |
|||
actionsOut[1] = Input.GetAxis("Vertical"); |
|||
} |
|||
|
|||
public void SetBall() |
|||
{ |
|||
//Set the attributes of the ball by fetching the information from the academy
|
|||
m_BallRb.mass = m_ResetParams.GetWithDefault("mass", 1.0f); |
|||
var scale = m_ResetParams.GetWithDefault("scale", 1.0f); |
|||
ball.transform.localScale = new Vector3(scale, scale, scale); |
|||
} |
|||
|
|||
public void SetResetParameters() |
|||
{ |
|||
SetBall(); |
|||
// Get agent parameters
|
|||
Debug.Log(GetParameterWithDefault("test_param", 0)); |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: 3bb324825cf6e4dd6838288011a49a2b |
|||
timeCreated: 1502223572 |
|||
licenseType: Free |
|||
MonoImporter: |
|||
serializedVersion: 2 |
|||
defaultReferences: [] |
|||
executionOrder: 0 |
|||
icon: {instanceID: 0} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
using Unity.MLAgents.Sensors; |
|||
|
|||
|
|||
public class TaskSensorComponent : SensorComponent |
|||
{ |
|||
public int observationSize; |
|||
public TaskSensor task_sensor; |
|||
/// <summary>
|
|||
/// Creates a TaskSensor.
|
|||
/// </summary>
|
|||
/// <returns></returns>
|
|||
public override ISensor CreateSensor() |
|||
{ |
|||
task_sensor = new TaskSensor(observationSize); |
|||
return task_sensor; |
|||
} |
|||
|
|||
/// <inheritdoc/>
|
|||
public override int[] GetObservationShape() |
|||
{ |
|||
return new[] { observationSize }; |
|||
} |
|||
|
|||
public void AddParameterizaton(float parameter) |
|||
{ |
|||
if(task_sensor != null) |
|||
{ |
|||
task_sensor.AddObservation(parameter); |
|||
} |
|||
} |
|||
} |
|||
|
|||
public class TaskSensor : VectorSensor |
|||
{ |
|||
|
|||
public TaskSensor(int observationSize, string name = null) : base(observationSize) |
|||
{ |
|||
if (name == null) |
|||
{ |
|||
name = $"TaskSensor_size{observationSize}"; |
|||
} |
|||
} |
|||
|
|||
public override SensorType GetSensorType() |
|||
{ |
|||
return SensorType.Parameterization; |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: 176ce9d33a1e6436e87ae60ed5d5a450 |
|||
MonoImporter: |
|||
externalObjects: {} |
|||
serializedVersion: 2 |
|||
defaultReferences: [] |
|||
executionOrder: 0 |
|||
icon: {instanceID: 0} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
252
Project/Assets/ML-Agents/Examples/3DBall/TFModels/My3DBall.nn
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
|
|||
fileFormatVersion: 2 |
|||
guid: 5fa1fb7f873d34cb5aad88303fef876d |
|||
ScriptedImporter: |
|||
fileIDToRecycleName: |
|||
11400000: main obj |
|||
11400002: model data |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|||
script: {fileID: 11500000, guid: 19ed1486aa27d4903b34839f37b8f69f, type: 3} |
|
|||
fileFormatVersion: 2 |
|||
guid: f0d7741d9e06247f6843b921a206b978 |
|||
PrefabImporter: |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: 88818c9b63c96424aa8e0fca85552133 |
|||
folderAsset: yes |
|||
DefaultImporter: |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
%YAML 1.1 |
|||
%TAG !u! tag:unity3d.com,2011: |
|||
--- !u!1 &6907050159044240885 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 6902197503240654641} |
|||
- component: {fileID: 6894500521640151429} |
|||
- component: {fileID: 6885223417161833361} |
|||
- component: {fileID: 6859132155796343735} |
|||
m_Layer: 0 |
|||
m_Name: Wall (1) |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 4294967295 |
|||
m_IsActive: 1 |
|||
--- !u!4 &6902197503240654641 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 6907050159044240885} |
|||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
|||
m_LocalPosition: {x: -50, y: 0, z: 0} |
|||
m_LocalScale: {x: 1, y: 5, z: 101} |
|||
m_Children: [] |
|||
m_Father: {fileID: 6902102727328990095} |
|||
m_RootOrder: 1 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
--- !u!33 &6894500521640151429 |
|||
MeshFilter: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 6907050159044240885} |
|||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} |
|||
--- !u!23 &6885223417161833361 |
|||
MeshRenderer: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 6907050159044240885} |
|||
m_Enabled: 1 |
|||
m_CastShadows: 1 |
|||
m_ReceiveShadows: 1 |
|||
m_DynamicOccludee: 1 |
|||
m_MotionVectors: 1 |
|||
m_LightProbeUsage: 1 |
|||
m_ReflectionProbeUsage: 1 |
|||
m_RenderingLayerMask: 1 |
|||
m_RendererPriority: 0 |
|||
m_Materials: |
|||
- {fileID: 2100000, guid: 66163cf35956a4be08e801b750c26f33, type: 2} |
|||
m_StaticBatchInfo: |
|||
firstSubMesh: 0 |
|||
subMeshCount: 0 |
|||
m_StaticBatchRoot: {fileID: 0} |
|||
m_ProbeAnchor: {fileID: 0} |
|||
m_LightProbeVolumeOverride: {fileID: 0} |
|||
m_ScaleInLightmap: 1 |
|||
m_PreserveUVs: 0 |
|||
m_IgnoreNormalsForChartDetection: 0 |
|||
m_ImportantGI: 0 |
|||
m_StitchLightmapSeams: 0 |
|||
m_SelectedEditorRenderState: 3 |
|||
m_MinimumChartSize: 4 |
|||
m_AutoUVMaxDistance: 0.5 |
|||
m_AutoUVMaxAngle: 89 |
|||
m_LightmapParameters: {fileID: 0} |
|||
m_SortingLayerID: 0 |
|||
m_SortingLayer: 0 |
|||
m_SortingOrder: 0 |
|||
--- !u!65 &6859132155796343735 |
|||
BoxCollider: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 6907050159044240885} |
|||
m_Material: {fileID: 0} |
|||
m_IsTrigger: 0 |
|||
m_Enabled: 1 |
|||
serializedVersion: 2 |
|||
m_Size: {x: 1, y: 1, z: 1} |
|||
m_Center: {x: 0, y: 0, z: 0} |
|||
--- !u!1 &6907401236047902865 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 6902265967514060089} |
|||
- component: {fileID: 6891025662345346653} |
|||
- component: {fileID: 6859036447448677835} |
|||
- component: {fileID: 6884684845870454579} |
|||
m_Layer: 14 |
|||
m_Name: Ground |
|||
m_TagString: ground |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 4294967295 |
|||
m_IsActive: 1 |
|||
--- !u!4 &6902265967514060089 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 6907401236047902865} |
|||
m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} |
|||
m_LocalPosition: {x: 0, y: 0, z: 0} |
|||
m_LocalScale: {x: 100, y: 1, z: 100} |
|||
m_Children: [] |
|||
m_Father: {fileID: 6902107422946006027} |
|||
m_RootOrder: 1 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} |
|||
--- !u!33 &6891025662345346653 |
|||
MeshFilter: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 6907401236047902865} |
|||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} |
|||
--- !u!65 &6859036447448677835 |
|||
BoxCollider: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 6907401236047902865} |
|||
m_Material: {fileID: 0} |
|||
m_IsTrigger: 0 |
|||
m_Enabled: 1 |
|||
serializedVersion: 2 |
|||
m_Size: {x: 1, y: 1, z: 1} |
|||
m_Center: {x: 0, y: 0, z: 0} |
|||
--- !u!23 &6884684845870454579 |
|||
MeshRenderer: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 6907401236047902865} |
|||
m_Enabled: 1 |
|||
m_CastShadows: 1 |
|||
m_ReceiveShadows: 1 |
|||
m_DynamicOccludee: 1 |
|||
m_MotionVectors: 1 |
|||
m_LightProbeUsage: 1 |
|||
m_ReflectionProbeUsage: 1 |
|||
m_RenderingLayerMask: 1 |
|||
m_RendererPriority: 0 |
|||
m_Materials: |
|||
- {fileID: 2100000, guid: acba6bf2a290a496bb8989b42bf8698d, type: 2} |
|||
m_StaticBatchInfo: |
|||
firstSubMesh: 0 |
|||
subMeshCount: 0 |
|||
m_StaticBatchRoot: {fileID: 0} |
|||
m_ProbeAnchor: {fileID: 0} |
|||
m_LightProbeVolumeOverride: {fileID: 0} |
|||
m_ScaleInLightmap: 1 |
|||
m_PreserveUVs: 1 |
|||
m_IgnoreNormalsForChartDetection: 0 |
|||
m_ImportantGI: 0 |
|||
m_StitchLightmapSeams: 0 |
|||
m_SelectedEditorRenderState: 3 |
|||
m_MinimumChartSize: 4 |
|||
m_AutoUVMaxDistance: 0.5 |
|||
m_AutoUVMaxAngle: 89 |
|||
m_LightmapParameters: {fileID: 0} |
|||
m_SortingLayerID: 0 |
|||
m_SortingLayer: 0 |
|||
m_SortingOrder: 0 |
|||
--- !u!1 &6907666814270504157 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 6902102727328990095} |
|||
m_Layer: 0 |
|||
m_Name: Walls |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 4294967295 |
|||
m_IsActive: 1 |
|||
--- !u!4 &6902102727328990095 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 6907666814270504157} |
|||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
|||
m_LocalPosition: {x: 0, y: 2, z: 0} |
|||
m_LocalScale: {x: 1, y: 1, z: 1} |
|||
m_Children: |
|||
- {fileID: 6901873285403999439} |
|||
- {fileID: 6902197503240654641} |
|||
- {fileID: 6901900959948323433} |
|||
- {fileID: 6905948743199606957} |
|||
m_Father: {fileID: 6902107422946006027} |
|||
m_RootOrder: 0 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
--- !u!1 &6907680617094430597 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 6901873285403999439} |
|||
- component: {fileID: 6894618984257886823} |
|||
- component: {fileID: 6884854148710353183} |
|||
- component: {fileID: 6863062098498978603} |
|||
m_Layer: 0 |
|||
m_Name: Wall |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 4294967295 |
|||
m_IsActive: 1 |
|||
--- !u!4 &6901873285403999439 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 6907680617094430597} |
|||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
|||
m_LocalPosition: {x: 50, y: 0, z: 0} |
|||
m_LocalScale: {x: 1, y: 5, z: 101} |
|||
m_Children: [] |
|||
m_Father: {fileID: 6902102727328990095} |
|||
m_RootOrder: 0 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
--- !u!33 &6894618984257886823 |
|||
MeshFilter: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 6907680617094430597} |
|||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} |
|||
--- !u!23 &6884854148710353183 |
|||
MeshRenderer: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 6907680617094430597} |
|||
m_Enabled: 1 |
|||
m_CastShadows: 1 |
|||
m_ReceiveShadows: 1 |
|||
m_DynamicOccludee: 1 |
|||
m_MotionVectors: 1 |
|||
m_LightProbeUsage: 1 |
|||
m_ReflectionProbeUsage: 1 |
|||
m_RenderingLayerMask: 1 |
|||
m_RendererPriority: 0 |
|||
m_Materials: |
|||
- {fileID: 2100000, guid: 66163cf35956a4be08e801b750c26f33, type: 2} |
|||
m_StaticBatchInfo: |
|||
firstSubMesh: 0 |
|||
subMeshCount: 0 |
|||
m_StaticBatchRoot: {fileID: 0} |
|||
m_ProbeAnchor: {fileID: 0} |
|||
m_LightProbeVolumeOverride: {fileID: 0} |
|||
m_ScaleInLightmap: 1 |
|||
m_PreserveUVs: 0 |
|||
m_IgnoreNormalsForChartDetection: 0 |
|||
m_ImportantGI: 0 |
|||
m_StitchLightmapSeams: 0 |
|||
m_SelectedEditorRenderState: 3 |
|||
m_MinimumChartSize: 4 |
|||
m_AutoUVMaxDistance: 0.5 |
|||
m_AutoUVMaxAngle: 89 |
|||
m_LightmapParameters: {fileID: 0} |
|||
m_SortingLayerID: 0 |
|||
m_SortingLayer: 0 |
|||
m_SortingOrder: 0 |
|||
--- !u!65 &6863062098498978603 |
|||
BoxCollider: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 6907680617094430597} |
|||
m_Material: {fileID: 0} |
|||
m_IsTrigger: 0 |
|||
m_Enabled: 1 |
|||
serializedVersion: 2 |
|||
m_Size: {x: 1, y: 1, z: 1} |
|||
m_Center: {x: 0, y: 0, z: 0} |
|||
--- !u!1 &6907740118844148851 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 6902107422946006027} |
|||
m_Layer: 0 |
|||
m_Name: PlatformDynamicTarget |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!4 &6902107422946006027 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 6907740118844148851} |
|||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
|||
m_LocalPosition: {x: 0, y: 0, z: 0} |
|||
m_LocalScale: {x: 1, y: 1, z: 1} |
|||
m_Children: |
|||
- {fileID: 6902102727328990095} |
|||
- {fileID: 6902265967514060089} |
|||
m_Father: {fileID: 0} |
|||
m_RootOrder: 0 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
--- !u!1 &6907828132384848309 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 6905948743199606957} |
|||
- component: {fileID: 6894463671975680535} |
|||
- component: {fileID: 6884868534516719387} |
|||
- component: {fileID: 6859048605259525735} |
|||
m_Layer: 0 |
|||
m_Name: Wall (3) |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 4294967295 |
|||
m_IsActive: 1 |
|||
--- !u!4 &6905948743199606957 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 6907828132384848309} |
|||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
|||
m_LocalPosition: {x: 0, y: 0, z: -50} |
|||
m_LocalScale: {x: 100, y: 5, z: 1} |
|||
m_Children: [] |
|||
m_Father: {fileID: 6902102727328990095} |
|||
m_RootOrder: 3 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
--- !u!33 &6894463671975680535 |
|||
MeshFilter: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 6907828132384848309} |
|||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} |
|||
--- !u!23 &6884868534516719387 |
|||
MeshRenderer: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 6907828132384848309} |
|||
m_Enabled: 1 |
|||
m_CastShadows: 1 |
|||
m_ReceiveShadows: 1 |
|||
m_DynamicOccludee: 1 |
|||
m_MotionVectors: 1 |
|||
m_LightProbeUsage: 1 |
|||
m_ReflectionProbeUsage: 1 |
|||
m_RenderingLayerMask: 1 |
|||
m_RendererPriority: 0 |
|||
m_Materials: |
|||
- {fileID: 2100000, guid: 66163cf35956a4be08e801b750c26f33, type: 2} |
|||
m_StaticBatchInfo: |
|||
firstSubMesh: 0 |
|||
subMeshCount: 0 |
|||
m_StaticBatchRoot: {fileID: 0} |
|||
m_ProbeAnchor: {fileID: 0} |
|||
m_LightProbeVolumeOverride: {fileID: 0} |
|||
m_ScaleInLightmap: 1 |
|||
m_PreserveUVs: 0 |
|||
m_IgnoreNormalsForChartDetection: 0 |
|||
m_ImportantGI: 0 |
|||
m_StitchLightmapSeams: 0 |
|||
m_SelectedEditorRenderState: 3 |
|||
m_MinimumChartSize: 4 |
|||
m_AutoUVMaxDistance: 0.5 |
|||
m_AutoUVMaxAngle: 89 |
|||
m_LightmapParameters: {fileID: 0} |
|||
m_SortingLayerID: 0 |
|||
m_SortingLayer: 0 |
|||
m_SortingOrder: 0 |
|||
--- !u!65 &6859048605259525735 |
|||
BoxCollider: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 6907828132384848309} |
|||
m_Material: {fileID: 0} |
|||
m_IsTrigger: 0 |
|||
m_Enabled: 1 |
|||
serializedVersion: 2 |
|||
m_Size: {x: 1, y: 1, z: 1} |
|||
m_Center: {x: 0, y: 0, z: 0} |
|||
--- !u!1 &6907860845836169157 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 6901900959948323433} |
|||
- component: {fileID: 6893927248293796423} |
|||
- component: {fileID: 6885176866006237333} |
|||
- component: {fileID: 6859395915623032135} |
|||
m_Layer: 0 |
|||
m_Name: Wall (2) |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 4294967295 |
|||
m_IsActive: 1 |
|||
--- !u!4 &6901900959948323433 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 6907860845836169157} |
|||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
|||
m_LocalPosition: {x: 0, y: 0, z: 50} |
|||
m_LocalScale: {x: 100, y: 5, z: 1} |
|||
m_Children: [] |
|||
m_Father: {fileID: 6902102727328990095} |
|||
m_RootOrder: 2 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
--- !u!33 &6893927248293796423 |
|||
MeshFilter: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 6907860845836169157} |
|||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} |
|||
--- !u!23 &6885176866006237333 |
|||
MeshRenderer: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 6907860845836169157} |
|||
m_Enabled: 1 |
|||
m_CastShadows: 1 |
|||
m_ReceiveShadows: 1 |
|||
m_DynamicOccludee: 1 |
|||
m_MotionVectors: 1 |
|||
m_LightProbeUsage: 1 |
|||
m_ReflectionProbeUsage: 1 |
|||
m_RenderingLayerMask: 1 |
|||
m_RendererPriority: 0 |
|||
m_Materials: |
|||
- {fileID: 2100000, guid: 66163cf35956a4be08e801b750c26f33, type: 2} |
|||
m_StaticBatchInfo: |
|||
firstSubMesh: 0 |
|||
subMeshCount: 0 |
|||
m_StaticBatchRoot: {fileID: 0} |
|||
m_ProbeAnchor: {fileID: 0} |
|||
m_LightProbeVolumeOverride: {fileID: 0} |
|||
m_ScaleInLightmap: 1 |
|||
m_PreserveUVs: 0 |
|||
m_IgnoreNormalsForChartDetection: 0 |
|||
m_ImportantGI: 0 |
|||
m_StitchLightmapSeams: 0 |
|||
m_SelectedEditorRenderState: 3 |
|||
m_MinimumChartSize: 4 |
|||
m_AutoUVMaxDistance: 0.5 |
|||
m_AutoUVMaxAngle: 89 |
|||
m_LightmapParameters: {fileID: 0} |
|||
m_SortingLayerID: 0 |
|||
m_SortingLayer: 0 |
|||
m_SortingOrder: 0 |
|||
--- !u!65 &6859395915623032135 |
|||
BoxCollider: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 6907860845836169157} |
|||
m_Material: {fileID: 0} |
|||
m_IsTrigger: 0 |
|||
m_Enabled: 1 |
|||
serializedVersion: 2 |
|||
m_Size: {x: 1, y: 1, z: 1} |
|||
m_Center: {x: 0, y: 0, z: 0} |
|
|||
fileFormatVersion: 2 |
|||
guid: d0bff0b25f0d247f8a3951edb90cc71a |
|||
ScriptedImporter: |
|||
fileIDToRecycleName: |
|||
11400002: Assets/ML-Agents/Examples/Walker/Demos/ExpertWalkerDy.demo |
|||
externalObjects: {} |
|||
userData: ' (Unity.MLAgents.Demonstrations.DemonstrationSummary)' |
|||
assetBundleName: |
|||
assetBundleVariant: |
|||
script: {fileID: 11500000, guid: 7bd65ce151aaa4a41a45312543c56be1, type: 3} |
|
|||
fileFormatVersion: 2 |
|||
guid: 023d43e719a4140a2a683974ce7bb955 |
|||
ScriptedImporter: |
|||
fileIDToRecycleName: |
|||
11400002: Assets/ML-Agents/Examples/Walker/Demos/ExpertWalkerDyVS.demo |
|||
externalObjects: {} |
|||
userData: ' (Unity.MLAgents.Demonstrations.DemonstrationSummary)' |
|||
assetBundleName: |
|||
assetBundleVariant: |
|||
script: {fileID: 11500000, guid: 7bd65ce151aaa4a41a45312543c56be1, type: 3} |
|
|||
fileFormatVersion: 2 |
|||
guid: 6568f9aea39f34581b4df153e4a8bdd3 |
|||
ScriptedImporter: |
|||
fileIDToRecycleName: |
|||
11400002: Assets/ML-Agents/Examples/Walker/Demos/ExpertWalkerSt.demo |
|||
externalObjects: {} |
|||
userData: ' (Unity.MLAgents.Demonstrations.DemonstrationSummary)' |
|||
assetBundleName: |
|||
assetBundleVariant: |
|||
script: {fileID: 11500000, guid: 7bd65ce151aaa4a41a45312543c56be1, type: 3} |
|
|||
fileFormatVersion: 2 |
|||
guid: 06aba1fa7650441b1bc832f52f9801ee |
|||
ScriptedImporter: |
|||
fileIDToRecycleName: |
|||
11400002: Assets/ML-Agents/Examples/Walker/Demos/ExpertWalkerStVS.demo |
|||
externalObjects: {} |
|||
userData: ' (Unity.MLAgents.Demonstrations.DemonstrationSummary)' |
|||
assetBundleName: |
|||
assetBundleVariant: |
|||
script: {fileID: 11500000, guid: 7bd65ce151aaa4a41a45312543c56be1, type: 3} |
|
|||
fileFormatVersion: 2 |
|||
guid: d64d77dc566364a31896e5da2ac8534b |
|||
folderAsset: yes |
|||
DefaultImporter: |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: cd296ba30964e4cf086044f1a7618c0b |
|||
folderAsset: yes |
|||
DefaultImporter: |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: 0295e51cc064f41b28ef97e70902cf13 |
|||
timeCreated: 1520420566 |
|||
licenseType: Free |
|||
DefaultImporter: |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
1001
Project/Assets/ML-Agents/Examples/Walker/Scenes/WalkerDynamicVariableSpeed.unity
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
|
|||
fileFormatVersion: 2 |
|||
guid: 2b839ee93e7a4467f9f8b4803c4a239b |
|||
DefaultImporter: |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
1001
Project/Assets/ML-Agents/Examples/Walker/Scenes/WalkerStaticVariableSpeed.unity
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
1001
Project/Assets/ML-Agents/Examples/Walker/TFModels/WalkerDynamicVariableSpeed.nn
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
|
|||
fileFormatVersion: 2 |
|||
guid: 1a6e4a4e15a5d49a7acac1f78bc1f514 |
|||
ScriptedImporter: |
|||
fileIDToRecycleName: |
|||
11400000: main obj |
|||
11400002: model data |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|||
script: {fileID: 11500000, guid: 19ed1486aa27d4903b34839f37b8f69f, type: 3} |
1001
Project/Assets/ML-Agents/Examples/Walker/TFModels/WalkerDynamic.nn
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
|
|||
fileFormatVersion: 2 |
|||
guid: 2c37bf93cad864ba5a91689aa40eba6d |
|||
ScriptedImporter: |
|||
fileIDToRecycleName: |
|||
11400000: main obj |
|||
11400002: model data |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|||
script: {fileID: 11500000, guid: 19ed1486aa27d4903b34839f37b8f69f, type: 3} |
1001
Project/Assets/ML-Agents/Examples/Walker/TFModels/WalkerStaticVariableSpeed.nn
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
|
|||
fileFormatVersion: 2 |
|||
guid: a473273f582f94ecbbb2df833dd7251d |
|||
ScriptedImporter: |
|||
fileIDToRecycleName: |
|||
11400000: main obj |
|||
11400002: model data |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|||
script: {fileID: 11500000, guid: 19ed1486aa27d4903b34839f37b8f69f, type: 3} |
|
|||
fileFormatVersion: 2 |
|||
guid: a4c86e35548874a8d80fa1c183b68018 |
|||
folderAsset: yes |
|||
DefaultImporter: |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: d7305d5b0d0e24dd494eabf514fa7801 |
|||
folderAsset: yes |
|||
DefaultImporter: |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: 774a63148bc504bbea95350864917703 |
|||
folderAsset: yes |
|||
DefaultImporter: |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
behaviors: |
|||
WalkerDynamicVariableSpeed: |
|||
trainer_type: ppo |
|||
hyperparameters: |
|||
batch_size: 2048 |
|||
buffer_size: 20480 |
|||
learning_rate: 0.0003 |
|||
beta: 0.005 |
|||
epsilon: 0.2 |
|||
lambd: 0.95 |
|||
num_epoch: 3 |
|||
learning_rate_schedule: linear |
|||
network_settings: |
|||
normalize: true |
|||
hidden_units: 512 |
|||
num_layers: 3 |
|||
vis_encode_type: simple |
|||
reward_signals: |
|||
extrinsic: |
|||
gamma: 0.995 |
|||
strength: 1.0 |
|||
keep_checkpoints: 5 |
|||
max_steps: 30000000 |
|||
time_horizon: 1000 |
|||
summary_freq: 30000 |
|||
threaded: true |
|
|||
behaviors: |
|||
RollerBall: |
|||
trainer_type: ppo |
|||
hyperparameters: |
|||
batch_size: 64 |
|||
buffer_size: 12000 |
|||
learning_rate: 0.0003 |
|||
beta: 0.001 |
|||
epsilon: 0.2 |
|||
lambd: 0.99 |
|||
num_epoch: 5 |
|||
learning_rate_schedule: linear |
|||
network_settings: |
|||
normalize: true |
|||
hidden_units: 64 |
|||
num_layers: 2 |
|||
vis_encode_type: simple |
|||
reward_signals: |
|||
extrinsic: |
|||
gamma: 0.995 |
|||
strength: 1.0 |
|||
output_path: default |
|||
keep_checkpoints: 5 |
|||
max_steps: 1000000 |
|||
time_horizon: 1000 |
|||
summary_freq: 12000 |
|||
threaded: true |
|
|||
behaviors: |
|||
WalkerStaticVariableSpeed: |
|||
trainer_type: ppo |
|||
hyperparameters: |
|||
batch_size: 2048 |
|||
buffer_size: 20480 |
|||
learning_rate: 0.0003 |
|||
beta: 0.005 |
|||
epsilon: 0.2 |
|||
lambd: 0.95 |
|||
num_epoch: 3 |
|||
learning_rate_schedule: linear |
|||
network_settings: |
|||
normalize: true |
|||
hidden_units: 512 |
|||
num_layers: 3 |
|||
vis_encode_type: simple |
|||
reward_signals: |
|||
extrinsic: |
|||
gamma: 0.995 |
|||
strength: 1.0 |
|||
keep_checkpoints: 5 |
|||
max_steps: 30000000 |
|||
time_horizon: 1000 |
|||
summary_freq: 30000 |
|||
threaded: true |
|||
agent_parameters: |
|||
WalkerStaticVariableSpeed: |
|||
num_repeat: 1 |
|||
num_batch: 1 |
|||
targetWalkingSpeed: |
|||
sampler_type: uniform |
|||
sampler_parameters: |
|||
min_value: 0.1 |
|||
max_value: 10 |
|
|||
behaviors: |
|||
WalkerStaticVariableSpeed: |
|||
trainer_type: ppo |
|||
hyperparameters: |
|||
batch_size: 2048 |
|||
buffer_size: 20480 |
|||
learning_rate: 0.0003 |
|||
beta: 0.005 |
|||
epsilon: 0.2 |
|||
lambd: 0.95 |
|||
num_epoch: 3 |
|||
learning_rate_schedule: linear |
|||
network_settings: |
|||
normalize: true |
|||
hidden_units: 512 |
|||
num_layers: 3 |
|||
vis_encode_type: simple |
|||
reward_signals: |
|||
extrinsic: |
|||
gamma: 0.995 |
|||
strength: 1.0 |
|||
keep_checkpoints: 5 |
|||
max_steps: 30000000 |
|||
time_horizon: 1000 |
|||
summary_freq: 30000 |
|||
threaded: true |
|||
agent_parameters: |
|||
WalkerStaticVariableSpeed: |
|||
num_repeat: 8 |
|||
num_batch: 16 |
|||
active_learner: |
|||
warmup_steps: 600 |
|||
capacity: 600 |
|||
num_mc: 100 |
|||
beta: 1.96 |
|||
raw_samples: 100 |
|||
num_restarts: 1 |
|||
targetWalkingSpeed: |
|||
sampler_type: uniform |
|||
sampler_parameters: |
|||
min_value: 0.1 |
|||
max_value: 10 |
|
|||
import torch |
|||
from torch import Tensor |
|||
|
|||
|
|||
from botorch import settings |
|||
from botorch.acquisition.monte_carlo import MCAcquisitionFunction |
|||
from botorch.acquisition.objective import ScalarizedObjective, IdentityMCObjective |
|||
from botorch.models.gpytorch import GPyTorchModel |
|||
|
|||
from botorch.models.model import Model |
|||
from botorch.models import SingleTaskGP |
|||
from botorch.sampling.samplers import MCSampler, SobolQMCNormalSampler |
|||
from botorch.utils.transforms import concatenate_pending_points, t_batch_mode_transform |
|||
from botorch.fit import fit_gpytorch_model |
|||
from botorch.optim import optimize_acqf_cyclic, optimize_acqf |
|||
from botorch.optim.initializers import initialize_q_batch_nonneg |
|||
|
|||
from gpytorch.likelihoods import GaussianLikelihood |
|||
from gpytorch.distributions import MultivariateNormal |
|||
from gpytorch.means import ConstantMean |
|||
from gpytorch.models import ExactGP |
|||
from gpytorch.mlls import ExactMarginalLogLikelihood |
|||
from gpytorch.kernels import ScaleKernel, RBFKernel, Kernel, ProductKernel, AdditiveKernel, GridInterpolationKernel, AdditiveStructureKernel, ProductStructureKernel |
|||
from gpytorch.utils.grid import choose_grid_size |
|||
|
|||
from typing import Optional, Union |
|||
|
|||
|
|||
|
|||
class qEISP(MCAcquisitionFunction): |
|||
|
|||
def __init__( |
|||
self, |
|||
model: Model, |
|||
beta: Union[float, Tensor], |
|||
mc_points: Tensor, |
|||
sampler: Optional[MCSampler] = None, |
|||
objective: Optional[ScalarizedObjective] = None, |
|||
X_pending: Optional[Tensor] = None, |
|||
maximize: bool = True, |
|||
) -> None: |
|||
r"""q-Espected Improvement of Skill Performance. |
|||
|
|||
Args: |
|||
model: A fitted model. |
|||
beta: value to trade off between upper confidence bound and mean of fantasized performance. |
|||
mc_points: A `batch_shape x N x d` tensor of points to use for |
|||
MC-integrating the posterior variance. Usually, these are qMC |
|||
samples on the whole design space, but biased sampling directly |
|||
allows weighted integration of the posterior variance. |
|||
sampler: The sampler used for drawing fantasy samples. In the basic setting |
|||
of a standard GP (default) this is a dummy, since the variance of the |
|||
model after conditioning does not actually depend on the sampled values. |
|||
objective: A ScalarizedObjective. Required for multi-output models. |
|||
X_pending: A `n' x d`-dim Tensor of `n'` design points that have |
|||
points that have been submitted for function evaluation but |
|||
have not yet been evaluated. |
|||
maximize: If true uses the UCB of performance scaled by beta, else it uses LCB |
|||
|
|||
Docstring from BOTorch class and same with comments below |
|||
""" |
|||
super().__init__(model=model, objective=objective) |
|||
if sampler is None: |
|||
# If no sampler is provided, we use the following dummy sampler for the |
|||
# fantasize() method in forward. IMPORTANT: This assumes that the posterior |
|||
# variance does not depend on the samples y (only on x), which is true for |
|||
# standard GP models, but not in general (e.g. for other likelihoods or |
|||
# heteroskedastic GPs using a separate noise model fit on data). |
|||
sampler = SobolQMCNormalSampler( |
|||
num_samples=1, resample=False, collapse_batch_dims=True |
|||
) |
|||
if not torch.is_tensor(beta): |
|||
beta = torch.tensor(beta) |
|||
self.register_buffer("beta", beta) |
|||
self.sampler = sampler |
|||
self.X_pending = X_pending |
|||
self.register_buffer("mc_points", mc_points) |
|||
self.maximize = maximize |
|||
|
|||
@concatenate_pending_points |
|||
@t_batch_mode_transform() |
|||
def forward(self, X: Tensor) -> Tensor: |
|||
self.beta = self.beta.to(X) |
|||
with settings.propagate_grads(True): |
|||
posterior = self.model.posterior(X=X) |
|||
batch_shape = X.shape[:-2] |
|||
mean = posterior.mean.view(*batch_shape, X.shape[-2], -1) |
|||
variance = posterior.variance.view(*batch_shape, X.shape[-2], -1) |
|||
delta = self.beta.expand_as(mean) * variance.sqrt() |
|||
|
|||
if self.maximize: |
|||
Yhat = mean + delta |
|||
else: |
|||
Yhat = mean - delta |
|||
|
|||
bdims = tuple(1 for _ in X.shape[:-2]) |
|||
if self.model.num_outputs > 1: |
|||
# We use q=1 here b/c ScalarizedObjective currently does not fully exploit |
|||
# lazy tensor operations and thus may be slow / overly memory-hungry. |
|||
# TODO (T52818288): Properly use lazy tensors in scalarize_posterior |
|||
mc_points = self.mc_points.view(-1, *bdims, 1, X.size(-1)) |
|||
else: |
|||
# While we only need marginal variances, we can evaluate for q>1 |
|||
# b/c for GPyTorch models lazy evaluation can make this quite a bit |
|||
# faster than evaluting in t-batch mode with q-batch size of 1 |
|||
mc_points = self.mc_points.view(*bdims, -1, X.size(-1)) |
|||
|
|||
Yhat = Yhat.view(*batch_shape, X.shape[-2], -1) |
|||
|
|||
fantasy_model = self.model.condition_on_observations(X=X, Y=Yhat) |
|||
|
|||
posterior1 = self.model.posterior(mc_points) |
|||
posterior2 = fantasy_model.posterior(mc_points) |
|||
|
|||
# transform with the scalarized objective |
|||
posterior1 = self.objective(posterior1.mean) |
|||
posterior2 = self.objective(posterior2.mean) |
|||
|
|||
improvement = posterior2 - posterior1 |
|||
|
|||
return improvement.mean(dim=-1) |
|||
|
|||
|
|||
|
|||
class StandardActiveLearningGP(ExactGP, GPyTorchModel): |
|||
|
|||
_num_outputs = 1 # to inform GPyTorchModel API |
|||
|
|||
def __init__(self, train_X, train_Y, bounds=None): |
|||
# squeeze output dim before passing train_Y to ExactGP |
|||
super(StandardActiveLearningGP, self).__init__(train_X, train_Y.squeeze(-1), GaussianLikelihood()) |
|||
self.mean_module = ConstantMean() |
|||
xdims = train_X.shape[-1] |
|||
self.Kspatial = ScaleKernel(RBFKernel(active_dims=torch.tensor(list(range(xdims-1))))) |
|||
self.Ktime = ScaleKernel(RBFKernel(active_dims=torch.tensor([xdims-1]))) |
|||
|
|||
self.covar_module = AdditiveKernel(self.Kspatial, ProductKernel(self.Kspatial, self.Ktime)) |
|||
self.to(train_X) # make sure we're on the right device/dtype |
|||
|
|||
def forward(self, x): |
|||
mean_x = self.mean_module(x) |
|||
covar_x = self.covar_module(x) |
|||
return MultivariateNormal(mean_x, covar_x) |
|||
|
|||
class ActiveLearningTaskSampler(object): |
|||
def __init__(self,ranges, warmup_steps:int=30, capacity:int=600, num_mc:int=500, beta:float=1.96, raw_samples:int=128, num_restarts:int=1, num_batch:int=16): |
|||
self.ranges = ranges |
|||
self.warmup_steps = warmup_steps |
|||
self.capacity = capacity |
|||
self.num_mc = num_mc |
|||
self.beta = beta |
|||
self.raw_samples = raw_samples |
|||
self.num_restarts = num_restarts |
|||
self.xdim = ranges.shape[0] + 1 |
|||
self.model = None |
|||
self.mll = None |
|||
self.X = None |
|||
self.Y = None |
|||
|
|||
self.bounds = torch.tensor(ranges) |
|||
self.bounds = torch.cat([self.bounds, torch.tensor([[0.0,1.0]])]).T |
|||
|
|||
|
|||
|
|||
def update_model(self, new_X, new_Y, refit=False): |
|||
if self.X is not None: |
|||
new_X = new_X.to(self.X) |
|||
new_Y = new_Y.to(self.X) |
|||
self.X = torch.cat([self.X, new_X.to(self.X)]) |
|||
|
|||
self.Y = torch.cat([self.Y, new_Y.to(self.X)]) |
|||
if self.model is not None: |
|||
state_dict = self.model.state_dict() |
|||
else: |
|||
state_dict = None |
|||
else: |
|||
self.X = new_X.float() |
|||
self.Y = new_Y.float() |
|||
state_dict = None |
|||
|
|||
T = self.capacity |
|||
if self.X.shape[0] >= T: |
|||
self.X = self.X[-T:, :] |
|||
self.Y = self.Y[-T:, :] |
|||
|
|||
if self.X.shape[0] < self.warmup_steps: # TODO seems to throw an error if only one sample is present. Refitting should probably only happen every N data points anyways |
|||
return None |
|||
|
|||
if refit: |
|||
model = StandardActiveLearningGP(self.X, self.Y, bounds=self.bounds) |
|||
mll = ExactMarginalLogLikelihood(model.likelihood, model) |
|||
self.model = model |
|||
self.mll = mll |
|||
if state_dict is not None: |
|||
self.model.load_state_dict(state_dict) |
|||
fit_gpytorch_model(mll) |
|||
# elif self.model is not None: |
|||
# self.model.set_train_data(self.X, self.Y) |
|||
# self.model = self.model.condition_on_observations(new_X, new_Y) # TODO: might be faster than setting the data need to test |
|||
|
|||
def get_design_points(self, num_points:int=1, time=None): |
|||
if not self.model or time < self.warmup_steps: |
|||
return sample_random_points(self.bounds, num_points) |
|||
|
|||
if not time: |
|||
time = self.X[:, -1].max() + 1 |
|||
|
|||
bounds = self.bounds |
|||
bounds[:, -1] = time |
|||
num_mc = self.num_mc |
|||
mc_points = torch.rand(num_mc, bounds.size(1), device=self.X.device, dtype=self.X.dtype) |
|||
mc_points = bounds[0] + (bounds[1] - bounds[0]) * mc_points |
|||
|
|||
qeisp = qEISP(self.model, mc_points=mc_points, beta=self.beta) |
|||
try: |
|||
candidates, acq_value = optimize_acqf( |
|||
acq_function=qeisp, |
|||
bounds=bounds, |
|||
raw_samples=self.raw_samples, |
|||
q=num_points, |
|||
num_restarts=self.num_restarts, |
|||
return_best_only=True, |
|||
) |
|||
return candidates |
|||
except: |
|||
return sample_random_points(self.bounds, num_points) |
|||
|
|||
|
|||
def sample_random_points(bounds, num_points): |
|||
points = torch.rand(num_points, bounds.size(1), device=bounds.device, dtype=bounds.dtype) |
|||
points = bounds[0] + (bounds[1] - bounds[0]) * points |
|||
return points |
|||
|
|
|||
from typing import Dict, List, Tuple, Optional |
|||
from mlagents.trainers.settings import ( |
|||
TaskParameterSettings, |
|||
ParameterRandomizationSettings, |
|||
) |
|||
from collections import defaultdict |
|||
from mlagents.trainers.training_status import GlobalTrainingStatus, StatusType |
|||
|
|||
from mlagents_envs.logging_util import get_logger |
|||
|
|||
from mlagents.trainers.environment_parameter_manager import EnvironmentParameterManager |
|||
from mlagents.trainers.active_learning import ActiveLearningTaskSampler, sample_random_points |
|||
|
|||
logger = get_logger(__name__) |
|||
|
|||
import torch |
|||
import numpy as np |
|||
|
|||
class TaskManager: |
|||
def __init__( |
|||
self, |
|||
settings: Optional[Dict[str, TaskParameterSettings]] = None, |
|||
restore: bool = False, |
|||
): |
|||
""" |
|||
EnvironmentParameterManager manages all the environment parameters of a training |
|||
session. It determines when parameters should change and gives access to the |
|||
current sampler of each parameter. |
|||
:param settings: A dictionary from environment parameter to |
|||
EnvironmentParameterSettings. |
|||
:param restore: If true, the EnvironmentParameterManager will use the |
|||
GlobalTrainingStatus to try and reload the lesson status of each environment |
|||
parameter. |
|||
""" |
|||
if settings is None: |
|||
settings = {} |
|||
self._dict_settings = settings |
|||
|
|||
self.behavior_names = list(self._dict_settings.keys()) |
|||
self.param_names = {name: list(self._dict_settings[name].parameters.keys()) for name in self.behavior_names} |
|||
self._taskSamplers = {} |
|||
self.report_buffer = [] |
|||
self.num_repeat = {name: 1 for name in self.behavior_names} |
|||
self.task_completed = {name: defaultdict(list) for name in self.behavior_names} |
|||
self.num_batch = {name: 1 for name in self.behavior_names} |
|||
|
|||
for behavior_name in self.behavior_names: |
|||
lows = [] |
|||
highs = [] |
|||
parameters = self._dict_settings[behavior_name].parameters |
|||
for parameter_name in self.param_names[behavior_name]: |
|||
low = parameters[parameter_name].min_value |
|||
high = parameters[parameter_name].max_value |
|||
lows.append(low) |
|||
highs.append(high) |
|||
task_ranges = torch.tensor([lows, highs]).float().T |
|||
self.num_repeat[behavior_name] = self._dict_settings[behavior_name].num_repeat |
|||
self.num_batch[behavior_name] = self._dict_settings[behavior_name].num_batch |
|||
|
|||
active_hyps = self._dict_settings[behavior_name].active_learning |
|||
if active_hyps: # use active learning |
|||
self._taskSamplers[behavior_name] = ActiveLearningTaskSampler(task_ranges, |
|||
warmup_steps=active_hyps.warmup_steps, capacity=active_hyps.capacity, |
|||
num_mc=active_hyps.num_mc, beta=active_hyps.beta, |
|||
raw_samples=active_hyps.raw_samples, num_restarts=active_hyps.num_restarts, |
|||
) |
|||
else: # use uniform random sampling |
|||
self._taskSamplers[behavior_name] = lambda n: sample_random_points(task_ranges.T, n) |
|||
|
|||
self.t = {name: 0.0 for name in self.behavior_names} |
|||
self.counter = {name: 0 for name in self.behavior_names} |
|||
|
|||
def _make_task(self, behavior_name, tau): |
|||
""" |
|||
converts array to dictionary so it can be passed to c# side through agent parameter channel |
|||
""" |
|||
task = {} |
|||
for i, name in enumerate(self.param_names[behavior_name]): |
|||
task[name] = tau[i] |
|||
return task |
|||
|
|||
def _build_tau(self, behavior_name, task, time): |
|||
""" |
|||
converts a dictionary description of the task to a vector representation and adds the time parameter. |
|||
""" |
|||
tau = [] |
|||
for name in self.param_names[behavior_name]: |
|||
tau.append(task[name]) |
|||
tau.append(time) |
|||
return torch.tensor(tau).float() |
|||
|
|||
def get_tasks(self, behavior_name, num_samples) -> Dict[str, ParameterRandomizationSettings]: |
|||
""" |
|||
Samples task parameters to pass to agents |
|||
""" |
|||
behavior_name = [bname for bname in self.behavior_names if bname in behavior_name][0] # TODO make work with actual behavior names |
|||
current_time = self.t[behavior_name] + 1 |
|||
|
|||
if isinstance(self._taskSamplers[behavior_name], ActiveLearningTaskSampler): |
|||
num_points = max(num_samples, self.num_batch[behavior_name]) |
|||
taus = self._taskSamplers[behavior_name].get_design_points(num_points=num_points, time=current_time).data.numpy().tolist() |
|||
else: |
|||
taus = self._taskSamplers[behavior_name](num_samples).tolist() |
|||
# print("sampled taus", current_time, taus) |
|||
tasks = [self._make_task(behavior_name, tau) for tau in taus] |
|||
self.report_buffer.extend(tasks) |
|||
tasks_repeated = [] |
|||
for i in range(self.num_repeat[behavior_name]): |
|||
tasks_repeated.extend(tasks) |
|||
|
|||
return tasks_repeated |
|||
|
|||
def add_run(self, behavior_name, tau, perf): |
|||
""" |
|||
adds a finished run to the buffer organized by tau |
|||
""" |
|||
k = tuple(tau.data.numpy().flatten()[:-1].tolist()) |
|||
self.task_completed[behavior_name][k].append(perf) |
|||
|
|||
def get_data(self, behavior_name, last=True): |
|||
""" |
|||
Compiles performances that have been completed |
|||
""" |
|||
taus = [] |
|||
perfs = [] |
|||
t = self.t[behavior_name] |
|||
for k, v in self.task_completed[behavior_name].items(): |
|||
tau = torch.tensor(k + (t,)).float() |
|||
taus.append(tau) |
|||
if last: |
|||
perf = v[-1] |
|||
else: |
|||
perf = np.mean(v) |
|||
perfs.append(perf) |
|||
|
|||
X = torch.stack(taus, dim=0) |
|||
Y = torch.tensor(perfs).float().reshape(-1, 1) |
|||
return X, Y |
|||
|
|||
|
|||
def update(self, behavior_name: str, task_perfs: List[Tuple[Dict, float]] |
|||
) -> Tuple[bool, bool]: |
|||
""" |
|||
Updates the model of the task performance |
|||
""" |
|||
|
|||
must_reset = False |
|||
updated = False |
|||
behavior_name = [bname for bname in self.behavior_names if bname in behavior_name][0] # TODO make work with actual behavior names |
|||
if isinstance(self._taskSamplers[behavior_name], ActiveLearningTaskSampler): |
|||
for task, perf in task_perfs: |
|||
# perfs.append(perf) |
|||
# self.t[behavior_name] = self.t[behavior_name] + 1 |
|||
tau = self._build_tau(behavior_name, task, self.t[behavior_name]) |
|||
# taus.append(tau) |
|||
self.add_run(behavior_name, tau, perf) |
|||
|
|||
N = len(task_perfs) |
|||
self.counter[behavior_name] += N |
|||
M = self.num_repeat[behavior_name] * self.num_batch[behavior_name] |
|||
if self.counter[behavior_name] >= M: |
|||
updated = True |
|||
self.t[behavior_name] += 1 |
|||
X, Y = self.get_data(behavior_name, last=True) |
|||
self.task_completed[behavior_name] = defaultdict(list) |
|||
self._taskSamplers[behavior_name].update_model(X, Y, refit=True) |
|||
|
|||
return updated, must_reset |
|||
|
|||
|
|||
def uniform_sample(ranges, num_samples): |
|||
low = ranges[:, 0] |
|||
high = ranges[:, 1] |
|||
points = np.random.uniform(low=low, high=high, size=num_samples).reshape(num_samples, -1) |
|||
return points |
|
|||
%YAML 1.1 |
|||
%TAG !u! tag:unity3d.com,2011: |
|||
--- !u!1 &3840539935788495952 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 3839136118347789758} |
|||
- component: {fileID: 3836793085241645916} |
|||
- component: {fileID: 3868551391811062596} |
|||
- component: {fileID: 3826955612593018128} |
|||
- component: {fileID: 3858402326794362026} |
|||
- component: {fileID: 3631016866778687563} |
|||
m_Layer: 0 |
|||
m_Name: DynamicTarget |
|||
m_TagString: target |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!4 &3839136118347789758 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 3840539935788495952} |
|||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
|||
m_LocalPosition: {x: 0, y: 1, z: 1} |
|||
m_LocalScale: {x: 1, y: 1, z: 1} |
|||
m_Children: [] |
|||
m_Father: {fileID: 0} |
|||
m_RootOrder: 0 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
--- !u!33 &3836793085241645916 |
|||
MeshFilter: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 3840539935788495952} |
|||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} |
|||
--- !u!65 &3868551391811062596 |
|||
BoxCollider: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 3840539935788495952} |
|||
m_Material: {fileID: 0} |
|||
m_IsTrigger: 0 |
|||
m_Enabled: 1 |
|||
serializedVersion: 2 |
|||
m_Size: {x: 1, y: 1, z: 1} |
|||
m_Center: {x: 0, y: 0, z: 0} |
|||
--- !u!23 &3826955612593018128 |
|||
MeshRenderer: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 3840539935788495952} |
|||
m_Enabled: 1 |
|||
m_CastShadows: 1 |
|||
m_ReceiveShadows: 1 |
|||
m_DynamicOccludee: 1 |
|||
m_MotionVectors: 1 |
|||
m_LightProbeUsage: 1 |
|||
m_ReflectionProbeUsage: 1 |
|||
m_RenderingLayerMask: 1 |
|||
m_RendererPriority: 0 |
|||
m_Materials: |
|||
- {fileID: 2100000, guid: c67450f290f3e4897bc40276a619e78d, type: 2} |
|||
m_StaticBatchInfo: |
|||
firstSubMesh: 0 |
|||
subMeshCount: 0 |
|||
m_StaticBatchRoot: {fileID: 0} |
|||
m_ProbeAnchor: {fileID: 0} |
|||
m_LightProbeVolumeOverride: {fileID: 0} |
|||
m_ScaleInLightmap: 1 |
|||
m_PreserveUVs: 1 |
|||
m_IgnoreNormalsForChartDetection: 0 |
|||
m_ImportantGI: 0 |
|||
m_StitchLightmapSeams: 0 |
|||
m_SelectedEditorRenderState: 3 |
|||
m_MinimumChartSize: 4 |
|||
m_AutoUVMaxDistance: 0.5 |
|||
m_AutoUVMaxAngle: 89 |
|||
m_LightmapParameters: {fileID: 0} |
|||
m_SortingLayerID: 0 |
|||
m_SortingLayer: 0 |
|||
m_SortingOrder: 0 |
|||
--- !u!54 &3858402326794362026 |
|||
Rigidbody: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 3840539935788495952} |
|||
serializedVersion: 2 |
|||
m_Mass: 1 |
|||
m_Drag: 0 |
|||
m_AngularDrag: 0.05 |
|||
m_UseGravity: 1 |
|||
m_IsKinematic: 0 |
|||
m_Interpolate: 0 |
|||
m_Constraints: 0 |
|||
m_CollisionDetection: 3 |
|||
--- !u!114 &3631016866778687563 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 3840539935788495952} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: 3c8f113a8b8d94967b1b1782c549be81, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
tagToDetect: agent |
|||
spawnRadius: 40 |
|||
respawnIfTouched: 1 |
|||
respawnIfFallsOffPlatform: 1 |
|||
fallDistance: 5 |
|||
onTriggerEnterEvent: |
|||
m_PersistentCalls: |
|||
m_Calls: [] |
|||
onTriggerStayEvent: |
|||
m_PersistentCalls: |
|||
m_Calls: [] |
|||
onTriggerExitEvent: |
|||
m_PersistentCalls: |
|||
m_Calls: [] |
|||
onCollisionEnterEvent: |
|||
m_PersistentCalls: |
|||
m_Calls: [] |
|||
onCollisionStayEvent: |
|||
m_PersistentCalls: |
|||
m_Calls: [] |
|||
onCollisionExitEvent: |
|||
m_PersistentCalls: |
|||
m_Calls: [] |
|
|||
fileFormatVersion: 2 |
|||
guid: 8daf438e1a41f4d06850cacc91aa175f |
|||
PrefabImporter: |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
%YAML 1.1 |
|||
%TAG !u! tag:unity3d.com,2011: |
|||
--- !u!1001 &2161650710944920434 |
|||
PrefabInstance: |
|||
m_ObjectHideFlags: 0 |
|||
serializedVersion: 2 |
|||
m_Modification: |
|||
m_TransformParent: {fileID: 1988560127670737702} |
|||
m_Modifications: |
|||
- target: {fileID: 8228205183255162976, guid: 095e843732bad4a02b273c01eaff4b26, |
|||
type: 3} |
|||
propertyPath: m_LocalPosition.x |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 8228205183255162976, guid: 095e843732bad4a02b273c01eaff4b26, |
|||
type: 3} |
|||
propertyPath: m_LocalPosition.y |
|||
value: 3 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 8228205183255162976, guid: 095e843732bad4a02b273c01eaff4b26, |
|||
type: 3} |
|||
propertyPath: m_LocalPosition.z |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 8228205183255162976, guid: 095e843732bad4a02b273c01eaff4b26, |
|||
type: 3} |
|||
propertyPath: m_LocalRotation.x |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 8228205183255162976, guid: 095e843732bad4a02b273c01eaff4b26, |
|||
type: 3} |
|||
propertyPath: m_LocalRotation.y |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 8228205183255162976, guid: 095e843732bad4a02b273c01eaff4b26, |
|||
type: 3} |
|||
propertyPath: m_LocalRotation.z |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 8228205183255162976, guid: 095e843732bad4a02b273c01eaff4b26, |
|||
type: 3} |
|||
propertyPath: m_LocalRotation.w |
|||
value: 1 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 8228205183255162976, guid: 095e843732bad4a02b273c01eaff4b26, |
|||
type: 3} |
|||
propertyPath: m_RootOrder |
|||
value: 2 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 8228205183255162976, guid: 095e843732bad4a02b273c01eaff4b26, |
|||
type: 3} |
|||
propertyPath: m_LocalEulerAnglesHint.x |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 8228205183255162976, guid: 095e843732bad4a02b273c01eaff4b26, |
|||
type: 3} |
|||
propertyPath: m_LocalEulerAnglesHint.y |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 8228205183255162976, guid: 095e843732bad4a02b273c01eaff4b26, |
|||
type: 3} |
|||
propertyPath: m_LocalEulerAnglesHint.z |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 8228205183255162979, guid: 095e843732bad4a02b273c01eaff4b26, |
|||
type: 3} |
|||
propertyPath: m_Model |
|||
value: |
|||
objectReference: {fileID: 11400000, guid: e3bbf8676df3c415dac2a116b343b9f1, |
|||
type: 3} |
|||
- target: {fileID: 8228205183255163001, guid: 095e843732bad4a02b273c01eaff4b26, |
|||
type: 3} |
|||
propertyPath: m_Name |
|||
value: WalkerRagdollSingleSpeed |
|||
objectReference: {fileID: 0} |
|||
m_RemovedComponents: [] |
|||
m_SourcePrefab: {fileID: 100100000, guid: 095e843732bad4a02b273c01eaff4b26, type: 3} |
|||
--- !u!1001 &4922996001064177453 |
|||
PrefabInstance: |
|||
m_ObjectHideFlags: 0 |
|||
serializedVersion: 2 |
|||
m_Modification: |
|||
m_TransformParent: {fileID: 0} |
|||
m_Modifications: |
|||
- target: {fileID: 6902107422946006027, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_LocalPosition.x |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 6902107422946006027, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_LocalPosition.y |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 6902107422946006027, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_LocalPosition.z |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 6902107422946006027, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_LocalRotation.x |
|||
value: -0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 6902107422946006027, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_LocalRotation.y |
|||
value: -0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 6902107422946006027, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_LocalRotation.z |
|||
value: -0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 6902107422946006027, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_LocalRotation.w |
|||
value: 1 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 6902107422946006027, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_RootOrder |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 6902107422946006027, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_LocalEulerAnglesHint.x |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 6902107422946006027, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_LocalEulerAnglesHint.y |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 6902107422946006027, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_LocalEulerAnglesHint.z |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 6907740118844148851, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_Name |
|||
value: PlatformDynamicTarget |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 6907845698621467345, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_IsActive |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
m_RemovedComponents: [] |
|||
m_SourcePrefab: {fileID: 100100000, guid: f0d7741d9e06247f6843b921a206b978, type: 3} |
|||
--- !u!4 &1988560127670737702 stripped |
|||
Transform: |
|||
m_CorrespondingSourceObject: {fileID: 6902107422946006027, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
m_PrefabInstance: {fileID: 4922996001064177453} |
|||
m_PrefabAsset: {fileID: 0} |
|
|||
fileFormatVersion: 2 |
|||
guid: 84359146bf7af47e58c229d877e801d7 |
|||
PrefabImporter: |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
%YAML 1.1 |
|||
%TAG !u! tag:unity3d.com,2011: |
|||
--- !u!1001 &213013859575191415 |
|||
PrefabInstance: |
|||
m_ObjectHideFlags: 0 |
|||
serializedVersion: 2 |
|||
m_Modification: |
|||
m_TransformParent: {fileID: 0} |
|||
m_Modifications: |
|||
- target: {fileID: 6902107422946006027, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_LocalPosition.x |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 6902107422946006027, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_LocalPosition.y |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 6902107422946006027, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_LocalPosition.z |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 6902107422946006027, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_LocalRotation.x |
|||
value: -0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 6902107422946006027, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_LocalRotation.y |
|||
value: -0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 6902107422946006027, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_LocalRotation.z |
|||
value: -0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 6902107422946006027, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_LocalRotation.w |
|||
value: 1 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 6902107422946006027, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_RootOrder |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 6902107422946006027, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_LocalEulerAnglesHint.x |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 6902107422946006027, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_LocalEulerAnglesHint.y |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 6902107422946006027, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_LocalEulerAnglesHint.z |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 6907740118844148851, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
propertyPath: m_Name |
|||
value: PlatformDynamicTarget |
|||
objectReference: {fileID: 0} |
|||
m_RemovedComponents: [] |
|||
m_SourcePrefab: {fileID: 100100000, guid: f0d7741d9e06247f6843b921a206b978, type: 3} |
|||
--- !u!4 &6718791046026642300 stripped |
|||
Transform: |
|||
m_CorrespondingSourceObject: {fileID: 6902107422946006027, guid: f0d7741d9e06247f6843b921a206b978, |
|||
type: 3} |
|||
m_PrefabInstance: {fileID: 213013859575191415} |
|||
m_PrefabAsset: {fileID: 0} |
|||
--- !u!1001 &5259696646250713865 |
|||
PrefabInstance: |
|||
m_ObjectHideFlags: 0 |
|||
serializedVersion: 2 |
|||
m_Modification: |
|||
m_TransformParent: {fileID: 6718791046026642300} |
|||
m_Modifications: |
|||
- target: {fileID: 1077752704035527913, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_Model |
|||
value: |
|||
objectReference: {fileID: 11400000, guid: 0a55a602a15e94f2baac4fadf9db5809, |
|||
type: 3} |
|||
- target: {fileID: 1077752704035527914, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_LocalPosition.x |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 1077752704035527914, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_LocalPosition.y |
|||
value: 3 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 1077752704035527914, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_LocalPosition.z |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 1077752704035527914, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_LocalRotation.x |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 1077752704035527914, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_LocalRotation.y |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 1077752704035527914, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_LocalRotation.z |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 1077752704035527914, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_LocalRotation.w |
|||
value: 1 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 1077752704035527914, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_RootOrder |
|||
value: 2 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 1077752704035527914, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_LocalEulerAnglesHint.x |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 1077752704035527914, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_LocalEulerAnglesHint.y |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 1077752704035527914, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_LocalEulerAnglesHint.z |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 1077752704035527923, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_Name |
|||
value: WalkerRagdollVariableSpeed Variant |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7230369666416833497, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: rotTest |
|||
value: |
|||
objectReference: {fileID: 5047057869477872341} |
|||
- target: {fileID: 7818481575132336858, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.x |
|||
value: 0.70000017 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481575132336858, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.y |
|||
value: 0.00000011920929 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481575774466713, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.x |
|||
value: 0.7000001 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481575774466713, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.y |
|||
value: 0.00000011920929 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481575902529964, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.y |
|||
value: 0.3829999 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481575932963433, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.x |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481575932963433, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.y |
|||
value: -0.60000014 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481575961221082, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.y |
|||
value: 0.30500042 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481576440584935, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.x |
|||
value: -0.70000017 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481576440584935, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.y |
|||
value: 0.00000011920929 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481576458883963, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.x |
|||
value: -0.7000001 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481576458883963, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.y |
|||
value: 0.00000011920929 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481576468061547, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.x |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481576468061547, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.y |
|||
value: -0.5 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481576500842154, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.x |
|||
value: -0.5 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481576500842154, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.y |
|||
value: 0.00000011920929 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481576528932668, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.x |
|||
value: -0.39999396 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481576528932668, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.y |
|||
value: -0.29999995 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481576563420651, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.x |
|||
value: 0.5 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481576563420651, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.y |
|||
value: 0.00000011920929 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481576732930262, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.y |
|||
value: 0.5119997 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481576882516786, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.x |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481576882516786, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.y |
|||
value: -0.60000014 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481577110242852, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.x |
|||
value: 0.39999396 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481577110242852, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.y |
|||
value: -0.29999995 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481577111017235, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.x |
|||
value: 0 |
|||
objectReference: {fileID: 0} |
|||
- target: {fileID: 7818481577111017235, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
propertyPath: m_ConnectedAnchor.y |
|||
value: -0.5 |
|||
objectReference: {fileID: 0} |
|||
m_RemovedComponents: [] |
|||
m_SourcePrefab: {fileID: 100100000, guid: 90f3321ab5beb43e28bc651909d99e39, type: 3} |
|||
--- !u!4 &5047057869477872341 stripped |
|||
Transform: |
|||
m_CorrespondingSourceObject: {fileID: 1077752704392483292, guid: 90f3321ab5beb43e28bc651909d99e39, |
|||
type: 3} |
|||
m_PrefabInstance: {fileID: 5259696646250713865} |
|||
m_PrefabAsset: {fileID: 0} |
部分文件因为文件数量过多而无法显示
撰写
预览
正在加载...
取消
保存
Reference in new issue