LocalSolver logo
is now
Hexaly logo

We're excited to share that we are moving forward. We're leaving behind the LocalSolver brand and transitioning to our new identity: Hexaly. This represents a leap forward in our mission to enable every organization to make better decisions faster when faced with operational and strategic challenges.

This page is for an old version of Hexaly Optimizer. We recommend that you update your version and read the documentation for the latest stable release.

LSPModeler Class

class LSPModeler

Modeler environment. Main class of the modeler library which enables the creation and manipulation of a virtual machine that can load and execute programs written in the LSP language.

The creation of an LSPModeler environment results in the creation of a dedicated LocalSolver environment as well. For more information on how to use the solver’s API, see the localsolver::LocalSolver class.

See

localsolver::LocalSolver

See

LSPModule

Since

10.0

Summary

Functions

LSPModeler

Constructs a complete modeler environment.

~LSPModeler

Deletes this modeler environment and all associated objects.

loadModule

Loads a program written in LSP format into an LSPModule whose name corresponds to the provided filename (without path and .

createModule

Creates an empty module with the given name.

getSolver

Returns a pointer to the LocalSolver environment associated with this modeler instance.

createFunction

Creates an external LSPFunction.

createFunction

Creates an external LSPFunction.

createMap

Creates an LSPMap.

createNil

Creates a nil value.

createInt

Creates an integer value.

createDouble

Creates a double value.

createBool

Creates a boolean value.

createString

Creates a string value.

Functions

LSPModeler::LSPModeler()

Constructs a complete modeler environment. This has the effect of also creating a dedicated LocalSolver environment (see localsolver::LocalSolver::LocalSolver()). A pointer to the solver environment can be obtained via getSolver().

See

localsolver::LocalSolver

LSPModeler::~LSPModeler()

Deletes this modeler environment and all associated objects. This also deletes the solver environment, see localsolver::LocalSolver::~LocalSolver().

LSPModule LSPModeler::loadModule(const std::string &file)

Loads a program written in LSP format into an LSPModule whose name corresponds to the provided filename (without path and .lsp extension). The variables of the module can be manipulated through the associated LSPModule object.

Parameters

file – Path to the file.

Returns

Module created.

See

LSPModule

LSPModule LSPModeler::createModule(const std::string &moduleName)

Creates an empty module with the given name. The variables of the module can then be manipulated through the associated LSPModule object.

Parameters

moduleName – Module name.

Returns

Module created.

See

LSPModule

LocalSolver *LSPModeler::getSolver()

Returns a pointer to the LocalSolver environment associated with this modeler instance.

Returns

Solver.

See

localsolver::LocalSolver

LSPFunction LSPModeler::createFunction(LSPFunctor *functor)

Creates an external LSPFunction. The argument must be derived from LSPFunctor. When the function is called, the modeler instance will be made accessible to the function, as well as the arguments.

For instance, the following example creates a simple function that accepts two arguments and returns the sum of both values. The generated function is then exposed in an LSP module under the name “myCustomFunction”:

class MyCustomFunction : public LSPFunctor {
    LSPValue call(LSPModeler& modeler, const LSPValue* args, int nbArgs) override {
        return modeler.createDouble(arguments[0].asDouble() + arguments[1].asDouble());
    }
};

MyCustomFunction customFunctor;
module.setFunction("myCustomFunction", modeler.createFunction(&customFunctor));

Note: This method should only be used to expose functions used during the modeling process. You should not use this method to create a function that will be used during the resolution as anexternal function. In this case, you should instead use the solver API directly (see localsolver::LSExternalFunction)

Parameters

functor – Implementation of the external function.

Returns

Function created.

See

LSPFunctor

See

LSPFunction

LSPFunction LSPModeler::createFunction(const std::string &name, LSPFunctor *functor)

Creates an external LSPFunction. The argument must be derived from LSPFunctor. When the function is called, the modeler instance will be made accessible to the function, as well as the arguments.

For instance, the following example creates a simple function that accepts two arguments and returns the sum of both values. The generated function is then exposed in an LSP module under the name “myCustomFunction”:

class MyCustomFunction : public LSPFunctor {
    LSPValue call(LSPModeler& modeler, const LSPValue* arguments, int nbArguments) override {
        return modeler.createDouble(arguments[0].asDouble() + arguments[1].asDouble());
    }
};

MyCustomFunction customFunctor;
module.setFunction("myCustomFunction", modeler.createFunction("myCustomFunction", &customFunctor));

Note: This method should only be used to expose functions used during the modeling process. You should not use this method to create a function that will be used during the resolution as an external function. In this case, you should instead use the solver API directly (see localsolver::LSExternalFunction)

Parameters
  • name – Name of the function. The name is only used to identify the function in the generated stack trace when an exception occurs. Once created, the function can be associated with any variable in any module, regardless of its name.

  • functor – Implementation of the external function.

Returns

Function created.

See

LSPFunctor

See

LSPFunction

LSPMap LSPModeler::createMap()

Creates an LSPMap. A map is a data structure mapping keys to values that can also be used as an array-like structure. Keys and values can be of any type except nil. The map can be assigned to any variable in a module with LSPModule::setMap() or can be part of another map with LSPMap::setMap().

Returns

Map created.

See

LSPMap

LSPValue LSPModeler::createNil()

Creates a nil value.

Returns

Created nil value.

See

LSPValue

LSPValue LSPModeler::createInt(lsint value)

Creates an integer value. The value can be assigned to any variable in a module with LSPModule::setValue() or can be part of a map as key or value.

Returns

Created integer value.

See

LSPValue

LSPValue LSPModeler::createDouble(lsdouble value)

Creates a double value. The value can be assigned to any variable in a module with LSPModule::setValue() or can be part of a map as key or value.

Returns

Created double value.

See

LSPValue

LSPValue LSPModeler::createBool(bool value)

Creates a boolean value. Please note that there is no dedicated type for booleans in the modeler. They are simulated with integers: 1 denotes true and 0 denotes false. The created value can be assigned to any variable in a module with LSPModule::setValue() or can be part of a map as key or value.

Returns

Created boolean value.

See

LSPValue

LSPValue LSPModeler::createString(const std::string &value)

Creates a string value. The value can be assigned to any variable in a module with LSPModule::setValue() or can be part of a map as key or value.

Returns

Created string value.

See

LSPValue