Länka en ohanterad simulator till Bonsai
- Total tid att slutföra:40 minuter
- Aktiv tid:40 minuter
- Inaktiv tid:0 minuter
- Total tid att slutföra:60 minuter
- Aktiv tid:30 minuter
- Inaktiv tid:30 minuter
- Total tid att slutföra:60 minuter
- Aktiv tid:30 minuter
- Inaktiv tid:30 minuter
Anslut en simulator som körs i din lokala miljö till din Bonsai arbetsyta för simulatortestning och brain training.
Innan du börjar
- Du måste vara bekant med Python-kodning. Anvisningarna nedan förutsätter att du förstår grunderna i Python-kodning. Om du aldrig har kodat i Python tidigare rekommenderar vi att du går kursen MS Learn: Introduction to Python innan du fortsätter.
- Du måste ha Python installerat. All exempelkod är skriven i Python 3.7. Om du redan har Python installerat och vill undvika kollisioner med en befintlig installation använder du en Python-miljö (pyenv) eller en virtuell miljö (virtualenv).
- Du måste ha installerat.
- Du måste ha installerat.
- Du måste ha en lokal simulator implementerad. Anvisningarna i den här guiden förklarar hur du uppdaterar en befintlig maskinlärarsimulator och kör den lokalt med .
- Du måste känna till ditt arbetsyte-ID. Du hittar ditt arbetsyte-ID genom att följa anvisningarna i Hämta information om din arbetsyta.
- Du måste ha en åtkomstnyckel inställd på din arbetsyta. Om du inte har en åtkomstnyckel följer du anvisningarna i Hämta din åtkomstnyckel för arbetsytan för att skapa en ny nyckel.
Tips
Om du får problem med att isolera felmatchade Python-beroenden eller allmänna miljökonflikter kan du överväga att konfigurera en virtuell Miniconda-miljö för kodningsarbete.
- Du måste ha installerat.
- Du måste ha en lokal simulator implementerad. Anvisningarna i den här guiden förklarar hur du uppdaterar en befintlig maskinlärarsimulator och kör den lokalt med .
- Du måste känna till ditt arbetsyte-ID. Du hittar ditt arbetsyte-ID genom att följa anvisningarna i Hämta information om din arbetsyta.
- Du måste ha en åtkomstnyckel inställd på din arbetsyta. Om du inte har en åtkomstnyckel följer du anvisningarna i Hämta din åtkomstnyckel för arbetsytan för att skapa en ny nyckel.
- Du måste ha installerat.
- Du måste ha en lokal simulator implementerad. Anvisningarna i den här guiden förklarar hur du uppdaterar en befintlig maskinlärarsimulator och kör den lokalt med .
- Du måste känna till ditt arbetsyte-ID. Du hittar ditt arbetsyte-ID genom att följa anvisningarna i Hämta information om din arbetsyta.
- Du måste ha en åtkomstnyckel inställd på din arbetsyta. Om du inte har en åtkomstnyckel följer du anvisningarna i Hämta din åtkomstnyckel för arbetsytan för att skapa en ny nyckel.
- Du får bara använda MATLAB-verktygslådan som stöds i simuleringsmodellen.
Steg 1: Lägga till en Bonsai anslutningsapp
Uppdatera simulatorkoden för att lägga till en dedicated Bonsai connector .
Du måste omsluta din befintliga AnyLogic-modell och koppla Bonsai connector-biblioteket innan du kan använda det med Bonsai . Omslutning är processen att bädda in din befintliga simulatormodell som ett beroende i en ny modell (omslutningsmodellen) så att omslutningsmodellen kan styra rotagenten för din befintliga modell. Du kan se relationen mellan din befintliga modell och omslutningsmodellen i avsnittet Beroenden i fönstret egenskaper för omslutningsmodell.
A. Skapa omslutningsmodellen
- Ladda ned Bonsai Library.jar" data-linktype="external">Bonsai Connector Library ( Bonsai Library.jar) från Bonsai Bonsai AI/bonsai-anylogic" data-linktype="external">Bonsai AnyLogic GitHub repository .
- Ladda ned omslutningsmodellmallen från .
- I AnyLogic:
- Välj panelen Palette.
- Välj plustecken (+) i det nedre vänstra hörnet för att öppna dialogrutan Hantera bibliotek.
- Välj knappen Lägg till till höger i dialogrutan.
- Bläddra till och välj filen Bonsai Library.jar på datorn.
- Bekräfta alla dialogrutor.
- Öppna wrapper-modellen och din befintliga simulatormodell i AnyLogic.
- Öppna omslutningsagenttypen i wrapper-modellen.
- I redigeringspanelen för omslutningsagenten hovrar du åt vänster för att se Bonsai anslutningsobjektet och
getObservablefunktionen. - Dra och släpp agenten på den översta nivån på projektpanelen för din befintliga simulatormodell till wrapper-agenten.
Skärmbild av AnyLogic-användargränssnittet med relevanta menyalternativ markerade
Din befintliga modell instansieras nu som ett objekt i omslutningsmodellen. Fält och funktioner i din befintliga modell är nu tillgängliga via det rotobjekt som du lade till i omslutningsmodellen.
Tips
Så länge Bonsai jar-filen för anslutningsappen inte flyttas eller tas bort är den tillgänglig för alla AnyLogic-projekt.
B. Uppdatera din befintliga modell
För alla funktioner i din befintliga modell som kan anropas i funktionen getObservable för omslutningsmodellen eller Bonsai anslutningsappen:
- Öppna egenskapsfönstret för funktionen.
- Gå till avsnittet Avancerat.
- Välj "offentlig" i listrutan med Åtkomstalternativ.
C. Uppdatera Bonsai anslutningsappen
Klicka på Bonsai anslutningsobjektet i AnyLogic och ange följande information under Bonsai
- Ditt arbetsyte-ID.
- Din åtkomstnyckel.
- Ett unikt namn för simulatorn.
D. Migrera din inbyggda AnyLogic-databas
Anteckning
Om din befintliga modell inte använder den inbyggda AnyLogic-databasen kan du hoppa över det här steget.
Alternativ 1: Kopiera databasmappen
- Öppna båda modellkatalogerna i valfri Utforskaren.
- Stäng båda modellerna i AnyLogic.
- Kopiera databasmappen från din befintliga modellmapp till mappen för omslutningsmodellen.
Alternativ 2: Skapa och återställa en säkerhetskopia av databasen
- Öppna databasobjektegenskaperna i din befintliga modell.
- Välj Säkerhetskopiera databas och spara säkerhetskopian på datorn.
- Öppna databasobjektegenskaperna för omslutningsmodellen.
- Välj Återställ databas och välj säkerhetskopian som du skapade.
- När du har återställt databasen kan du ta bort säkerhetskopian.
- Ladda ned Bonsai verktygslådan från Bonsai webpage on MATLAB-Central .
- Dubbelklicka på installationsprogrammet för verktygslådan (.mltbx).
- Följ anvisningarna som visas på skärmen för att installera verktygslådan för din standardversion av MATLAB/Simulink.
- Öppna din Simulink-modell.
- Omslut din befintliga modell så att den accepterar
actionvärdenaInitialConfigoch som indata och ett värdestatessom utdata.Skärmbild av Simulink med en befintlig modell som är omsluten med indata och utdata. - Lägg till följande block från Simulink Library Browser:
- Bonsai
- Konstant
- Mux
- Stoppa simulering
- Skapa ett konstant block med värdet
False. - Skapa så många konstanta block som behövs för att representera simuleringens ursprungliga tillstånd.
- Använd Mux-blocket för att kombinera dina ursprungliga egenskapsvärden och ansluta Mux-utdataporten till
InitialConfigindataporten i din befintliga modell. - Anslut
actionutdataporten för Bonsai blocket tillactionindataporten för din Simulink-modell. - Anslut
resetutdataporten för Bonsai blocket till blocket Stoppa simulering. - Anslut
stateutdataporten för din befintliga modell tillstateblockets Bonsai indataport. - Anslut
Falsekonstantblocket tillhaltedblockets Bonsai indataport. - Dubbelklicka på blocket Bonsai och ange Exempeltid till
[DEFAULT_SIMULATION_RATE, 0].
Skärmbild av Användargränssnittet för Simulink med relevanta block som är anslutna enligt beskrivningen i processen ovan.
Steg 2: Konfigurera Bonsai anslutningsappen
Dedikerade anslutningsappar anpassas som standard till den associerade simulatorn. Du kan se ett exempel på en fullt funktionell dedikerad anslutningsapp i Bonsai example: Cartpole . GitHub-lagringsplats Exemplet körs lokalt för att registrera och ansluta den inkluderade Python-simulatorn i Cartpole. Anpassningsbara element flaggas i exempelfilen som TODO:er.
A. Konfigurera omslutningsklasserna
Omslutningsmodellen innehåller tre Java-klasser som krävs för att definiera startkonfigurationen, åtgärdsutrymmet och observationsutrymmet för din modell för Bonsai :
ModelConfig: måste innehålla alla variabler som behövs för att initiera ett träningsavsnitt. Om initieringskonfigurationen sker som en del av simuleringslogiken kan du lämna den här klassen tom.ModelConfigvariabler är tillgängliga i fältetModelConfigför objektet Connector och mappa till simulatorkonfigurationsvariablerna som Bonsai definierats i indelningsfilen.ModelAction: måste innehålla alla variabler som Bonsai hjärnan skickar tillbaka till omslutningsmodellen.ModelActionvariabler är tillgängliga i fältetModelActionför anslutningsobjektet och mappas till de tillåtna brain actions som definierats Bonsai i indelningsfilen.ModelActionvärden tillhandahålls av hjärnan Bonsai för att uppdatera modellen i varje steg.ModelObservation: måste innehålla alla variabler som behövs för att definiera det observerbara utrymmet för simuleringen. Variabler som definieras i fylls i i början av varje avsnittssteg av funktionen och mappas till de simulator-tillstånd somModelObservationgetObservabledefinieras i indelningsfilen.
Viktigt
Plattformen Bonsai tillåter för närvarande endast numeriska fält (heltal och dubbletter) och matriser som datatyper.
B. Uppdatera funktionen getObservable för omslutningsmodellen
Hur du uppdaterar beror på din befintliga modell, men det är viktigt att associera varje element i observationsutrymmet som definierats i med korrekta getObservableModelObservation utdata från den befintliga modellen.
Om du vill komma åt fälten och funktionerna från din befintliga modell, prefixar du namnen med det rotobjekt som representerar den befintliga modellen. Om du till exempel vill komma åt en variabel med namnet i den befintliga modellen använder du för att referera till den, där är currTempMain.currTempMain omslutningsmodellens rotagenttyp.
Viktigt
All kod som du lägger till getObservable i funktionen och Bonsai anslutningsappen ska referera till din befintliga modell. Omslutaren är endast avsedd att paketera inkommande och utgående information Bonsai så att din befintliga modell kan kommunicera.
C. Uppdatera Bonsai anslutningsappsfälten
- Uppdatera avsnittStart,avsnittsteg och stoppadefält med kod som agerar eller rapporterar på din befintliga modell.
| Fält | Användning | Lokala variabler |
|---|---|---|
| avsnittStart | initiera den simulerade miljön | config (alias ModelConfig ) |
| avsnittSteg | uppdatera den simulerade miljön | action (alias ModelAction ) |
| Stoppat | anger om simuleringen är i ett terminaltillstånd ( True eller False ) |
inget |
- Skapa en ny fil med namnet SIM_PARAMS.m och definiera de variabler som krävs av simulatorn. Till exempel:
TemplateParam = 1; %% dummy variable - Skapa en ny fil med namnet startup.m och lägg till följande kod:
addpath(genpath(pwd)) SIM_PARAMS DEFAULT_SIMULATION_RATE = -1; % units: sec - Lämna
DEFAULT_SIMULATION_RATE-1 (rekommenderas) om du vill köra Bonsai blocket med samma hastighet som din modell. Annars anger du önskad samplingshastighet i sekunden. - Skapa en ny fil med namnet bonsaiConfig.m och lägg till följande kod:
% 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 - Uppdatera var och en av raderna som flaggats
%TODOmed kommentarer med information som är relevant för din Bonsai arbetsyta och befintliga simulator. - Skapa en ny fil med namnet bonsaiTrain.m och lägg till följande kod:
% 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 - Uppdatera var och en av raderna som flaggats
%TODOmed kommentarer enligt följande:
initialProp1...initialPropN: uppdatera så att de matchar de faktiska namnen som definierats som de ursprungliga egenskaperna för din modell.initialConfig1: uppdatera namnet så att det matchar den inledande konfigurationsparameter som definierats i filen bonsaiConfig.m.
Steg 3: Konfigurera Bonsai CLI och din miljö
Ange SIM_WORKSPACESIM_ACCESS_KEY miljövariablerna och .
export SIM_WORKSPACE="YOUR_WORKSPACE_ID"
export SIM_ACCESS_KEY="YOUR_WORKSPACE_ACCESS_KEY"
Kör sedan kommandot bonsai configure för att ange ditt arbetsyte-ID för Bonsai CLI:
bonsai configure --workspace-id ${SIM_WORKSPACE}
Steg 4: Kör sim med en standardkonfiguration
Innan du ansluter simulatorn till bör du köra modellen lokalt med en Bonsai standardkonfiguration för att se till att den fungerar som förväntat.
Så här kör du simulatorn lokalt:
- Klicka på knappen Kör i AnyLogic.
- Välj önskad simulator i listrutan som visas.
Du kan använda ett huvudlöst experiment (inget grafiskt användargränssnitt) eller ett animerat experiment (med GUI) för testkörningen.
Steg 5: Registrera simulatorn som en ohanterad sim
Starta en lokal instans av Python-simulatorn och notera sessions-ID:t som returneras av CreateSession .
Starta din lokala AnyLogic-modell. BonsaiAnslutningsappen registrerar automatiskt simulatorn med som Bonsai en ohanterad simulator.
Starta din lokala Simulink-modell. BonsaiVerktygslådan registrerar automatiskt simulatorn med Bonsai som en ohanterad simulator.
Steg 6: Kör din ohanterade simulator med en testhant
Du bör kontrollera att simulatorn kan kommunicera korrekt med innan Bonsai du lägger till den på arbetsytan som en hanterad (skalbar) simulator.
- Öppna Bonsai UI.
- Välj + Skapa hjärna och följ anvisningarna för att skapa en tom hjärna.
- Öppna den grundläggande exempelfilen för hjärnan och klistra in mallen Indelning i den tomma kodpanelen på fliken Lär ut.
- Konfigurera mallen med giltiga tillstånd och åtgärder för simulatorn.
- Välj knappen Träna.
- Välj simulatorn i listan över ohanterade simulatorer.
Efter en liten stund bör du se strömmande avsnittsdata i MATLAB-konsolen.
När du har tillräckligt med testdata väljer du Stoppa träning. Simulink registrerar information om testkörningen som csv-loggar med det filnamn som angetts i Bonsai konfigurationsfilen ( bonsaiConfig.m ).
Nästa steg
När simulatorn ansluter lokalt och du kan verifiera korrekt beteende är du redo att konvertera den till en hanterad simulator och skala brain training med Bonsai .