Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

governify-csp-tools

Package Overview
Dependencies
Maintainers
2
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

governify-csp-tools

Governify CSP Tools

  • 0.3.0
  • Source
  • npm
  • Socket score

Version published
Maintainers
2
Created
Source

Governify CSP Tools

This is a Node.js module created to provide Constraint Satisfaction Problems (CSP) tools, such as:

  • Reasoner: solves a CSP in three different environments: local, remote and docker.
  • CSP model: defines a CSP on a JavaScript object based on MiniZinc language.
  • Builders: creates a CSP model from another model, e.g. AgreementMinizincBuilder(TODO:link)
  • Translators: translates a CSP model from a language to another language, e.g. CSPModelMinizincTranslator(TODO:link) and MinizincCSPModelTranslator(TODO:link)

Governify CSP Tools solves CSP by using:

  • MiniZinc, a free and open-source constraint modeling language.
  • GeCode, a toolkit for developing constraint-based systems and applications.

Governify CSP Tools executions relies on these command lines:

  • mzn2fzn
  • fzn-gecode
  • solns2out

Make sure you have these commands working if you want to execute the Reasoner on local.

This module follows the project-template-nodejs developing guidelines.

Install

npm install governify-csp-tools

Basic Usage

// Import
var Reasoner = require("governify-csp-tools").Reasoner;

// Define your CSP on a JavaScript object
var cspModel = {
  "variables": [
    {
      "id": "Var1",
      "type": "int"
    },
    {
      "id": "Var2",
      "range": {
        "min": "0",
        "max": "10"
      }
    }
  ],
  "constraints": [
    {
      "id": "C1",
      "expression": "Var1 == 0 -> Var2 <= 1"
    },
    {
      "id": "C2",
      "expression": "Var1 == 0"
    }
  ],
  "goal": "satisfy"
};

// Configure the CSP reasoner
var reasoner = new Reasoner({
    type: 'local', // type value also can be 'api' or 'docker'
    folder: 'csp_files' // name of the folder which stores .mzn, .fzn and .ozn temporary files
});

// Solve CSP
reasoner.solve(cspModel, (err, stdout, stderr, isSatisfiable) => {
    if (err) {
        // manage error
    } else {
        // manage solution
    }
});

You can define your CSP model by following the CSP schema.

Reasoner can also be configured to execute on remote (API) or docker. Take a look in reasoner configuration.

Reasoner configuration

This tool is responsible for executing and solving a CSP. The Reasoner can be configured to run in three different environments: local, remote (api) and docker.

Follow the configuration examples to set your reasoner or take a look on reasoner configuration schema.

Local configuration

To use this feature, you need to install mzn2fzn, fzn-gecode and solns2out commands. You can easily install all these commands by installing MiniZinc IDE available for Windows, Mac OS X or Linux.

Make sure you have these commands working before running reasoner on local.

To set your reasoner configuration on local you need to set type:"local", e.g.:

{
  "type": "local",
  "folder": "csp_files"
}

Remote configuration

You need to set "type":"api" and define api object on reasoner configuration, for example:

{
  "type": "api",
  "folder": "csp_files",
  "api": {
    "version": "v2",
    "server": "https://designer.governify.io:10044/module-minizinc",
    "operationPath": "models/csp/operations/execute"
  }
}

In the example, the final API endpoint will be: https://localhost/csp/api/v1/operations/execute

Docker configuration

To use this feature, you will need to have docker installed on the machine you are requiring governify-csp-tools.

To set your reasoner configuration on local you need to set type:"docker", e.g.:

{
  "type": "docker",
  "folder": "csp_files"
}

Reasoner schema

Please, follow the schema to set your reasoner configuration:

---

title: Reasoner configuration schema
type: 'object'
properties:
  type:
    enum:
    - 'local'
    - 'api'
    - 'docker'
  folder: # define a folder name to save .mzn, .fzn and .ozn temporary files
    type: 'string' 
  api: # only if type is 'api'
    type: 'object'
    properties:
      version:
        type: 'string'
      server:
        type: 'string'
      operationPath:
        type: 'string'
required:
  - 'type'
  - 'folder'

CSP model schema

This schema has been created to describe CSP problem on YAML, which in turn can be translated to MiniZinc afterward.

By now, this schema allows you to define:

  • Parameters.
  • Variables.
  • Constraints.
  • Goal.

The CSP model JSON schema expressed on YAML is:

---

title: 'CSP model JSON schema'
type: 'object'
properties:
  parameters:
    type: 'array'
    items:
      type: 'object'
      properties:
        id:
          type: 'string'
        type:
          enum:
            - 'bool'
            - 'boolean'
            - 'double'
            - 'float'
            - 'int32'
            - 'int64'
            - 'integer'
            - 'number'
        value:
          type: 'string'
        values: # only for 'enum' type
          type: 'array'
          items:
            type: 'string'
      required:
        - 'id'
        - 'type'
  variables:
    type: 'array'
    items:
      type: 'object'
      properties:
        id:
          type: 'string'
        type:
          type: 'string'
        range:
          type: 'object'
          properties:
            min:
              type: 'string'
            max:
              type: 'string'
      required:
        - 'id'
  constraints:
    type: 'array'
    items:
      type: 'object'
      properties:
        id:
          type: 'string'
        expression:
          type: 'string'
      required:
        - 'id'
        - 'expression'
  goal:
    type: 'string'
required:
  - 'variables'
  - 'constraints'
  - 'goal'

Latest release

The version 0.3.0 is the latest stable version of governify-csp-tools component. see release note for details.

For running:

  • Download latest version from 0.3.0

Keywords

FAQs

Package last updated on 30 Mar 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc