Lokad’s Technical Documentation
Envision is the Domain Specific programming Language (DSL) developed by Lokad. Envision is dedicated to the predictive optimization of supply chains. While the Lokad platform includes many features beyond Envision, the bulk of Lokad’s capabilities are delivered through this DSL. In order to create a supply chain optimization app with Lokad, the Supply Chain Scientist is expected to write code, more specifically Envision code.
show label "Hello World" a1b11
This script produces a dashboard containing a single tile of type label
, spreading over two cells A1 and B1 following the Excel grid conventions (letters designate columns, numbers designate lines).
To run this script, go to try.lokad.com, this is the Envision code playground.
A commercial version with more capabilities than the playground is also available.
Post any Envision-related questions on our public forum.
Envision supports numeric calculations.
// Text following a double-slash is a commenta = 5b = (a + 1) * 3 / 4show scalar "Result will be 4.5" a1b1 with b // display a simple tile1
2
3
4
Envision loads data from flat files, as commonly extracted from enterprise systems.
read "/sample/orders.csv" as Orders expect [date] with Date : date Quantity : number show linechart "Daily Quantities" a1b4 with sum(Orders.Quantity)1
2
3
4
5
Envision adopts array programming, processing whole columns at once, like SQL. Envision is space sensitive, much like Python.
table Orders = with // hard-coding a table [| as Sku, as Date , as Qty, as Price |] // headers [| "a", date(2020, 1, 17), 5 , 1.5 |] [| "b", date(2020, 2, 5) , 3 , 7.0 |] [| "b", date(2020, 2, 7) , 1 , 2.0 |] [| "c", date(2020, 2, 15), 7 , 5.7 |] Orders.Amount = Orders.Qty * Orders.Price // all lines at once show table "Total Sales by SKU" a1b3 with Orders.Sku as "SKUs" // 1st column sum(Orders.Amount) as "Amount" { unit:"$" } // 2nd column group by Orders.Sku1
2
3
4
5
6
7
8
9
10
11
12
13
Envision approaches machine learning through Differentiable Programming.
table T = with [| as X, as Y |] [| 1, 3.1 |] [| 2, 3.9 |] [| 3, 5.1 |] [| 4, 6.0 |] autodiff T with // automatic differentiation params a auto // 1st parameter params b auto // 2nd parameter return (a * T.X + b - T.Y)^2 // loss for the stochatic gradient descent show scalar "Learned" a1c1 with "y ≈ \{a} x + \{b}"1
2
3
4
5
6
7
8
9
10
11
12
13
Envision approaches probabilistic modelling through a random variable algebra and Monte Carlo blocks.
montecarlo 1000 with // approximate π value x = random.uniform(-1, 1) y = random.uniform(-1, 1) inCircle = x^2 + y^2 < 1 sample approxPi = avg(if inCircle then 4 else 0)show scalar "π approximation" with approxPi // 3.221
2
3
4
5
6
Envision features a sub-language named StyleCode, inspired by CSS, to modify the tiles look & feel.
table Products = with [| as Product, as Color |] [| "pants", "blue" |] [| "shirt", "pink" |] [| "socks", "green"|] show table "My Products" a1b3 with Products.Product { textColor: #[Products.Color] } // curly brackets for StyleCode Products.Color1
2
3
4
5
6
7
8
9