Yönetilmeyen simülatörü bağlama Bonsai


  • Toplam tamamlanma süresi: 40 dakika
  • Etkin saat: 40 dakika
  • Etkin olmayan süre: 0 dakika


  • Toplam tamamlanma süresi: 60 dakika
  • Etkin saat: 30 dakika
  • Etkin olmayan süre: 30 dakika


  • Toplam tamamlanma süresi: 60 dakika
  • Etkin saat: 30 dakika
  • Etkin olmayan süre: 30 dakika

Bonsaisimülatör testi ve beyanında eğitim için yerel ortamınızda çalışan bir simülatör Bağlan.

Başlamadan önce

  • Python kodlaması hakkında bilgi sahibi olmanız gerekir. Aşağıdaki yönergeler, Python kodlamasının temellerini anladığınızı varsayar. Daha önce Python 'da hiç kodlanmadıysanız, devam etmeden önce MS öğren: Python kursa giriş yapmanız önerilir.
  • Python yüklü olmalıdır. Örnek kod, Python 3,7' de yazılmıştır. Zaten Python yüklüyse ve var olan bir yüklemeyle çarpışmalardan kaçınmak istiyorsanız, bir Python ortamı (pyenv) veya sanal ortam (virtualalenv) kullanın.
  • Yüklü olmalıdır.
  • Yüklü olmalıdır.
  • Yerel bir Benzeticiuygulamış olmanız gerekir. Bu kılavuzdaki yönergeler, var olan bir makine eğitim simülatörünü güncelleştirmeyi ve ile yerel olarak çalıştırmayı açıklamaktadır .
  • Çalışma alanı kimliğinizi bilmeniz gerekir. Çalışma alanı KIMLIĞINIZI bulmak için çalışma alanınızın bilgilerini alınbölümündeki yönergeleri izleyin.
  • Çalışma alanınızda bir erişim anahtarı ayarlamış olmanız gerekir. Erişim anahtarınız yoksa, yeni bir anahtar oluşturmak için çalışma alanı erişim anahtarınızı alın bölümündeki yönergeleri izleyin.

İpucu

Python bağımlılığı uyuşmazlıklarını veya genel ortam çakışmalarını yalıtmaya çalışırken, kodlama çalışması için bir Miniconda sanal ortamı ayarlamayı göz önünde bulundurun.

  • Yüklü olmalıdır.
  • Yerel bir Benzeticiuygulamış olmanız gerekir. Bu kılavuzdaki yönergeler, var olan bir makine eğitim simülatörünü güncelleştirmeyi ve ile yerel olarak çalıştırmayı açıklamaktadır .
  • Çalışma alanı kimliğinizi bilmeniz gerekir. Çalışma alanı KIMLIĞINIZI bulmak için çalışma alanınızın bilgilerini alınbölümündeki yönergeleri izleyin.
  • Çalışma alanınızda bir erişim anahtarı ayarlamış olmanız gerekir. Erişim anahtarınız yoksa, yeni bir anahtar oluşturmak için çalışma alanı erişim anahtarınızı alın bölümündeki yönergeleri izleyin.

1. Adım: Bonsai bağlayıcı ekleme

Simülatörü kodunuzu bir eklemek için güncelleştirin dedicated Bonsai connector .

Mevcut AnyLogic model ' i sarmadan Bonsai önce bağlayıcı kitaplığını eklemeniz gerekir Bonsai . Sarmalama, mevcut simülatör modelinizi yeni bir modele (sarmalayıcı model) bir bağımlılık olarak ekleme işlemidir, böylece sarmalayıcı modeli, mevcut modelinizin kök aracısını denetleyebilir. Sarmalayıcı modeli Özellikler penceresinin Bağımlılıklar bölümünde var olan modeliniz ve sarmalayıcı modeli arasındaki ilişkiyi görebilirsiniz.

A. Sarmalayıcı modeli oluşturma

  1. bonsai Library. jar "data-linktype =" external ">Bonsai bağlayıcı kitaplığı 'nı ( Bonsai Library. jar) Bonsai bonsai aı/bonsai-anylogic" data-linktype = "external" >Bonsai anylogic GitHub repository 'den indirin .
  2. Sarmalayıcı model şablonunu öğesinden indirin .
  3. AnyLogic:
    1. Palet panelini seçin.
    2. Sol alt köşede bulunan artı işareti (+) seçeneğini belirleyin ve kitaplıkları Yönet iletişim kutusunu açın.
    3. İletişim kutusunun sağ tarafındaki Ekle düğmesini seçin.
    4. BonsaiMakinenizde Library. jar dosyasına gidin ve bu dosyayı seçin.
    5. Tüm iletişim kutularını onaylayın.
  4. Sarmalayıcı modelini ve mevcut simülatör modelinizi AnyLogic 'de açın.
  5. Sarmalayıcı modelinde sarmalayıcı Aracısı türünü açın.
  6. Sarmalayıcı aracısının Düzenleyici panelinde, Bonsai bağlayıcı nesnesini ve işlevini görmek için sola gelin getObservable .
  7. Mevcut simülatör modelinize ait olan en üst düzey aracıyı sarmalayıcı aracısına sürükleyip bırakın.

AnyLogic ekran görüntüsü

İlgili menü öğeleri vurgulanmış olan AnyLogic UI 'nin ekran görüntüsü

Mevcut modeliniz artık sarmalayıcı modelinde bir nesne olarak oluşturulur. Mevcut modelinizdeki alanlara ve işlevlere artık sarmalayıcı modeline eklediğiniz kök nesne üzerinden erişilebilir.

İpucu

BonsaiBağlayıcı jar dosyası taşınmadığından veya silinmediği sürece tüm AnyLogic projeleri tarafından kullanılabilir.

B. Mevcut modelinizi güncelleştirme

Varolan modelinizdeki getObservable sarmalayıcı model veya bağlayıcı işlevinde çağrılabilecek herhangi bir işlev için Bonsai :

  1. İşlevin Özellikler penceresini açın.
  2. Gelişmiş bölümüne gidin.
  3. Erişim seçenekleri açılan listesinden "genel" i seçin.

C. Bağlayıcıyı güncelleştirme Bonsai

BonsaiAnyLogic 'teki bağlayıcı nesnesine tıklayın ve Bonsaialtında aşağıdaki bilgileri sağlayın:

  • Çalışma alanınızın KIMLIĞI.
  • Erişim anahtarınız.
  • Simülatör için benzersiz bir ad.

D. Yerleşik AnyLogic veritabanınızı geçirme

Not

Mevcut modeliniz yerleşik AnyLogic Database kullanmıyorsa, bu adımı atlayabilirsiniz.

Seçenek 1: veritabanı klasörünü kopyalama

  1. İstediğiniz Dosya Gezgininde her iki model dizinini de açın.
  2. Her iki modeli de AnyLogic 'de kapatın.
  3. Veritabanı klasörünü mevcut model klasörünüzdeki sarmalayıcı model klasörüne kopyalayın.

Seçenek 2: veritabanı yedeklemesi yapma ve geri yükleme

  1. Mevcut modelinizdeki veritabanı nesnesi özelliklerini açın.
  2. Veritabanını yedekle ' yi seçin ve yedekleme dosyasını makinenize kaydedin.
  3. Sarmalayıcı modeli için veritabanı nesnesi özelliklerini açın.
  4. Veritabanını geri yükle ' yi seçin ve yaptığınız yedek dosyayı seçin.
  5. Veritabanını geri yükledikten sonra, yedekleme dosyasını silebilirsiniz.
  1. BonsaiAraç kutusunu konumundan indirin Bonsai webpage on MATLAB-Central .
  2. Araç kutusu yükleyicisine (. mltbx) çift tıklayın.
  3. Varsayılan MATLAB/Simulink sürümünüz için araç kutusunu yüklemek üzere ekranınızda görünen istemleri izleyin.
  4. Simulink modelinizi açın.
  5. Mevcut modelinizi action , InitialConfig girdi ve states çıktı olarak değer olarak kabul edecek şekilde sarın.

    Sarmalanmış modelin Simulink ekran görüntüsü

    Giriş ve çıkışlarla sarmalanmış mevcut bir modelle birlikte Simulink ekran görüntüsü.

  6. Simulink kitaplık tarayıcısından aşağıdaki blokları ekleyin:
    • Bonsai
    • Sabit
    • MUX
    • Benzetimi durdur
  7. Değer ile sabit bir blok oluşturun False .
  8. Simülasyonun ilk durumunu göstermek için gereken sayıda sabit blok yapın.
  9. İlk özellik değerlerinizi birleştirmek ve MUX çıkış bağlantı noktasını InitialConfig mevcut modelinizdeki giriş bağlantı noktasına bağlamak Için MUX bloğunu kullanın.
  10. actionblobunun çıkış bağlantı noktasını, Bonsaiaction simulink modelinizin giriş bağlantı noktasına Bağlan.
  11. resetbloğun çıkış bağlantı noktasını Bonsai durdurma simülasyonu bloğuna Bağlan.
  12. statemevcut modelinizin çıkış bağlantı noktasını state bloğunun giriş bağlantı noktasına Bağlan Bonsai .
  13. Falsesabit bloğunu halted bloğun giriş bağlantı noktasına Bağlan Bonsai .
  14. Bloğa çift tıklayın Bonsai ve örnek saati olarak ayarlayın [DEFAULT_SIMULATION_RATE, 0] .

Tam bağlı modelin Simulink ekran görüntüsü

Yukarıdaki işlemde açıklandığı şekilde bağlı olan ilgili bloklarla birlikte Simulink Kullanıcı arabiriminin ekran görüntüsü.

2. Adım: Bonsai bağlayıcınızı yapılandırma

Ayrılmış bağlayıcılar, varsayılan olarak ilişkili simülatör öğesine özelleştirilir. İçinde tamamen işlevsel bir ayrılmış bağlayıcıya bir örnek görebilirsiniz Bonsai example: Cartpole . GitHub depo, dahil edilen cartpole Python simülatörünü kaydettirmek ve bağlamak için yerel olarak çalışır. Özelleştirilebilir öğeler, örnek dosyada TODOs olarak işaretlenir.

A. Sarmalayıcı sınıflarını yapılandırma

Sarmalayıcı modeli, için modelinizin başlangıç yapılandırmasını, eylem alanını ve izleme alanını tanımlamak için gereken üç Java sınıfını içerir Bonsai :

  • ModelConfig: eğitim bölümünü başlatmak için gereken tüm değişkenleri içermesi gerekir. Başlatma yapılandırması simülasyon mantığının bir parçası olarak gerçekleşidiğinde, bu sınıfı boş bırakabilirsiniz. ModelConfig değişkenlere, bağlayıcı nesnesinin ModelConfig alanından erişilebilir Bonsai ve Inkling dosyanızda tanımlanan simülatör yapılandırma değişkenlerine eşlenir.
  • ModelAction: Bonsai beyonun sarmalayıcı modeline geri aktardığı tüm değişkenleri içermesi gerekir. ModelAction değişkenlere, bağlayıcı nesnesinin ModelAction alanından erişilebilir Bonsai ve Inkling dosyanızda tanımlanan izin verilen beyinli eylemlerle eşlenir. ModelAction değerler, Bonsai her adımda modeli güncelleştirmek için beyinli tarafından sağlanır.
  • ModelObservation: benzetim için observable alanını tanımlamak için gereken tüm değişkenleri içermesi gerekir. İçinde tanımlanan değişkenler, ModelObservation işlevi tarafından her bir bölüm adımının başlangıcında doldurulur getObservable ve Inkling dosyanızda tanımlanan simülatör durumlarına eşlenir.

Önemli

BonsaiPlatform şu anda yalnızca sayısal alanlara (tamsayılar ve Double) ve dizilere veri türleri olarak izin veriyor.

B. getObservableSarmalayıcı modeli için işlevi güncelleştirme

Güncelleştirme işlemi, getObservable var olan modelinize bağlıdır, ancak ' de tanımlanan ModelObservation gözlemle öğelerinin her bir öğesini var olan modelden uygun bir çıktıyla ilişkilendirmek önemlidir.

Mevcut modelinizdeki alanlara ve işlevlere erişmek için, adları mevcut modeli temsil eden kök nesne ile önekleyin. Örneğin, var olan modelde adlı bir değişkene erişmek istiyorsanız, currTempMain.currTemp Bu konuma başvurmak için kullanın; burada Main sarmalayıcı modelinin kök aracı türüdür.

Önemli

İşleve eklediğiniz tüm kodlar getObservable ve Bonsai bağlayıcı var olan modelinize başvurmalıdır. Sarmalayıcı yalnızca gelen ve giden bilgileri paketleyip Bonsai mevcut modelinizin iletişim kurabilir.

C. BonsaiBağlayıcı alanlarını güncelleştirme

  1. Epısodestart, episodestepve durduruldu alanlarını mevcut modelinize davranan veya rapor veren kodla güncelleştirin.
