Coord: IMsFormulaTransformCoord;
The Coord property returns the current coordinate, in which calculation is executed.
Executing the example requires that the repository contains a modeling container containing a custom optimization model. The problem should have a unit that implements a custom algorithm. Consider the example of this unit contents.
Add links to the Ms and Xml system assemblies.
Public Class UserOptimization: Object, IMsUserOptimizationCallback
Public Sub OnLoad(Xml: IXMLDOMElement);
Begin
End Sub OnLoad;
Public Sub OnSave(Xml: IXMLDOMElement);
Begin
End Sub OnSave;
Public Sub OnBeforeExecute(Calculation: IMsMethodCalculation; Coord: IMsFormulaTransformCoord; Problem: IMsUserOptimizationProblem);
Begin
End Sub OnBeforeExecute;
Public Sub OnExecute(Runtime: IMsUORuntime);
Var
Coord: IMsFormulaTransformCoord;
i, c: Integer;
Begin
Coord := Runtime.Coord;
Debug.WriteLine("--------------------------------------");
c := Coord.Count;
Debug.Write("Coord: ");
For i := 0 To c - 1 Do
Debug.Write(Coord.Item(i).ToString + " ");
End For;
Debug.WriteLine("");
// Calculate equations in the current point
Runtime.Equations.ExecuteAll;
End Sub OnExecute;
Public Sub OnAfterExecute(Calculation: IMsMethodCalculation; Coord: IMsFormulaTransformCoord; Problem: IMsUserOptimizationProblem);
Begin
End Sub OnAfterExecute;
Public Sub OnSetupParams(Params: IMsModelParams);
Begin
End Sub OnSetupParams;
End Class UserOptimization;
When a custom optimization problem is is started, the OnExecute event will occur in each calculation point. The development environment console will display indexes of dimension elements that create a coordinate in each calculation point. After this all equations will be calculated.
See also: