Free cookie consent management tool by TermsFeed Policy Generator

Opened 4 years ago

Last modified 2 years ago

#3026 reviewing feature request

Integration into SymSpace

Reported by: dpiringe Owned by: swagner
Priority: medium Milestone: HeuristicLab 3.3.17
Component: General Version: branch
Keywords: Cc:


STP4.4 Interfacing beyond Mechatronics / K24401 - SymSpace

Change History (97)

comment:1 Changed 4 years ago by dpiringe

r17228 created a branch for the ticket

comment:2 Changed 4 years ago by dpiringe


  • added first prototype for:
    • creating templates
    • initialize a optimizer out of a template
  • first attempts to create the option to extend the template generation and initialisation (with Transformers -> json To IItem, IItem to json) without serializing/deserializing the whole IItem

comment:3 Changed 4 years ago by dpiringe


  • changed the namespace from ParameterTest to HeuristicLab.Manufacture
  • added an extension method for Type to get the distance of an interface based on the target type
  • renamed methods ToData, SetValue to Extract, Inject
  • new implementation of the template generation with transformers (not the final name)
  • started to use the new transformers for the instantiation of IOptimizer-objects (out of a template)
  • new transformers: LookupParameterTransformer and DummyTransformer

comment:4 Changed 4 years ago by dpiringe


  • deleted IItemExtensions.cs
  • fixed a bug in GetInterfaceDistance in TypeExtensions.cs -> generic types were ignored
  • lots of code clean ups
  • added new transformers: ParameterizedItemTransformer, MultiCheckedOperatorTransformer

comment:5 Changed 4 years ago by dpiringe


  • renamed ParameterData to Component
  • renamed File Template.cs to Component.cs

comment:6 Changed 4 years ago by dpiringe


  • deleted Util.cs
  • BaseTransformer merges now the component with its reference (if a reference exists) -> easier handling for transformers with parameterizedItems
  • MultiCheckedOperatorTransformer now sets the type name as default value
  • added a type list at the end of the template file -> is needed to instantiate objects
  • changed JCGenerator and JCInstantiator to test a format where FreeParameters and StaticParameters are saved as single Parameter array

comment:7 Changed 4 years ago by dpiringe

  • Status changed from new to accepted

comment:8 Changed 4 years ago by dpiringe


  • renamed CustomWriter to CustomJsonWriter and extracted it into a separate file
  • removed property ParameterizedItems from Component
  • added helper methods for path generation in Component
  • reverted the single parameter array idea back to the FreeParameters and StaticParameters idea
  • now there hidden parameters are also handled

comment:9 Changed 4 years ago by dpiringe

r17281: renamed Transformers -> ...Transformer to ...Converter, ITypeTransformer to IJsonItemConverter, Transformer to JsonItemConverter

comment:10 Changed 4 years ago by dpiringe

r17282: changed the converter selection from an automated mechanism (with interface distances) to an explicit mechanism (with priorities)

comment:11 Changed 4 years ago by dpiringe

r17283: renamed Component to JsonItem

comment:12 Changed 4 years ago by dpiringe

r17284: renamed namespace and project from HeuristicLab.Manufacture to HeuristicLab.JsonInterface

comment:13 Changed 4 years ago by dpiringe


  • added class for constants -> Constants
  • added new converter -> ValueLookupParameterConverter
  • fixed a bug with type extension IsEqualTo
  • fixed converter priorities

comment:14 Changed 4 years ago by dpiringe


  • changed project type from console to library
  • activated signing
  • lots of refactors in JCInstantiator and JsonItem

comment:15 Changed 4 years ago by dpiringe

r17323 added unit tests for HeuristicLab.JsonInterface

comment:16 Changed 4 years ago by dpiringe


  • added new project HeuristicLab.JsonInterface.App -> takes two arguments (template and config) to create an IOptimizer-Item, starts the run and writes the results to a file (currently hardcoded: C:\Workspace\test.txt)
  • made HeuristicLab.JsonInterface and HeuristicLab.JsonInterface.App to valid plugins
  • fixed a reference resolving bug with not-changeable parameters

comment:17 Changed 4 years ago by dpiringe


  • changed the access modifiers in Constants from public to internal
  • added comments in JCGenerator
  • the config file for JCInstantiator is now optional
  • added Runner.cs (forgot last commit)

comment:18 Changed 4 years ago by dpiringe


  • added new project: HeuristicLab.JsonInterface.OptimizerIntegration -> to generate/load .json templates in HeuristicLab.Optimizer
  • added new menu dropdown items (Import/Export) in HeuristicLab.Optimizer -> they are only active when they have items
  • added item for Import/Export menu items (Json-Template), logic in file FileManager.cs in project HeuristicLab.JsonInterface.OptimizerIntegration
  • repositioned CloseMenuItem, CloseAllMenuItem and added new seperator in menu File (to separate import/export from save/open and close/closeAll)

comment:19 Changed 4 years ago by dpiringe

r17339 fixed a bug with path generation

comment:20 Changed 4 years ago by dpiringe


  • in JsonItem:
    • renamed property Default to Value
    • removed usage of Reference for ValueLookupParameter
    • created new property ActualName for the actual name and using property Value for the value of an ValueLookupParameter
  • fixed a bug in ValueTypeMatrixConverter -> now it correctly resizes ValueTypeMatrix<T>
  • fixed a bug in ValueParameterConverter -> when ActualValue is null, but there is data for it, a new instance will get created

comment:21 Changed 4 years ago by dpiringe

r17346 fixed a bug in ValueTypeArrayConverter -> now it correctly resizes ValueTypeArray<T>

comment:22 Changed 4 years ago by dpiringe


  • added ConvertableAttribute, a new attribute for classes/structs (usage: convertable with JsonInterface)
  • changed JCGenerator -> is now a static class with one public static method Instantiate
  • changed JCInstantiator -> is now a static class with one public static method GenerateTemplate
  • refactored JsonItem

comment:23 Changed 4 years ago by dpiringe


  • relocated GetMaxValue and GetMinValue from ValueTypeValueConverter into BaseConverter
  • fixed a bug in ConstrainedValueParameterConverter (from GetType().Name to ToString())
  • printing now PrettyNames for types
  • added comments
  • added StorableConverter.cs (not finished, maybe not a good converter)
  • added ValueRangeConverter.cs for DoubleRange and IntRange
  • added ParameterConverter.cs for default parameter conversion

comment:24 Changed 4 years ago by dpiringe


  • relocated BuildJsonItem from JCInstantiator into JsonItem
  • in JsonItem: removed JContainer usage in setter for Value (now in BuildJsonItem)

comment:25 Changed 4 years ago by dpiringe


  • added new Converters:
    • CheckedItemListConverter
    • ItemCollectionConverter
    • PrimitiveConverter: not implemented yet
    • ConfigurableConverter: maybe this converter can replace all others
  • added program for testing -> HeuristicLab.ConfigStarter
  • added the option to register converter with an attic guid

comment:26 Changed 4 years ago by dpiringe


  • extended the BaseConverter class to set the type of the extracted value and removed the assignment of type in all other converters
  • fixed a bug in ConfigurableConverter -> now it correctly iterates through all items from an IEnumerable and calls the extract callback
  • MultiCheckedOperatorConverter:
    • deleted unnecessary code line
    • now adds operators to parameters (instead of operator list, because the operator list will get removed in a future commit)
    • does not set the path of its added items anymore
  • ParameterBaseConverter removed unnecessary code lines
  • deleted ParameterBaseConverter
  • reimplemented StorableConverter to test it again (still not really useable, because it bloats the template massively)
  • fixed a pathing bug in ValueParameterConverter (extended ValueRangeConverter, ValueTypeArrayConverter, ValueTypeMatrixConverter, ValueTypeValueConverter to archive this)
  • JCGenerator now only writes a single array with parameters (only FreeParameters) and saves a .hl File to test a new type of implementation of the whole JsonInterface
  • fixed a bug in JsonItem -> now it replaces the name in path of the item (not the whole path as it was before)

comment:27 Changed 4 years ago by dpiringe


  • added new converter RegressionProblemDataConverter
  • added new unit test class (only a skeleton)

comment:28 Changed 4 years ago by dpiringe


  • removed classes:
    • CheckedItemListConverter: unnecessary
    • ItemCollectionConverter: unnecessary
    • PrimitiveConverter: not possible to implement because it needs to Extract/Inject from/into objects (but interfaces pretends IItem)
    • StorableConverter: unnecessary
    • ConfigurableConverter: unnecessary
  • removed graphviz code in Heuristiclab.ConfigStarter/Program.cs
  • updated Constants
  • some simple code refactors in BaseConverter
  • in JsonItem:
    • renamed Parameters -> Children
    • removed Properties: Operators, Type, Reference, IsConfigurable, IsParameterizedItem
    • removed unnecessary/old code
  • implemented a new way to get data from an object, which is a matrix, in ValueTypeMatrixConverter method: CopyMatrixData
    • converts the object into an array -> rows: from array.Length, cols: when the length is > 0 pick length of first array of index 0 (it is saved as an array of arrays)
  • created a binding flag const in ValueRangeConverter to prevent duplicates in code

comment:29 Changed 4 years ago by dpiringe


  • deleted: ConvertableAttribute, DummyConverter, ObjectExtensions
  • renamed: CustomJsonWriter -> SingleLineArrayJsonWriter, JCInstantiator -> JsonTemplateInstantiator
  • added: JsonItemConverterFactory, UnsupportedJsonItem
  • IJsonItemConverter:
    • added two new properties: Priority and ConvertableType -> because converters are automatically collected by plugin infrastructure now
    • Extract, Inject references a root converter now -> typically an instance of JsonItemConverter -> to prevent cycles
  • JsonItemConverter:
    • now implements the interface IJsonItemConverter
    • is now a dynamic class
    • is only instantiable with an factory (JsonItemConverterFactory)
    • still has the old (but now public) static methods Extract and Inject (without ref param IJsonItemConverter root) -> creates instance with factory and calls methods of instance
    • removed register and unregister methods, because the factory collects all converters automatically now (on first call of Create)
    • has cycle detection for Extract and Inject
    • renamed method Get to GetConverter

comment:30 Changed 4 years ago by dpiringe


  • moved from usage of IAlgorithm to IOptimizer (in JCGenerator and JsonTemplateInstantiator)
  • added new converter: AlgorithmConverter

comment:31 Changed 4 years ago by dpiringe


  • fixed a bug in BaseConverter -> the range for percent values should be returned correctly now
  • fixed a bug in ConstrainedValueParameterConverter, ParameterizedItemConverter, ValueParameterConverter -> unsupported json items get filtered now
  • JCGenerator is now a dynamic class and can return all JsonItems for an IOptimizer now (instead of string only) + it is now possible to generate an template string with an IEnumerable<JsonItem>
  • added first version of an export dialog for JsonInterface
    • it is organized with a main view (for the dialog) and some user controls (for a better visualization of an JsonItem -> to reduce wrong user inputs)
    • the user controls inherit a base control, which organizes some base values of an JsonItem

comment:32 Changed 4 years ago by dpiringe


  • added a new way to setup the targeted result types
  • added new ui controls: NumericRangeControl, JsonItemArrayControl, JsonItemDefaultControl
  • redesigned export dialog -> now the user can navigate with a tree view
  • enhanced JsonItemVM

comment:33 Changed 4 years ago by dpiringe


  • added interfaces IJsonItem and IJsonItemValidator
  • replaced every reference JsonItem with IJsonItem

comment:34 Changed 4 years ago by dpiringe


  • simplified converter inheritance:
    • BaseConverter now only has Inject and Extract from IJsonItemConverter as abstract methods
    • removed ParameterBaseConverter
    • concrete converters have to initialize their JsonItem now -> enables better handling with different types of JsonItem

comment:35 Changed 4 years ago by dpiringe

r17408 moved JsonItem, ResultItem and UnsupportedJsonItem into new folder Models

comment:36 Changed 4 years ago by dpiringe


  • deleted JsonItemArrayControl and JsonItemDefaultControl
  • redesigned architecture for JsonItem: now there are different types of JsonItem (IntJsonItem, BoolJsonItem, ...) -> for better type safety and expandability
  • fixed bug in BaseConverter for GetMinValue and GetMaxValue for IntValue, but ignored for other value types (DoubleValue, DateTimeValue, ...) because the redesign of JsonItem-Architecture can make these two methods obsolet soon
  • fixed bug in JsonItemConverter to prevent null pointer exceptions
  • refactored value and range converters -> removed complicated generic ValueTypeValueConverter and ValueRangeConverter and implemented the necessary methods directly in concrete classes (improves readability and removes the need of reflection)
  • redesigned view handling in OptimizerIntegration -> dynamically seaches for JsonItemVMBase implementations, which are connected with a view
    • this enables better scaling with more user controls
  • JsonItemVMBase implements MVVM architecture

comment:37 Changed 4 years ago by dpiringe


  • deleted JsonItemVM
  • reduced code duplicates in JsonItemValueControl
  • implemented logic for entering ranges -> automatically sets to min/max value of datatype when checkbox is not checked

comment:38 Changed 4 years ago by dpiringe

r17412 code cleanup

comment:39 Changed 4 years ago by dpiringe


  • added initial VM (ArrayValueVM) and control for array values (JsonItemArrayValueControl)
  • new types of JsonItems for better type safety:
    • for arrays: DoubleArrayJsonItem, IntArrayJsonItem, BoolArrayJsonItem
    • for matrix: DoubleMatrixJsonItem, IntMatrixJsonItem, BoolMatrixJsonItem
  • refactored ValueTypeArrayConverter and ValueTypeMatrixConverter -> better type safety with new JsonItems
  • enhanced StringValueVM and implemented JsonItemValidValuesControl with MVVM architecture
  • the VM of JsonItemBaseControl is now protected (was private)
  • improved JsonItem<V,R> -> now handles JTokens correctly

comment:40 Changed 4 years ago by dpiringe


  • refactored ranged based VMs -> created new 'base' class for ranged based VMs RangedValueBaseVM
  • renamed AddChilds to AddChildren
  • implemented ArrayValueVM and JsonItemArrayValueControl
  • added ranges for array and matrix values

comment:41 Changed 4 years ago by dpiringe


  • renamed JsonItemArrayValueControl to JsonItemMultiValueControl
  • extracted converter logic from property Value in JsonItem<V,R> into new private method ConvertObject
  • added references to TreeNode and TreeView in JsonItemVMBase -> for additional user feedback when enabling/disabling an item (changes the fore color of referenced node)
  • changed implementation and interplay between ArrayValueVM and JsonItemMultiValueControl -> removed the direct access of property DataSource of DataGridView -> now: dynamically adds new columns/rows and accesses grid cells manually (better handling with matrices)
  • added new VM MatrixValueVM

comment:42 Changed 4 years ago by dpiringe


  • tree view is expanded on default now
  • fixed a bug with wrong anchors in JsonItemRangeControl and JsonItemValueControl
  • fixed a bug with wrong width for loaded user controls in ExportJsonDialog

comment:43 Changed 4 years ago by dpiringe


  • added property Description in IJsonItem and updated all construction calls
  • updated UnsupportedJsonItem with unsupported property Description
  • updated JsonItemBaseControl and JsonItemVMBase for new property Description

comment:44 Changed 4 years ago by dpiringe


  • set read-only to false for name input (in JsonItemBaseControl)
  • result items now can be selected/deselected in export dialog
  • removed metadata.problem property and renamed metadata.optimizer property to TemplateName in json template
  • fixed bug with wrong description for result items in AlgorithmConverter
  • refactored a lot of code in JCGenerator and added the need for a directory path (location for the template files)
  • fixed a null reference bug in JsonItemValidator (cannot try to iterate through possible null referenced collections)

comment:45 Changed 4 years ago by dpiringe


  • removed unnecessary code in FileManager
  • updated ExportJsonDialog and Testprogram (Heuristiclab.ConfigStarter/Program.cs) to use the new GenerateTemplate method

comment:46 Changed 4 years ago by dpiringe


  • fixed a bug in HeuristicLab.JsonInterface.App -> now the Runner checks if the instantiated optimizer is an EngineAlgorithm, if true: Engine = SequentialEngine (engine can be configured in later versions)
  • added a TabControl in ExportJsonDialog for parameters and results
  • updated parameter tree view with checkboxes (and linked them with VM)
  • renamed ActivatedResults to Results for templates
  • fixed a bug with injection of operators in MultiCheckedOperatorConverter -> now operators of an ValueParameter get set correctly
  • updated MultiCheckedOperatorConverter to extract/inject parameters of operators
  • fixed bug with path for template -> removed usage of method Path.GetDirectoryName, returned wrong results
  • splitted cache for JsonItemConverter into a cache for injection and extraction
  • JsonTemplateInstantiator now uses first item in objects array instead of searching for an object with template name

