Try to use Watson’s Tradeoff Analytics API

Overview Tradeoff Analytics is Helps users make better choices to best meet multiple conflicting goals. You do […]

広告ここから
広告ここまで

目次

    %e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-20-12-20-57

    Overview

    • Tradeoff Analytics is Helps users make better choices to best meet multiple conflicting goals.
    • You do only POST json at once
    • This API returns better choices

    Tradeoff Analytics | IBM Watson Developer Cloud

    How to call the API

    $ curl -X POST --user YOUR_USERNAME:YOUR_PASSWORD --header "Content-Type: application/json" --data @problem.json "https://gateway.watsonplatform.net/tradeoff-analytics/api/v1/dilemmas?generate_visualization=false" | jq .
    

    Request body(JSON)

    subject
    Subject of your choices
    columns
    Condition of your choice
    options
    Search target

    Example

    {
      "subject": "phones",
      "columns": [
        {
          "key": "price",
          "type": "numeric",
          "goal": "min",
          "is_objective": true,
          "full_name": "Price",
          "range": {
            "low": 0,
            "high": 400
          },
          "format": "number:2"
        },
        {
          "key": "weight",
          "type": "numeric",
          "goal": "min",
          "is_objective": true,
          "full_name": "Weight",
          "format": "number:0"
        },
        {
          "key": "brand",
          "type": "categorical",
          "goal": "min",
          "is_objective": true,
          "full_name": "Brand",
          "range": [
            "Apple",
            "HTC",
            "Samsung",
            "Sony"
          ],
          "preference": [
            "Samsung",
            "Apple",
            "HTC"
          ]
        },
        {
          "key": "rDate",
          "type": "datetime",
          "goal": "max",
          "full_name": "Release Date",
          "format": "date: 'MMM dd, yyyy'"
        }
      ],
      "options": [
        {
          "key": "1",
          "name": "Samsung Galaxy S4",
          "values": {
            "price": 249,
            "weight": 130,
            "brand": "Samsung",
            "rDate": "2013-04-29T00:00:00Z"
          }
        },
        {
          "key": "2",
          "name": "Apple iPhone 5",
          "values": {
            "price": 349,
            "weight": 112,
            "brand": "Apple",
            "rDate": "2012-09-21T00:00:00Z"
          }
        },
        {
          "key": "3",
          "name": "HTC One",
          "values": {
            "price": 299,
            "weight": 112,
            "brand": "HTC",
            "rDate": "2013-03-01T00:00:00Z"
          }
        },
        {
          "key": "4",
          "name": "Samsung Galaxy S5",
          "values": {
            "price": 349,
            "weight": 135,
            "brand": "Samsung",
            "rDate": "2014-04-29T00:00:00Z"
          }
        },
        {
          "key": "5",
          "name": "Apple iPhone 6",
          "values": {
            "price": 399,
            "weight": 118,
            "brand": "Apple",
            "rDate": "2013-09-21T00:00:00Z"
          }
        },
        {
          "key": "6",
          "name": "Apple iPhone 7",
          "values": {
            "price": 499,
            "weight": 118,
            "brand": "Apple",
            "rDate": "2014-09-21T00:00:00Z"
          }
        },
        {
          "key": "7",
          "name": "Sony Xperia",
          "values": {
            "price": 199,
            "weight": 120,
            "brand": "Sony",
            "rDate": "2014-08-21T00:00:00Z"
          }
        }
      ]
    }
    

    If you see..

    If you see following returns, some request parameter is wrong.

    Invalid UserId and/or Password

    {
      "code": 401,
      "error": "Not Authorized",
      "description": "2016-11-19T21:39:28-06:00, Error ERCDPLTFRM-DNLKUPERR occurred when accessing https://158.85.132.88:443/tradeoff-analytics/api/v1/dilemmas, Invalid UserId and/or Password. Please confirm that your credentials match the end-point you are trying to access. A common error is trying to use credentials from an experimental or beta release against a GA release or vice versa"
    }
    

    Missing parameters

    Following response if you see, please check your request body.

    “subject” not found

    {
      "error": "Data supplied is missing critical information. error_arg_check=\"subject cannot be null or empty\"",
      "code": 400
    }
    

    “columns” not found

    {
      "error": "Data supplied is missing critical information. No columns defined",
      "code": 400
    }
    

    “options” not found

    {
      "error": "Data supplied is missing critical information. no options found",
      "code": 400
    }
    

    Returns

    If your request succeed.You can see following JSON.

    {
      "problem": {
        "columns": [
          {
            "type": "numeric",
            "key": "price",
            "full_name": "Price",
            "range": {
              "low": 0,
              "high": 400
            },
            "format": "number:2",
            "goal": "min",
            "is_objective": true
          },
          {
            "type": "numeric",
            "key": "weight",
            "full_name": "Weight",
            "format": "number:0",
            "goal": "min",
            "is_objective": true
          },
          {
            "type": "categorical",
            "key": "brand",
            "full_name": "Brand",
            "range": [
              "Apple",
              "HTC",
              "Samsung",
              "Sony"
            ],
            "goal": "min",
            "preference": [
              "Samsung",
              "Apple",
              "HTC"
            ],
            "is_objective": true
          },
          {
            "type": "datetime",
            "key": "rDate",
            "full_name": "Release Date",
            "format": "date: 'MMM dd, yyyy'",
            "goal": "max",
            "is_objective": false
          }
        ],
        "subject": "phones",
        "options": [
          {
            "key": "1",
            "name": "Samsung Galaxy S4",
            "values": {
              "price": 249,
              "weight": 130,
              "brand": "Samsung",
              "rDate": "2013-04-29T00:00:00Z"
            }
          },
          {
            "key": "2",
            "name": "Apple iPhone 5",
            "values": {
              "price": 349,
              "weight": 112,
              "brand": "Apple",
              "rDate": "2012-09-21T00:00:00Z"
            }
          },
          {
            "key": "3",
            "name": "HTC One",
            "values": {
              "price": 299,
              "weight": 112,
              "brand": "HTC",
              "rDate": "2013-03-01T00:00:00Z"
            }
          },
          {
            "key": "4",
            "name": "Samsung Galaxy S5",
            "values": {
              "price": 349,
              "weight": 135,
              "brand": "Samsung",
              "rDate": "2014-04-29T00:00:00Z"
            }
          },
          {
            "key": "5",
            "name": "Apple iPhone 6",
            "values": {
              "price": 399,
              "weight": 118,
              "brand": "Apple",
              "rDate": "2013-09-21T00:00:00Z"
            }
          },
          {
            "key": "6",
            "name": "Apple iPhone 7",
            "values": {
              "price": 499,
              "weight": 118,
              "brand": "Apple",
              "rDate": "2014-09-21T00:00:00Z"
            }
          },
          {
            "key": "7",
            "name": "Sony Xperia",
            "values": {
              "price": 199,
              "weight": 120,
              "brand": "Sony",
              "rDate": "2014-08-21T00:00:00Z"
            }
          }
        ]
      },
      "resolution": {
        "solutions": [
          {
            "solution_ref": "1",
            "status": "FRONT"
          },
          {
            "solution_ref": "2",
            "status": "FRONT"
          },
          {
            "solution_ref": "3",
            "status": "FRONT"
          },
          {
            "solution_ref": "4",
            "status": "EXCLUDED"
          },
          {
            "solution_ref": "5",
            "status": "EXCLUDED"
          },
          {
            "solution_ref": "6",
            "status": "INCOMPLETE",
            "status_cause": {
              "message": "A column of a option is out of range. Option \"6\" has a value in column \"price\" which is:\"499\" while the column range\" is: [0.0,400.0]",
              "error_code": "RANGE_MISMATCH",
              "tokens": [
                "price",
                "499",
                "[0.0,400.0]"
              ]
            }
          },
          {
            "solution_ref": "7",
            "status": "DOES_NOT_MEET_PREFERENCE",
            "status_cause": {
              "message": "Option \"7\" has a value that does not meet preference for column \"brand\"",
              "error_code": "DOES_NOT_MEET_PREFERENCE",
              "tokens": [
                "brand"
              ]
            }
          }
        ]
      }
    }
    

    Where is better choise?

    The api’s choice is included in resolution parameters.

    $ curl -X POST --user YOUR_USERNAME:YOUR_PASSWORD --header "Content-Type: application/json" --data @problem.json "https://gateway.watsonplatform.net/tradeoff-analytics/api/v1/dilemmas?generate_visualization=false | jq ".resolution"
    {
      "solutions": [
        {
          "solution_ref": "1",
          "status": "FRONT"
        },
        {
          "solution_ref": "2",
          "status": "FRONT"
        },
        {
          "solution_ref": "3",
          "status": "FRONT"
        },
        {
          "solution_ref": "4",
          "status": "EXCLUDED"
        },
        {
          "solution_ref": "5",
          "status": "EXCLUDED"
        },
        {
          "solution_ref": "6",
          "status": "INCOMPLETE",
          "status_cause": {
            "message": "A column of a option is out of range. Option \"6\" has a value in column \"price\" which is:\"499\" while the column range\" is: [0.0,400.0]",
            "error_code": "RANGE_MISMATCH",
            "tokens": [
              "price",
              "499",
              "[0.0,400.0]"
            ]
          }
        },
        {
          "solution_ref": "7",
          "status": "DOES_NOT_MEET_PREFERENCE",
          "status_cause": {
            "message": "Option \"7\" has a value that does not meet preference for column \"brand\"",
            "error_code": "DOES_NOT_MEET_PREFERENCE",
            "tokens": [
              "brand"
            ]
          }
        }
      ]
    }
    

    If you check status parameters, you can check is the item is better choice.

    Front
    Once of your better choice.
    Excluded
    Excluded choices
    Incomplete / DOES_NOT_MEET_PREFERENCE
    Missing or incomplete parameters

    In this example, better choices is following items.

    • ID:1 – Samsung Galaxy S4
    • ID:2 – Apple iPhone 5
    • ID:3 – HTC One
    広告ここから
    広告ここまで

    Random posts

    Home
    Search
    Bookmark