Global Minimizer for C# (GMC#) Version 1.0b
Design documentation

 
  1. INTRODUCTION
  2. TOP LEVEL DESIGN
  3. GUI PACKAGE
  4. METHODS PACKAGE
  5. TASKS PACKAGE
  6. PROPERTIES PACKAGE
  7. CONFIGURATION PACKAGE
  8. ANALYZERS PACKAGE
  9. RESULT LOGGERS PACKAGE
  10. REFERENCE
 

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 design

Top level diagram describes general relationships between C# packages.

GUI package

 

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.
    1. Uses configuration package to load tasks and methods. 
    2. Displays methods and lets customize their properties.
    3. Displays tasks and lets customize their properties.
    4. Controls optimization workflow.
    5. Displays analyzers.
  • AnalysisSelectionDialog. This dialog lets select analyzer to display. It shows all available analyzers for selected task.

    Methods package

     

    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

    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

     

    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

    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

    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

    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] ).