comment:47 Changed 4 years ago by dpiringe


  • added new CLI argument StringArgument
  • removed unnecessary check in StartArgument
  • changed output format from simple .txt to .json in HeuristicLab.JsonInterface.App.Runner
  • user has to enter output path now when executing JsonInterface on console

comment:48 Changed 4 years ago by dpiringe


  • added support for string values without range limitation (dropdown gets automatically replaced by textbox)
  • fixed a UI bug for JsonItemValidValuesControl -> now the control resizes correctly
  • fixed a bug in AlgorithmConverter -> now it searches for the ItemName (instead of Name) in method Inject
  • fixed a bug in StringValueConverter -> now it sets the correct name

comment:49 Changed 4 years ago by dpiringe


  • added two new methods in IJsonItem -> FixatePath and LoosenPath to fixate/loosen the path (to enable name changing without effects on path)
  • set IsInRange to virtual and made overrides for IntMatrixJsonItem and DoubleMatrixJsonItem (IsInRange is a bad name and needs to be renamed in future versions)
  • implemented basic validation feedback with ErrorProvider for some inputs (templateName, Name, Range)
  • now all items gets validated before export (validation errors are shown with ErrorHandling.ShowErrorDialog)
  • added a check in AlgorithmConverter to prevent an exception for accessing the first element of an empty IEnumerable

comment:50 Changed 4 years ago by dpiringe


  • made interfaces for array/matrix JsonItems and for their VMs aswell (IArrayJsonItem, IArrayJsonItemVM, IMatrixJsonItem, IMatrixJsonItemVM), incl. base classes (ArrayJsonItemBase, ArrayValueVM, MatrixJsonItemBase, MatrixValueVM)
  • changed inheritance structure for already existing array/matrix JsonItems -> they inherit now from new base array/matrix base classes
  • added input elements to configure the size of an matrix or array in JsonItemMultiValueControl (incl. VM binding and validation)
  • splitted file JsonItems.cs into separate files for their corresponding types (IntJsonItems.cs, DoubleJsonItems.cs, BoolJsonItems.cs, StringJsonItem.cs, DateTimeJsonItem.cs)
  • changed location of deserialization of json values from JsonTemplateInstantiator into IJsonItem (implemented in JsonItem and set to virtual, overridden in MatrixJsonItemBase and ArrayJsonItemBase)
  • added new CLI argument StringArgument
  • some little UI improvements (location fixes, anchor fixes, ...)

comment:51 Changed 4 years ago by dpiringe


  • renamed ResultItem to ResultJsonItem
  • implemented RegressionProblemDataConverter
  • added support for "named matrices" (named = rows and columns have names) -> INamedMatrixJsonItem incl. base classes and views
  • added a bool property Active in IJsonItem -> marks items, which should be written into the template

comment:52 Changed 4 years ago by dpiringe


  • the runs of an optimizer gets cleared before starting it in HeuristicLab.JsonInterface.App.Runner now
  • all runs of an optimizer gets cleared when exporting it with ExportJsonDialog
  • fixed a bug in CommandLineArgumentHandling: now always returns a StringArgument when all conditions are false

comment:53 Changed 4 years ago by dpiringe


  • fixed a type conversion bug in RangeVM
  • implemented logic for JsonItemRangeControl

comment:54 Changed 4 years ago by dpiringe


  • Runner now uses SymbolicDataAnalysisExpressionMATLABFormatter to save instances of ISymbolicRegressionSolution
  • refactored user controls for detail view of json items, now they do not inherit from JsonItemBaseControl -> JsonItemBaseControl uses now an extra control
    • this change was made for fluid repositioning of controls (e.g. when no ActualName is present)

comment:55 Changed 4 years ago by dpiringe


  • deleted INamedMatrixJsonItem and all corresponding classes/views, because of bad design
  • added ILookupJsonItem and IValueLookupJsonItem (incl. all corresponding implementations, VMs, Views)
  • added IResultJsonItem
  • changed type of property Control from JsonItemBaseControl to UserControl in IJsonItemVM (because the details control now builds up with linked user controls -> allows better construction of dynamic controls)
  • added all properties of INamedMatrixJsonItem in IMatrixJsonItem
  • refactored a lot of views for better usage (TableLayoutPanel is used a lot now -> for better item positioning)
  • property ActualName is now located in ILookupJsonItem instead of IJsonItem

comment:56 Changed 4 years ago by dpiringe


  • refactored inheritance structure of json items, now the default JsonItem is an abstract class without properties Value and Range -> splitted up into new interfaces
  • updated view models for new json item structure
  • updated SingleLineArrayJsonWriter

comment:57 Changed 4 years ago by dpiringe


  • refactored JsonTemplateInstantiator -> now returns a InstantiatorResult which contains the optimizer and an IEnumerable of IResultJsonItem
  • code cleanup in JCGenerator
  • relocated the serialization of json items into IJsonItem with method GenerateJObject (virtual base implementation in JsonItem)
    • this allows custom serialization for json items (example: ValueLookupJsonItem)
    • items of interface IIntervalRestrictedJsonItem have a custom implementation of GenerateJObject -> hides Minimum and Maximum if the values are the physically min/max of their type
  • code cleanup in BaseConverter

comment:58 Changed 4 years ago by dpiringe


  • removed type extension for type comparison (was a complicated comparison, which should not be a public extension method for Type)
    • comparison is now located (as private method) in JsonItemConverter
    • also simplified it a lot (did some tests to measure the relevance of specific checks -> last check got completely removed)

comment:59 Changed 4 years ago by dpiringe


  • refactored json item validation process -> every method now returns a ValidationResult containing bool Success (true if validation is successful) and IEnumerable<string> Errors (error messages)
    • this design allows to specify error messages directly in json items

comment:60 Changed 4 years ago by dpiringe


  • added readme JsonInterfaceReadMe.txt
  • removed dead code
  • fixed a bug in JsonItemConverter -> now the type comparison should work as intended

comment:61 Changed 4 years ago by dpiringe


  • fixed a bug with JsonItemMultiValueControl -> the size of the matrix should now be saved correctly
  • fixed a bug with RegressionProblemDataConverter -> should now set the row/col sizes correctly
  • simplified the code for saving matrix data in JsonItemMultiValueControl, MatrixValueVM and ArrayValueVM
  • removed unnecessary casts

comment:62 Changed 4 years ago by dpiringe


  • fixed a bug in ConstrainedValueParameterConverter -> added an extra check to get the correct child
  • fixed a bug in JsonItemValidator -> now the error messages get appended correctly
  • fixed a validation bug in JsonItemMultiValueControl -> now it should not validate a readonly textbox anymore

comment:63 Changed 4 years ago by dpiringe


  • added error output for failed runner initialization
  • reorganised some final view models
  • TargetedJsonItemType (in JsonItemVMBase) now automatically returns the type of the defined JsonItem
  • code cleanup
  • refactored RegressionProblemDataConverter
  • added lots of comments
  • added new view for StringArrayJsonItem
  • added new UI component for concrete restricted items and used it in JsonItemConcreteItemArrayControl and JsonItemValidValuesControl

comment:64 Changed 4 years ago by dpiringe


  • added new converter: BatchRunConverter, ExperimentConverter
  • fixed a bug with the path of the .hl file in JCGenerator
  • fixed a bug with a redundant search for a suitable converter in JsonItemConverter
  • added a restriction for TargetVariable and AllowedInputVariables in RegressionProblemDataConverter
  • removed unnecessary code in Runner

comment:65 Changed 4 years ago by dpiringe


  • added an extra loop to add empty default results in Runner (to prevent not existing results)
  • fixed a bug in JsonItemValidValuesControl, now the dropdown should not reset the default value

comment:66 Changed 4 years ago by dpiringe


  • added a simple form control for JsonInterface to use it without CLI

comment:67 Changed 4 years ago by dpiringe


  • renamed JCGenerator to JsonTemplateGenerator

comment:68 Changed 4 years ago by dpiringe


  • JCGenerator changed name to JsonTemplateGenerator

comment:69 Changed 4 years ago by dpiringe


  • added a check to stop a paused IOptimizer