Alan Kullanın Yerel değişkenler
Epısodestart sanal ortamı başlatma config (diğer adlar ModelConfig )
episodeStep sanal ortamı güncelleştirme action (diğer adlar ModelAction )
ayarın bir terminal durumunda ( True veya) benzetimi yapılıp yapılmayacağını belirtin False yok
  1. SIM_PARAMS. d adlı yeni bir dosya oluşturun ve benzeticiniz için gereken değişkenleri tanımlayın. Örnek:
    TemplateParam = 1;  %% dummy variable
    
  2. Başlangıç. d adlı yeni bir dosya oluşturun ve aşağıdaki kodu ekleyin:
    addpath(genpath(pwd))
    SIM_PARAMS
    DEFAULT_SIMULATION_RATE = -1;  % units: sec
    
  3. DEFAULT_SIMULATION_RATEBloğu modelinize göre aynı hızda çalıştırmak istiyorsanız-1 ' e (önerilir) ayarlı bırakın Bonsai . Aksi takdirde, istenen örnek hızınızı ikinci olarak ayarlayın.
  4. Bonsaiconfig. m adlı yeni bir dosya oluşturun ve aşağıdaki kodu ekleyin:
    % 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
    
  5. Açıklamalarla işaretlenen her satırı, %TODOBonsai çalışma alanınız ve mevcut simülatör ile ilgili ayrıntılarla güncelleştirin.
  6. Bonsaityağmur. d adlı yeni bir dosya oluşturun ve aşağıdaki kodu ekleyin:
    % 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
    
  7. Açıklamalarla işaretlenen her satırı %TODO aşağıdaki gibi güncelleştirin:
  • initialProp1 ... initialPropN : modelinizin başlangıç özellikleri olarak tanımlanan gerçek adlarla eşleşecek şekilde güncelleştirin.
  • initialConfig1: adı bonsaiConfig. m dosyasında tanımlanan başlangıç yapılandırma parametresiyle eşleşecek şekilde güncelleştirin.

3. Adım: Bonsai CLI ve ortamınızı yapılandırma

SIM_WORKSPACEVe SIM_ACCESS_KEY ortam değişkenlerini ayarlayın.

export SIM_WORKSPACE="YOUR_WORKSPACE_ID"
export SIM_ACCESS_KEY="YOUR_WORKSPACE_ACCESS_KEY"

Ardından, bonsai configure CLI için çalışma alanı kimliğinizi ayarlamak için komutunu çalıştırın Bonsai :

bonsai configure --workspace-id ${SIM_WORKSPACE}

4. Adım: SIM 'i varsayılan yapılandırmayla çalıştırma

Simülatörünü ' e bağlamadan önce Bonsai , bir varsayılan yapılandırmayla modelinizi yerel olarak çalıştırmalısınız ve beklendiği gibi davrandığından emin olun.

Simülatörü yerel olarak çalıştırmak için:

  1. AnyLogic 'teki Run (Çalıştır ) düğmesine tıklayın.
  2. Görüntülenen aşağı açılan listeden istediğiniz simülatör ' ı seçin.

Test çalıştırağınız için gözetimsiz (GUI olmadan) veya animasyonlu (GUI ile) deneme kullanabilirsiniz.

5. Adım: simülatörünü yönetilmeyen bir SIM olarak kaydetme

Python simülatörün yerel bir örneğini başlatın ve tarafından döndürülen oturum KIMLIĞINI aklınızda edin CreateSession .

Yerel AnyLogic model ' i başlatın. BonsaiBağlayıcı, simülatınızı Bonsai yönetilmeyen simülatör olarak otomatik olarak kaydeder.

Yerel Sıulink modelinizi başlatın. BonsaiAraç kutusu simülatinizi Bonsai yönetilmeyen simülatör olarak otomatik olarak kaydeder.

6. Adım: bir test beyiniyle yönetilmeyen simülatörünü çalıştırma

Simülatörünü, Bonsai çalışma alanınıza yönetilen (ölçeklenebilir) simülatör olarak eklemeden önce ile doğru iletişim kurabildiğini doğrulamanız gerekir.

  1. Bonsai UIuygulamasını açın.
  2. + Beyoluştur ' u seçin ve bir boş beyoluşturmak için istemi izleyin.
  3. Temel beyinörnek dosyasını açın ve mürekkep oluşturma şablonunu öğretin sekmesindeki boş kodlama paneline yapıştırın.
  4. Simülatör için geçerli durumlar ve eylemlerle şablonu yapılandırın.
  5. Eğitme düğmesini seçin.
  6. Yönetilmeyen simülatör listesinden simülatörünü seçin.

Birkaç dakika sonra, bölüm veri akışını MATLAB konsolunda görmeniz gerekir.

Yeterli test veriniz olduğunda, eğitimi durdur' u seçin. Simulink, test Run as CSV günlüklerinin Bonsai yapılandırma dosyanızda () ayarlanan dosya adı ile ayrıntılarını kaydeder bonsaiConfig.m .

Sonraki adımlar

Simülatörün yerel olarak bağlanması ve doğru davranışı doğrulayabilmeniz için, bunu yönetilen simülatör 'e dönüştürmeye ve beyinle öğreticiye ölçeklenmeye hazırlarsınız Bonsai .