Propojit nespravovaný simulátor s Bonsai
- Celková doba dokončení: 40 minut
- Aktivní čas: 40 minut
- Neaktivní čas: 0 minut
- Celková doba dokončení: 60 minut
- Aktivní čas: 30 minut
- Neaktivní čas: 30 minut
- Celková doba dokončení: 60 minut
- Aktivní čas: 30 minut
- Neaktivní čas: 30 minut
Připojení simulátor spuštěný ve vašem místním prostředí do svého Bonsai pracovního prostoru pro testování simulátoru a školení mozku.
Než začnete
- Musíte být obeznámeni s psaním kódu Pythonu. Níže uvedené pokyny předpokládají základy kódování Pythonu. Pokud jste v Pythonu ještě nikdy neúčtovali, doporučujeme, abyste před pokračováním přebírali MS učí: Úvod ke kurzu Pythonu .
- Musíte mít nainstalovaný Python. Veškerý vzorový kód je napsán v pythonu 3,7. Pokud už máte nainstalovaný Python a chcete se vyhnout kolizím se stávající instalací, použijte prostředí Python (pyenv) nebo virtuální prostředí (virtualenv).
- Musíte mít nainstalováno.
- Musíte mít nainstalováno.
- Je nutné, aby byl implementován místní simulátor. Pokyny v této příručce vysvětlují, jak aktualizovat existující simulátor výuky počítačů a spustit ho místně pomocí .
- Musíte znát ID vašeho pracovního prostoru. Pokud chcete zjistit ID vašeho pracovního prostoru, postupujte podle pokynů v části získání informací o pracovním prostoru.
- Ve vašem pracovním prostoru musíte mít nastavenou přístupovou klávesu. Pokud nemáte přístupový klíč, postupujte podle pokynů v části získání přístupového klíče k pracovnímu prostoru a vytvořte nový klíč.
Tip
Pokud narazíte na potíže s izolací nevyhovujících závislostí Pythonu nebo obecných konfliktů prostředí, zvažte vytvoření Miniconda virtuálního prostředí pro kódování práce.
- Musíte mít nainstalováno.
- Je nutné, aby byl implementován místní simulátor. Pokyny v této příručce vysvětlují, jak aktualizovat existující simulátor výuky počítačů a spustit ho místně pomocí .
- Musíte znát ID vašeho pracovního prostoru. Pokud chcete zjistit ID vašeho pracovního prostoru, postupujte podle pokynů v části získání informací o pracovním prostoru.
- Ve vašem pracovním prostoru musíte mít nastavenou přístupovou klávesu. Pokud nemáte přístupový klíč, postupujte podle pokynů v části získání přístupového klíče k pracovnímu prostoru a vytvořte nový klíč.
- Musíte mít nainstalováno.
- Je nutné, aby byl implementován místní simulátor. Pokyny v této příručce vysvětlují, jak aktualizovat existující simulátor výuky počítačů a spustit ho místně pomocí .
- Musíte znát ID vašeho pracovního prostoru. Pokud chcete zjistit ID vašeho pracovního prostoru, postupujte podle pokynů v části získání informací o pracovním prostoru.
- Ve vašem pracovním prostoru musíte mít nastavenou přístupovou klávesu. Pokud nemáte přístupový klíč, postupujte podle pokynů v části získání přístupového klíče k pracovnímu prostoru a vytvořte nový klíč.
- V modelu simulace je nutné použít pouze podporované sady nástrojů programu MATLAB .
Krok 1: přidání Bonsai konektoru
Aktualizujte kód simulátoru a přidejte dedicated Bonsai connector .
Je potřeba zabalit stávající model AnyLogic a připojit Bonsai knihovnu konektorů, abyste ho mohli použít s Bonsai . Zabalení je proces Vložení existujícího modelu simulátoru jako závislosti do nového modelu (obálky modelu), takže model obálky může řídit kořenového agenta stávajícího modelu. Můžete zobrazit vztah mezi vaším existujícím modelem a modelem obálky v části závislosti v okně vlastnosti modelu obálky.
A. Sestavení modelu obálky
- stáhněte si knihovnu bonsaje library. jar "data-linktype =" external ">Bonsai knihovny konektorů ( Bonsai library. jar) z Bonsai bonsaje AI/bonsaje-anylogic" data-linktype = "external" >Bonsai anylogic GitHub úložiště .
- Stáhněte šablonu modelu obálky z .
- V AnyLogic:
- Vyberte panel palety .
- V levém dolním rohu vyberte znaménko plus (+). otevře se dialogové okno Spravovat knihovny .
- Vyberte tlačítko Přidat na pravé straně dialogového okna.
- Přejděte na Bonsai soubor Library. jar na počítači a vyberte ho.
- Potvrďte všechna dialogová okna.
- Otevřete Obálkový model a svůj stávající model simulátoru v AnyLogic.
- V modelu obálky otevřete typ agenta obálky.
- V panelu editoru agenta obálky, najeďte myší na levou stranu, aby se zobrazil Bonsai objekt konektoru a
getObservablefunkce. - Přetáhněte agenta nejvyšší úrovně na panelu projektu pro existující model simulátoru do agenta obálky.
Snímek obrazovky uživatelského rozhraní AnyLogic s zvýrazněnými odpovídajícími položkami nabídky
Stávající model se teď vytvoří v modelu obálky jako objekt. Pole a funkce ve vašem stávajícím modelu jsou nyní přístupné prostřednictvím kořenového objektu, který jste přidali do modelu obálky.
Tip
Dokud není Bonsai soubor JAR konektoru přesunutý ani odstraněný, bude dostupný pro všechny projekty AnyLogic.
B. Aktualizovat existující model
Pro všechny funkce v existujícím modelu, které mohou být volány ve getObservable funkci modelu obálky nebo Bonsai konektoru:
- Otevřete okno Vlastnosti pro danou funkci.
- Přejít na část Upřesnit .
- V rozevíracím seznamu možností přístupu vyberte Public.
C. Aktualizace Bonsai konektoru
BonsaiV AnyLogic klikněte na objekt konektoru a v části Bonsaizadejte následující informace:
- ID vašeho pracovního prostoru.
- Váš přístupový klíč.
- Jedinečný název simulátoru.
D. Migrace integrované databáze AnyLogic
Poznámka
Pokud Váš existující model nepoužívá integrovanou databázi AnyLogic, můžete tento krok přeskočit.
Možnost 1: zkopírování složky databáze
- V Průzkumníku souborů podle vašeho výběru otevřete obě adresáře modelů.
- Zavřete oba modely v AnyLogic.
- Zkopírujte složku databáze z vaší stávající složky modelu do složky modelu obálky.
Možnost 2: vytvoření a obnovení zálohy databáze
- V existujícím modelu otevřete vlastnosti databázového objektu.
- Vyberte zálohovat databázi a uložte záložní soubor do počítače.
- Otevřete vlastnosti databázového objektu pro model obálky.
- Vyberte obnovit databázi a zvolte záložní soubor, který jste provedli.
- Po obnovení databáze můžete záložní soubor odstranit.
- Stáhněte si Bonsai sadu nástrojů z Bonsai webpage on MATLAB-Central .
- Dvakrát klikněte na instalační program sady nástrojů (. mltbx).
- Podle zobrazených výzev na obrazovce nainstalujte sadu nástrojů pro výchozí verzi programu MATLAB/Simulink.
- Otevřete model Simulink.
- Zabalte existující model tak, aby jako vstup přijal
actionhodnoty a a jako výstupInitialConfigstateshodnotu.Snímek obrazovky simulink s existujícím modelem zabalený se vstupy a výstupy - V prohlížeči knihovny Simulink přidejte následující bloky:
- Bonsai
- Konstanta
- Mux
- Zastavení simulace
- Blok konstanty vytvořte s hodnotou
False. - Vytvořte tolik konstantních bloků, kolik je potřeba k reprezentaci počátečního stavu simulace.
- Pomocí bloku Mux zkombinujte počáteční hodnoty vlastností a propojte výstupní port Mux se
InitialConfigvstupním portem stávajícího modelu. - Připojení výstupní port bloku na vstupní
actionBonsai port modeluactionSimulink. - Připojení
resetvýstupní port bloku do bloku Zastavit Bonsai simulaci. - Připojení
statevýstupní port existujícího modelu nastatevstupní port Bonsai bloku. - Připojení
Falsekonstantní blok na vstupní porthaltedBonsai bloku. - Poklikejte na Bonsai blok a nastavte Čas ukázky na
[DEFAULT_SIMULATION_RATE, 0].
Snímek obrazovky s uživatelským rozhraním Simulink s připojenými relevantními bloky, jak je popsáno v procesu výše
Krok 2: Konfigurace Bonsai konektoru
Vyhrazené konektory jsou ve výchozím nastavení přizpůsobené přidruženému simulátoru. Příklad plně funkčního vyhrazeného konektoru najdete v tématu Bonsai example: Cartpole . GitHub úložiště Příklad se spustí místně, aby se zaregistroval a propojil zahrnutý simulátor Cartpole Python. Přizpůsobitelné prvky jsou v příkladu souboru označeny jako TODO.
A. Konfigurace tříd obálky
Model obálky zahrnuje tři třídy Jazyka Java, které jsou potřeba k definování počáteční konfigurace, prostoru akcí a prostoru pozorování modelu pro Bonsai :
ModelConfig: Musí obsahovat všechny proměnné potřebné k inicializaci trénovací scény. Pokud inicializace konfigurace probíhá jako součást logiky simulace, můžete tuto třídu ponechat prázdnou.ModelConfigProměnné jsou přístupné vModelConfigobjektu Konektor a mapované na proměnné konfigurace simulátoru definované Bonsai v souboru Inkling.ModelAction: musí obsahovat všechny proměnné, které Bonsai mozek předává zpět do modelu obálky.ModelActionProměnné jsou přístupné vModelActionobjektu Konektor a mapované na povolené akce mozku definované Bonsai v souboru rukopisu.ModelActionHodnoty poskytuje mozek k Bonsai aktualizaci modelu v každém kroku.ModelObservation: Musí obsahovat všechny proměnné potřebné k definování pozorovatelného prostoru pro vaši simulaci. Proměnné definované v se vyplní na začátku každého kroku scény funkcí a namapuje se na stavy simulátoru definovanéModelObservationgetObservablev souboru rukopisu.
Důležité
Platforma Bonsai v současné době povoluje pouze číselná pole (celá čísla a dvojité hodnoty) a pole jako datové typy.
B. Aktualizace getObservable funkce pro model obálky
Způsob aktualizace bude záviset na existujícím modelu, ale je důležité přidružit každý prvek prostoru pozorování definovaného v souboru se správným výstupem getObservableModelObservation z existujícího modelu.
Pokud chcete získat přístup k polím a funkcím z existujícího modelu, před názvy zadejte kořenový objekt, který představuje existující model. Pokud například chcete získat přístup k proměnné s názvem v existujícím modelu, použijte k odkazování, kde je typ kořenového agenta modelu currTempMain.currTempMain obálky.
Důležité
Jakýkoli kód, který do funkce getObservable přidáte, a Bonsai konektor by měl odkazovat na existující model. Obálka je určena pouze k zabalení příchozích a odchozích informací, takže Bonsai stávající model může komunikovat.
C. Aktualizace polí Bonsai konektoru
- Aktualizujte pole sceneStart,scenestepa halted pomocí kódu, který funguje nebo hlásí váš existující model.
| Pole | Použití | Místní proměnné |
|---|---|---|
| sceneStart | inicializace simulovaného prostředí | configModelConfig(aliasy) |
| přidchytádka | aktualizace simulovaného prostředí | actionModelAction(aliasy) |
| Zastavil | určuje, jestli je simulace v terminálovém stavu ( True nebo False ) |
žádné |
- Vytvořte nový soubor s názvem SIM_PARAMS.m a definujte proměnné vyžadované simulátorem. Například:
TemplateParam = 1; %% dummy variable - Vytvořte nový soubor s názvem startup.m a přidejte následující kód:
addpath(genpath(pwd)) SIM_PARAMS DEFAULT_SIMULATION_RATE = -1; % units: sec - Pokud chcete blok spustit se stejnou rychlostí jako váš model, ponechte nastavenou hodnotu
DEFAULT_SIMULATION_RATE-1 Bonsai (doporučeno). Jinak nastavte požadovanou vzorkovací frekvenci za sekundu. - Vytvořte nový soubor s názvem bonsaiConfig.m a přidejte následující kód:
% Copyright (c) Microsoft Corporation. % Licensed under the MIT License. function config = bonsaiConfig config = BonsaiConfiguration(); % % override api url, defaults to "https://api.bons.ai" % config.url = "https://api.bons.ai"; % bonsai workspace config.workspace = "YOUR_WORKSPACE_ID"; %TODO % access key, generated from https://beta.bons.ai/brains/accounts/settings config.accessKey = "YOUR_ACCESS_KEY"; %TODO % simulator name, for an unmanaged simulator launched from the desktop to show up on the web config.name = "YOUR_SIMULATOR_NAME"; %TODO % path to bonsai block in your simulink model file, used to determine state and action schemas config.bonsaiBlock = "simulinkModelFileName/Bonsai"; %TODO % % set state and action schemas (overrides data from bonsaiBlock) config.stateSchema = ["state1", "state2", "state3", "state4"]; %TODO config.actionSchema = ["action1"]; %TODO % set your InitialConfig Parameters config.configSchema = ["initialConfig1"]; %TODO % % time (in seconds) the simulator gateway should wait for % % your simulator to advance, defaults to 60 config.timeout = 60; % path to csv file where episode data should be logged config.outputCSV = "record-data.csv"; % % display verbose logs config.verbose = true; end - Aktualizujte všechny řádky s příznakem komentářů s podrobnostmi souvisejícími s pracovním prostorem a
%TODOBonsai existujícím simulátorem. - Vytvořte nový soubor s názvem bonsaiTrain.m a přidejte následující kód:
% Copyright (c) Microsoft Corporation. % Licensed under the MIT License. % Main entrypoint for training a Bonsai brain. After starting this script you % must begin training your brain in the web, selecting the "Simulink Cartpole" % simulator. %% Load startupFiles startup; % Simulink Model File Name mdl = 'simulinkModelFilename'; %TODO load_system(mdl); set_param(mdl, 'FastRestart', 'on'); % run training config = bonsaiConfig; BonsaiRunTraining(config, mdl, @episodeStartCallback); % callback for running model with provided episode configuration function episodeStartCallback(mdl, episodeConfig) in = Simulink.SimulationInput(mdl); in = in.setVariable('initialProp1', 'initialProp1', ... 'initialPropN', episodeConfig.initialConfig1); %TODO sim(in); end - Aktualizujte jednotlivé řádky s příznakem
%TODOkomentářů následujícím způsobem:
initialProp1...initialPropN: Aktualizujte tak, aby odpovídaly skutečným názvům definovaným jako počáteční vlastnosti modelu.initialConfig1: Aktualizuje název tak, aby odpovídal počátečnímu konfiguračnímu parametru definovanému v souboru bonsaiConfig.m.
Krok 3: Konfigurace rozhraní příkazového řádku a Bonsai prostředí
Nastavte SIM_WORKSPACE proměnné prostředí a SIM_ACCESS_KEY .
export SIM_WORKSPACE="YOUR_WORKSPACE_ID"
export SIM_ACCESS_KEY="YOUR_WORKSPACE_ACCESS_KEY"
Potom spuštěním příkazu bonsai configure nastavte ID pracovního prostoru pro rozhraní příkazového Bonsai řádku:
bonsai configure --workspace-id ${SIM_WORKSPACE}
Krok 4: Spuštění sim s výchozí konfigurací
Před připojením simulátoru k nástroji byste měli model spustit místně s výchozí konfigurací, abyste se ujistili, že se Bonsai chová podle očekávání.
Místní spuštění simulátoru:
- V části AnyLogic klikněte na tlačítko Run (Spustit).
- V rozevíracím seznamu, který se zobrazí, vyberte požadovaný simulátor.
Pro testovací běh můžete použít bezdomovný experiment (bez grafického uživatelského rozhraní) nebo animovaný experiment (s grafickým uživatelským rozhraním).
Krok 5: Registrace simulátoru jako nespravovaného sim
Spusťte místní instanci simulátoru Pythonu a poznamenejte si ID relace vrácené CreateSession .
Spusťte místní model AnyLogic. Konektor Bonsai automaticky zaregistruje váš simulátor pomocí Bonsai jako nespravovaný simulátor.
Spusťte místní model Simulink. Sada Bonsai nástrojů automaticky zaregistruje váš simulátor jako Bonsai nespravovaný simulátor.
Krok 6: Spuštění nespravovaného simulátoru pomocí testovacího mozku
Před přidáním simulátoru do pracovního prostoru jako spravovaného (škálovatelného) simulátoru byste měli ověřit, že se simulátorem může správně Bonsai komunikovat.
- Otevřete třídu Bonsai UI.
- Vyberte + Create Brain (+ Vytvořit mozek) a podle pokynů vytvořte prázdný mozek.
- Otevřete základní ukázkový soubor mozku a vložte šablonu Rukopis do prázdného panelu kódování na kartě Výuka.
- Nakonfigurujte šablonu s platnými stavy a akcemi pro váš simulátor.
- Vyberte tlačítko Train (Trénovat).
- Vyberte simulátor ze seznamu nespravovaných simulátorů.
Po chvíli byste měli vidět streamování dat epizody v konzole MATLAB.
Pokud máte dostatek testovacích dat, vyberte zastavit školení. Simulink zaznamenává údaje o protokolech sdílených svazků clusteru (CSV) s názvem souboru nastaveným v Bonsai konfiguračním souboru ( bonsaiConfig.m ).
Další kroky
Jakmile se simulátor připojí místně a můžete ověřit správné chování, budete připraveni ho převést na spravovaný simulátor a v rámci školení mozku škálovat Bonsai .