Global Minimizer for C# (GMC#) Version
1.0b
Design documentation
Introduction
The GMC# system is class framework for implementing and testing custom
minimization tasks and methods. The application is highly flexible and
can be extended in many ways. This document is dedicated for design explanation.
Top level design
Top level diagram describes general relationships between C# packages.
GUI package
This package is mediator between tasks, methods, result loggers,
analyzers, properties and configuration packages. Also, it represents GUI
for user.
MainWindow. This class is main. It concatenates
other classes.
- Uses configuration package to load tasks and methods.
- Displays methods and lets customize their properties.
- Displays tasks and lets customize their properties.
- Controls optimization workflow.
- Displays analyzers.
AnalysisSelectionDialog. This dialog lets select analyzer
to display. It shows all available analyzers for selected task.
Methods package
This package is describes method interfaces and some
implemented methods.
Customizable. This interface represents customizable
property such as any value, choise value and others.
Method. This is interface for methods. All methods
takes task, which must be optimized and result logger, where to place results.
MethodBase. This class adds customization possibility
through GUI.
Mig1. Class of Mig1 method.
IPMethodBase, Bayes, ExkorMethodBase, Exkor. Bayes
and Exkor classes of methods.
Point. Represents n-dimensional point of domain.
RandomPoint. Represens n-dimentional random point of
domain.
LPPoint. Represents point used in Bayes method.
Tasks package
This package is contains task classes (functions that
must be optimized by using various methods).
Customizable. This interface represents customizable
property such as any value, choise value and others.
Task. This interface defines calculatable function
methods: domain and function.
TaskWithAnalyzers. The same as Task, but has defined
analyzers, which displays results.
Domain. This class represents set of possible arguments.
Sin. This class calculates Sin.
SinDomain. This class defines set of Sin arguments.
Square. This class calculates Square task.
SquareDomain. This class defines set of Square
arguments.
Properties package
This package is dedicated for user input gathering and converting to
method and task data.
Property. This is interface that represents all
customizable properties of methods and tasks.
FieldProperty. It stores data from simple input field
that manages FieldProvider .
ChoiseProperty. It stores data from choice box.
RangeProperty. It stores data from two simple input
field(they manage two FieldProvider objects) that
is used for range specification.
PropertyProvider. This interface provides methods
for setting and getting values from GUI fields.
FieldProvider. This class implements PropertyProvider
and sets and gets data to and from simple GUI field.
ArrayElementProvider. This class implements
PropertyProvider and sets and gets data to and from multiple
GUI fields.
PropertyManager. This interface provides methods
needed to manage and store properties (adds, removes).
PropertyList. This class inherits PropertyManager
and realizes methods.
TaskInfo. This class stores entered by user information(properties)
about task.
ProviderControlList. This class stores and manages
providers, applies changes to GUI.
MethodInfo. This class stores entered by user information(properties)
about method.
TaskMethodCache. This class stores loaded and created
tasks and methods, provides information about task and method.
Configuration package
This package is dedicated for configuration file parsing.
ConfigurationEntry. It represents configuration file
entry: tasks or method and library, where stored these classes implementation.
ConfigurationException. This exception class is thrown
when configuration parsing error occurs.
XMLDataParser. This is main configuration parsing class.
This object takes file name (where is stored configuration in XML format)
and parses it (finds tasks, methods and libraries where methods and tasks
are implemented).
Analyzers package
This package is transforms result loggers data into own data and displays
task results in various charts.
ChartData. This class stores transformed result logger
data.
Chart. Abstract class for chart painting. Takes ChartData
as data and paints chart into Graphics object.
LineChart. LineChart data draws line chart (lines could
be concatenated or not).
Projection. This dialog class transforms data and displays projection.
Convergence. This dialog class transforms data and
displays projection.
Result loggers package
This package is used to access, manipulate and store results.
Result. This class stores result at appropriate tasks
domain point.
ResultLogger. Interface for logging results (uses
method classes).
ResultRepository. Interface for manipulating with results
(uses analyzers classes).
ResultSet. This class implements Result and ResultLogger,
stores results.
NewValueEventArgs. This is event class thrown when
new optimization result occurs.
Minimizer. This class controls workflow of minimization,
works as seperate thread and runs method with task.
Reference
Jonas Mockus ([email protected]
).