Difference between revisions of "Calc/Drafts/Solver Infrastructure"
From Apache OpenOffice Wiki
(→API: changed operator order) |
|||
Line 12: | Line 12: | ||
{ | { | ||
LESS_EQUAL, | LESS_EQUAL, | ||
− | |||
EQUAL, | EQUAL, | ||
+ | GREATER_EQUAL, | ||
INTEGER, | INTEGER, | ||
BINARY | BINARY |
Latest revision as of 14:27, 5 December 2007
This page is about the UNO API and the user interface which together serve as the basis for optimization solver components in Calc.
Specification
The UI specification is at http://specs.openoffice.org/calc/features/Solver.odt.
API
Here's a rough sketch of the planned API (service com.sun.star.sheet.Solver):
enum SolverConstraintOperator { LESS_EQUAL, EQUAL, GREATER_EQUAL, INTEGER, BINARY }; struct SolverConstraint { com::sun::star::table::CellAddress Left; SolverConstraintOperator Operator; any Right; }; interface XSolver: com::sun::star::uno::XInterface { [attribute] XSpreadsheetDocument Document; [attribute] com::sun::star::table::CellAddress Objective; [attribute] sequence< com::sun::star::table::CellAddress > Variables; [attribute] sequence< SolverConstraint > Constraints; [attribute] boolean Maximize; void solve(); [attribute, readonly] boolean Success; [attribute, readonly] double ResultValue; [attribute, readonly] sequence< double > Solution; }; service Solver: XSolver;
The dialog allows selection of cell ranges, and splits them into individual cells (for simplicity of the API). The order of values in the “Solution” sequence matches the order of cells in “Variables”.