comment:70 Changed 3 years ago by dpiringe


  • removed the option to set the value for JsonItems via exporter
    • reworked some base controls
    • added new controls for JsonItem specific properties (e.g. ArrayResizable)
    • deleted a lot of obsolet controls
  • removed the Enable checkbox in the detail view of JsonItems
  • exporter now clones the IOptimizer object
  • added a check + message for unsupported exports
  • list of JsonItems now includes unsupported JsonItems (disabled and marked with 'unsupported')
  • refactored the converter type check
    • now every converter has to specify its supported type(s)

comment:71 Changed 3 years ago by dpiringe


  • moved JsonItems from Models to JsonItems
  • moved WinForms controls from Shared to Views

comment:72 Changed 3 years ago by dpiringe


  • added ResultFormatter to add an extra layer of result transformation logic (converting a result value to a string with a defined logic, e.g. MatlabResultFormatter for ISymbolicRegressionSolution)
  • extended the IResultJsonItem with two properties for result formatting
  • added a new control to selected a result formatter for a result value
  • refactored the Runner for the new result formatting process

comment:73 Changed 3 years ago by dpiringe


  • removed property ConvertableType from all converters
  • removed the option to fixate or loosen the path of JsonItems (obsolete)
  • added a abstract formatter SymbolicRegressionSolutionFormatterBase as base formatter for ISymbolicRegressionSolution
  • unified the construction of exporter controls
  • code cleanup

comment:74 Changed 3 years ago by dpiringe


  • renamed ResultFormatter to ResultFormatters
  • adjusted some UI components (changed margins/paddings/sizes of some controls)

comment:75 Changed 3 years ago by dpiringe

  • Owner changed from dpiringe to swagner
  • Status changed from accepted to reviewing


  • merged trunk into branch

comment:76 Changed 3 years ago by dpiringe


  • deleted the project Heuristiclab.ConfigStarter (was only for testing purposes)

comment:77 Changed 3 years ago by dpiringe


  • fixed a bug in Runner: the zip-method created wrong pairs (because the lists are unordered)
  • fixed a bug in SymbolicRegressionSolutionFormatterBase: the method now checks the target type as well

comment:78 Changed 3 years ago by dpiringe


  • merged trunk into branch

comment:79 Changed 3 years ago by dpiringe


  • added check for missing path property
  • added functionality for relative .hl file paths

comment:80 Changed 3 years ago by dpiringe


  • fixed wrong inheritance for RangedJsonItem
  • added VariableRanges automatic injection for RegressionProblemDataConverter

comment:81 Changed 3 years ago by dpiringe


  • fixed the injection of VariableRanges in RegressionProblemDataConverter (now: the entries in IntervalCollection get replaced instead of the whole collection object)

comment:82 Changed 3 years ago by dpiringe


  • fixed injection of new matrix value in ValueTypeMatrixConverter

comment:83 Changed 3 years ago by dpiringe


  • fixed the possibility for duplicated result entries in template generation
  • added a check for duplicated result entries in Runner to prevent an Key already exists exception (a user could manually manipulate the template file to generate this type of exception, thats the reason for a second check)
  • fixed the relative to absolute path transformation in JsonTemplateInstantiator

comment:84 Changed 3 years ago by dpiringe


  • added some test cases for JsonInterface
  • deleted the HeuristicLab namespace part in a lot of test classes (this caused a lot of compile errors)
  • enhanced the OS path logic for absolute and relative path in JsonTemplateGenerator and JsonTemplateInstantiator
  • fixed a bug in ValueParameterConverter -> the injection logic was not working correctly
  • changed the folder determination in Main.cs for the HeadlessRun method
  • added a new abstract type of JsonItem IntervalRestrictedJsonItem for JsonItems with a need of Minimum and Maximum bounds but without a specific value
    • changed in RangedJsonItem the base class from IntervalRestrictedValueJsonItem to IntervalRestrictedJsonItem

comment:85 Changed 3 years ago by dpiringe


  • added PythonResultFormatter
  • removed code which was used for debugging and was forgotten
  • fixed the release build path of all JsonInterface projects
  • changed the output of Runner -> now: it writes the results after (at least) one run is finished

comment:86 Changed 3 years ago by dpiringe


  • changed the output path to $(SolutionDir)\bin\ for the JsonInterface projects

