design intelligence

nomoTools

Le logiciel nomoTools offre la possibilité de se dispenser de l'environnement de développement nomoSDK notamment pour la vérification, l'édition des liens et la compilation.

Le logiciel nomoTools est utilisable en ligne de commande. La commande -h permet d'afficher la notice suivant :

Usage : nomotools [option] [file]
 
[file] can be:
        A unit(.uni)
        A model(.mod)
        A program(.prg)
        A knowledge base(.bas)
        A inference engine(.eng)
        A unit after linking(.lnk)
        A unit after encoding(.cod)
        A log file of full rules(.fr)
        A log file of partial rules(.pr)
 
[option] can be:
        -h                 Help - display this message
        -parse             Valid XML file with basic grammar of the extension
                           (option by default of XML document)
        -link              Link a unit file(.uni) or a program file(.prg) or a
                           model file(.mod)
        -encode            Encode a unit file after linking (.lnk)
        -compile           Compile a unit file after encoding (.cod)
        -interface [l] [e] Generate the interface of a unit file after encoding
                           (.cod) in the language [l] and with a extension [e]
        -db [path]         Generate the database of unit file after encoding
                           (.cod) or log file (.pr .fr)
        -udb [path]        If exist update the database with log file (.pr .fr)
                           else create the database
        -csv [list]        Convert log file in CSV format, optional [list] in
                           CSV format (option by default of log files)
        -xml               Convert log file in XML format
        -seed [seed]       Convert log file of full rule(.fr) in SEED format,
                           [seed] is the origin seed
        -critical [-full]  Generate a unit for the maximal computing time of
                           the interpretation process from a encode file (.cod).
                           The option [-full] calculates the maximum number of
                           rules with knowledge base
        -time              Compile the file(.cod) from the critical unit generate
                           and evaluate the time process, after remove the seed

Avec ce logiciel, la compilation d'une unité nomo s'effectue selon les étapes suivantes :

  1. Vérifier la bonne forme du fichier avec la commande -parse example.uni
  2. Éditer les liens avec la commande -link example.uni
  3. Vérifier la bonne forme du fichier obtenu avec la commande -parse example.lnk
  4. Encoder le fichier avec la commande -encode example.lnk
  5. Vérifier la bonne forme du fichier obtenu avec la commande -parse example.cod
  6. Compiler le fichier obtenu avec la commande -compil example.cod qui vous donnera example.seed à l'endroit spécifier dans votre unité.

Attention, bien que nomoTools puisse vérifier la bonne forme d'un fichier utilisant une macro ou un formalisme, il n'en effectuera pas la transformation en nomo lors de l'édition des liens. Dans ce cas, il est nécessaire de passer par nomoSDK.

Afin de déterminer une fréquence d'horloge qui assure de manière certaine un temps de calcul suffisant pour le fonctionnement d'une base de règle, la commande -critical génère une base de règle correspondant au pire des cas d'une base de règles.

Plus précisément, toutes les règles ont un nombre de prémisses maximales, toutes les règles possèdent une spécificité identique de sorte qu'elles sont toutes évaluer. Les conditions sont constituer de prémisses identiques maximisant la combinatoire pour l'évaluation des règles. Par ailleurs, si une règle peut être maximisée alors toutes les règles seront considérées comme telles, si une prémisse possède une tolérance non nulle et fini alors toutes les tolérances de la même sorte seront non nulles et finies.

Le temps de calcul d'une interprétation avec cette base de règles générées, nécessairement plus important que celle de départ, se trouve estimé par la moyen de 1000 interprétations successives via la commande -time.

Par exemple, l'unité présenté dans le troisième tutoriel “tutorial_3.uni”, comportant une centaine de règles, se trouve circonscrite en terme de criticité par l'unité “tutorial_3_critical.uni” générée par -critical. Une fois l'édition des liens et l'encodage effectuées, la commande -time avec “tutorial_3_critical.cod” renvoie le temps de calcul maximal et le temps de calcul moyen d'une interprétation, avec un Intel® Core™2 Duo Mobile T9600 2.80 GHz :

Avec l'option -full le nombre de règles de l'unité générée s'appuie sur le nombre maximal de règles par type prévu dans la base de connaissance. Ici, cela revient à générer une base de règles près de mille règles, soit le temps de calcul maximal et le temps de calcul moyen d'une interprétation suivant :