ampl Namespace¶
-
namespace
ampl
¶ Classes
- class
AMPL
An AMPL translator. An object of this class can be used to do the following tasks:
Run AMPL code. See
ampl.AMPL.Eval
andampl.AMPL.EvalAsync
.Read models and data from files. See
ampl.AMPL.read
,ampl.AMPL.ReadData
,ampl.AMPL.ReadAsync
andampl.AMPL.ReadDataAsync
.Solve optimization problems constructed from model and data (see
ampl.AMPL.Solve
andampl.AMPL.SolveAsync
).Access single elements of an optimization problem. See the generic
ampl.AMPL.GetEntity
and the genericampl.AMPL.GetVariable
,ampl.AMPL.GetObjective
,ampl.AMPL.GetConstraint
,ampl.AMPL.GetSet
andampl.AMPL.GetParameter
.Access lists of available elements of an optimization problem. See
ampl.AMPL.GetVariables
,ampl.AMPL.GetObjectives
,ampl.AMPL.GetConstraints
,ampl.AMPL.GetSets
andampl.AMPL.GetParameters
.AMPL stores one or more problems which may consume substantial amount of memory. An AMPL object without any references to it will eventually be freed by the Java garbage collector and all the memory and other resources associated with it will be released. This includes any resources which are out of scope of the garbage collector such as open files or memory managed by the native code. Call
ampl.AMPL.Close
to release these resources explicitly.The initialisation of the Java representation of the AMPL entities (any class derived from
ampl.Entities.Entity
) is lazy and consists of two steps. When a function listing available elements is called, only a shallow list with names, types and declarations of the elements is populated. The same happens when a reference to a Java representation of one entity is obtained (through a call toampl.AMPL.GetEntity
or any other single entity factory function). When accessing any instance of an entity (through the methods ‘get’ of any class), the (memory hungry) list of instances for that entity is created.Consistency is maintained automatically. Any command issued to the translator through
ampl.AMPL.Eval
and similar functions invalidates all entities, and any further access to any entity will require communication between the native translator and the Java code. Conversely, any operation called through the Java equivalent function, like fixing variables or solving the model will invalidate only the entities involved. A list of dependencies between entities is automatically updated.Error handling is two-faced:
1. Errors coming from the underlying AMPL translator (e.g. syntax errors and warnings obtained calling the
ampl.AMPL.Eval
method) are handled by the eventampl.AMPL.Error
. Note that by default the event is disabled. To enable it, callampl.AMPL.EnableErrorAndWarningRouting
.2. Generic errors coming from misusing the API, which are detected in .NET, are thrown as exceptions.
The default implementation of the error handler throws exceptions on errors and prints to console on warnings.
The output of every user interaction with the underlying translator is handled by the event
ampl.AMPL.Output
, which is called at each block of output from the translator after the functionampl.AMPL.EnableOutputRouting
is called.- class
ConstraintInstance
- Represents a constraint instance and allows access to all the AMPL suffixes of the related instance. For documentation on the properties see
ampl.Entities.Constraint
. - class
DataFrame
A DataFrame object, used to communicate data to and from the AMPL entities.
An object of this class can be used to do the following tasks:
Assign values to AMPL entities (once the DataFrame is populated, use
ampl.AMPL.SetData
to assign its values to the modelling entities in its columns)Get values from AMPL, decoupling the values from the AMPL entities they originate via
ampl.Entities.Entity.GetValues
.A DataFrame object can be created in various ways via the various constructors: create a skeleton manually specifiying the number of indexing columns and the column headers; get column names (and number of indexing columns) from entities of the API passing them directly to the appropriate constructor, get values from AMPL, decoupling the values from the AMPL entities they originate from (via
ampl.Entities.Entity.GetValues()
).Populating a DataFrame object can be done adding row by row to a pre-existing skeleton via
ampl.DataFrame.AddRow
, setting whole columns of a pre-existing skeleton viaampl.DataFrame.SetColumn
or adding columns (including indexing columns) viaampl.DataFrame.AddColumn
. Modifying a DataFrame object can be done viaampl.DataFrame.SetColumn
or viaampl.DataFrame.SetArray
orampl.DataFrame.SetMatrix
Accessing data in a DataFrame can be done row by row usingampl.DataFrame.GetRow
or by column viaampl.DataFrame.GetColumn
.- class
Column
- class
Row
- class
Environment
- This class provides access to the environment variables and provides facilities to specify where to load the underlying AMPL interpreter.
- class
Instance
- Represent an instance of a modelling entity
- class
ObjectiveInstance
- Represents an objective instance and allows access to all the AMPL suffixes of the related instance. For documentation on the properties see
ampl.Entities.Objective
. - class
SetInstance
- A SetInstance object stores the information regarding a specific instance of
a set.The instances can be accessed through the function
ampl.Entities.Set.Get
of the parent entity or through its indexer. - class
MemberRange
- class
iterator
- class
Tuple
- AMPL immutable tuple
- class
VariableInstance
- Represents a variable instance and allows access to all the AMPL suffixes of the related instance. For documentation on the properties see
ampl.Entities.Variable
. - class
Variant
- AMPL base type, can store a number or a string
- class
VariantRef
- AMPL base type, can store a number or a string
- class