comment:87 Changed 3 years ago by dpiringe


  • code cleanup

comment:88 Changed 3 years ago by dpiringe


  • adjusted the necessary plugin dependencies for all three JsonInterface projects (depending on CheckPluginDependenciesForReferencedAssemblies and CheckReferenceAssembliesForPluginDependencies tests)
  • using now the error handling dialog in FileManager
  • added a AggregateException in RegressionProblemDataConverter for unconvertable values

comment:89 Changed 2 years ago by dpiringe


  • code cleanup
  • fixed a bug in ValueParameterConverter which prevented successful injection
  • changed error handling in method Main.HeadlessRun and Runner.Run

comment:90 Changed 2 years ago by dpiringe


  • added a first version of a new feature called ResultCollectionPostProcessors, which should transform/process the results of an optimizer run
    • created a new interface IResultCollectionPostProcessor
    • created a new class SymRegPythonPostProcessor, which formats all ISymbolicRegressionSolution with the usage of the SymbolicDataAnalysisExpressionPythonFormatter
    • changed the generation and instantiation of templates to handle this new feature
    • the template files contains a new area PostProcessors
    • added functionality in Runner to use these new type of result processing
    • added a new tab in ExportJsonDialog to configure PostProcessors

comment:91 Changed 2 years ago by dpiringe


  • created a new ui control for post processors called ResultCollectionPostProcessorControl based on CheckedItemListView
    • the reason is the text property of itemsGroupBox -> now it displays Post Processors instead of Items
  • integrated the new control in ExportJsonDialog

comment:92 Changed 2 years ago by dpiringe


  • added a new protected virtual property in CheckedItemListView to be able to change the text of the groupBox
  • removed event handling in ResultCollectionPostProcessorControl and overwrote the new property GroupBoxText
  • added a new section in ExportJsonDialog for result collection processors
  • renamed IResultCollectionPostProcessor to IResultCollectionProcessor + all connected classes
  • added/changed the workflow of ResultCollectionProcessors in JsonTemplateGenerator and JsonTemplateInstantiator
    • also changed Constants.cs -> added a new section in template ResultCollectionProcessorItems

comment:93 Changed 2 years ago by dpiringe


  • added StorableTypeAttribute and StorableConstructorAttribute to all JsonItems
  • added a new JsonItem ListJsonItem + Interfaces IListJsonItem
  • renamed SymRegPythonProcessor to RunCollectionSRSolutionPythonFormatter
  • removed Interface IResultCollectionProcessor -> using the interface IRunCollectionModifier now (has aleady implementations)
  • renamed all related variables/fields/properties with a connection to ResultCollectionProcessor
  • added new implementations for IRunCollectionModifier

comment:94 Changed 2 years ago by dpiringe


  • fixed a wrong description for the invert parameter in RunCollectionValueRemover
  • fixed the usage of a wrong formatter in RunCollectionSRSolutionGraphVizFormatter
  • fixed a bug in ListJsonItem where an empty guid field can cause an exception
  • started to rework the RegressionProblemDataConverter -> it causes a bug with the symbol Variable of the TypeCorherentGrammar (maybe more grammars)
    • the reasons for the rework: this converter was already the source of some problems in the past; it uses a lot of reflection and dynamic objects -> it is very complicated to read/understand
  • added an official description property Description in the metadata part of a template + entry in Constants.cs

comment:95 Changed 2 years ago by dpiringe


  • fixed a bug with dynamic casting in EnumTypeConverter
  • reworked RegressionProblemDataConverter
    • the target type is now: ValueParameter<IRegressionProblemData>
    • removed all dynamic/reflection code
    • reduced a lot of complexity
    • now it works with different variables (the Variable symbol bug should be fixed)

comment:96 Changed 2 years ago by dpiringe


  • removed/renamed all interfaces, classes and views related to results (are replaced by RunCollectionModifiers)
  • fixed a bug in JsonTemplateInstantiator to prevent errors for opening templates without a defined property for RunCollectionModifiers

comment:97 Changed 2 years ago by dpiringe


  • added the dockerhub readme file
  • fixed a bug which caused changed values (changed by events) to be overwritten with wrong values
Note: See TracTickets for help on using tickets.