Opened 5 months ago

Last modified 20 hours ago

#3026 accepted feature request

Integration into SymSpace

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

Description

STP4.4 Interfacing beyond Mechatronics / K24401 - SymSpace

Change History (31)

comment:1 Changed 5 months ago by dpiringe

r17228 created a branch for the ticket

comment:2 Changed 4 months ago by dpiringe

r17263:

  • 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 months ago by dpiringe

r17266:

  • 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 months ago by dpiringe

r17269

  • 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 months ago by dpiringe

r17271

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

comment:6 Changed 4 months ago by dpiringe

r17275

  • 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 months ago by dpiringe

  • Status changed from new to accepted

comment:8 Changed 4 months ago by dpiringe

r17280

  • 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 months ago by dpiringe

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

comment:10 Changed 4 months 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 months ago by dpiringe

r17283: renamed Component to JsonItem

comment:12 Changed 4 months ago by dpiringe

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

comment:13 Changed 4 months ago by dpiringe

r17287

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

comment:14 Changed 3 months ago by dpiringe

r17322

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

comment:15 Changed 3 months ago by dpiringe

r17323 added unit tests for HeuristicLab.JsonInterface

comment:16 Changed 3 months ago by dpiringe

r17324

  • 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 3 months ago by dpiringe

r17330

  • 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 3 months ago by dpiringe

r17331

  • 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 3 months ago by dpiringe

r17339 fixed a bug with path generation

comment:20 Changed 3 months ago by dpiringe

r17342

  • 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 3 months ago by dpiringe

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

comment:22 Changed 2 months ago by dpiringe

r17349

  • 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 2 months ago by dpiringe

r17353:

  • 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 2 months ago by dpiringe

r17354:

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

comment:25 Changed 8 weeks ago by dpiringe

r17371:

  • 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 7 weeks ago by dpiringe

r17374:

  • 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 7 weeks ago by dpiringe

r17375:

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

comment:28 Changed 5 weeks ago by dpiringe

r17379:

  • 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 2 weeks ago by dpiringe

r17394:

  • 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 2 weeks ago by dpiringe

r17395:

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

comment:31 Changed 20 hours ago by dpiringe

r17404:

  • 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
Note: See TracTickets for help on using tickets.