Bug List

Class add_index
this is fairly dumb at the moment: it cannot deal with
  • multiple dimensions {i in SET1,j in SET2}
  • SET valued expressions: {i in SET1 cross SET2}
  • conditions: {(i,j) in SET1:i<j}
SyntaxNodeIx does provide all these. Should replace the stack of add_index objects by a stack of SyntaxNodeIx objects

Member expandSet (SyntaxNode *set, vector< string > &member_list)
this is just so that the global data file can be read, eventually this should be removed.

Member find_var_ref_in_context (AmplModel *context, SyntaxNode *ref)
Should return a SyntaxNodeIDREF*.

Page Frontend
Currently no hashing is done in this search.

Page Known Problems
  • Currently *all* parameters must be global (i.e. declared in the top level block). This should be fixed once SML understands data files.
  • Variables that are defined over higher dimensional indexing sets must* have a dummy variable in their definition,i.e.
  • In a stochastic block all entities *must* have different names, even if they are defined in different stages, i.e.
  • At the moment all blocks have to contain at least a variable, otherwise the following assertion is triggered:

Member ModelComp::modifiedWriteAllTagged (std::ostream &fout)
modified_write should be called within the model writing process: it depends on addIndex/l_addIndex, i.e. some indexing expressions (and subbmodel names) should be added to entity names depending on where in the model it is called.

Class NlFile
The Hessian routines are not tested. The interface should probably change as well (i.e. pass in a list of variables w.r.t which the Hessian should be evaluated.

Member NlFile::findIxOfLocalVarsInNlFile (ExpandedModel *em, int *lvar)
We should change the way this method is called, so that it can just return the lvar stored on the map. Probably lvar should be returned as a C++ vector.

Member NlFile::getObjAMPL (int nvar, int *lvar, double *elts)
This only works for linear objective functions: no vector x at which the objective should be evaluated is passed in.

Member NlFile::indexList
findIxOfLocalVarsInNlFile should probably become a member of this class.

Page OOPS Backend
This part of the implementation needs a lot of comparing strings against strings in nested loops and is quite inefficient.

Page Solver Interface
This behaviour should be changed. Rather we should do something like Amplsolver:
  • Either, compile SML into a library that provides a call of the form

Member StochModel::expandStagesOfComp ()
this is just so that the global data file can be read, eventually this should be removed

Member StochModel::expandToFlatModel ()

Submodel components within sblock's is not supported yet This is not implemented when creating a nested AmplModel tree out of the StochModel.

: NO! need to translate all references to ModelComp (IDREF) that will currently refer to ModelComps of the StochModel into ModelComps of the appropriate FlatModel on the FlatModel tree. This might be modified by any (-1;...) expressions that refer to parents in the FlatModel tree I guess also need to do something with the Exp(...) expression

'this_nd' is a reserved variable now

Class SyntaxNode

This should probably be implemented by deriving subclasses, however an attempt for ID nodes resulted in problems with dynamic_casts

A comma separated list is currently represented by a SyntaxNode with opCode==COMMA and values[0/1] pointing to the first and last member in a linked list of SyntaxNodes. This linked list is implemented using _indexNode objects (which is a SyntaxNode plus a pointer to next). This is done to facilitate adding members to the list without knowing the dimension beforehand. Better implemented by replacing the SyntaxNode::values array with a C++ list.

Page The Structured Modelling Language (SML)

This is understood by the parser, but not implemented yet in the backend

Rather than implementing this as keywords 'node'/'stage' this should be done by declaring dummy variables for the NODES, STAGES set: