public void AddItemToBuilder(IItem item, string name, SolutionMessage.Builder builder) { ValueTypeValue <double> value = (item as ValueTypeValue <double>); if (value != null) { SolutionMessage.Types.DoubleVariable.Builder var = SolutionMessage.Types.DoubleVariable.CreateBuilder(); var.SetName(name).SetData(value.Value); builder.AddDoubleVars(var.Build()); } else { ValueTypeArray <double> array = (item as ValueTypeArray <double>); if (array != null) { SolutionMessage.Types.DoubleArrayVariable.Builder var = SolutionMessage.Types.DoubleArrayVariable.CreateBuilder(); var.SetName(name).AddRangeData(array).SetLength(array.Length); builder.AddDoubleArrayVars(var.Build()); } else { ValueTypeMatrix <double> matrix = (item as ValueTypeMatrix <double>); if (matrix != null) { SolutionMessage.Types.DoubleArrayVariable.Builder var = SolutionMessage.Types.DoubleArrayVariable.CreateBuilder(); var.SetName(name).AddRangeData(matrix.AsEnumerable()).SetLength(matrix.Columns); builder.AddDoubleArrayVars(var.Build()); } else { throw new ArgumentException(ItemName + ": Item is not of a supported type.", "item"); } } } }
public void AddToMessage(IItem item, string name, SolutionMessage.Builder builder) { if (dispatcher == null) { BuildDispatcher(); } Type itemType = item.GetType(); while (!dispatcher.ContainsKey(itemType)) { if (itemType.BaseType != null) { itemType = itemType.BaseType; } else { break; } } if (itemType.BaseType == null && !dispatcher.ContainsKey(itemType)) { IEnumerable <Type> interfaces = item.GetType().GetInterfaces().Where(x => dispatcher.ContainsKey(x)); if (interfaces.Count() != 1) { throw new ArgumentException(Name + ": No converter for type " + itemType.FullName + " defined.", "item"); } else { itemType = interfaces.Single(); } } dispatcher[itemType](item, name, builder); }
public void AddItemToBuilder(IItem item, string name, SolutionMessage.Builder builder) { SymbolicExpressionTree tree = (item as SymbolicExpressionTree); if (tree != null) { ConvertSymbolicExpressionTree(tree, name, builder); } }
public void AddItemToBuilder(IItem item, string name, SolutionMessage.Builder builder) { DateTimeValue date = (item as DateTimeValue); if (date != null) { SolutionMessage.Types.StringVariable.Builder var = SolutionMessage.Types.StringVariable.CreateBuilder(); var.SetName(name).SetData(date.Value.ToString("yyyy-MM-dd HH:mm:sszzz")); builder.AddStringVars(var.Build()); } else { throw new ArgumentException(ItemName + ": Item is not of a supported type.", "item"); } }
public void AddItemToBuilder(IItem item, string name, SolutionMessage.Builder builder) { IStringConvertibleValue value = (item as IStringConvertibleValue); if (value != null) { SolutionMessage.Types.StringVariable.Builder var = SolutionMessage.Types.StringVariable.CreateBuilder(); var.SetName(name).SetData(value.GetValue()); builder.AddStringVars(var.Build()); } else { IStringConvertibleArray array = (item as IStringConvertibleArray); if (array != null) { SolutionMessage.Types.StringArrayVariable.Builder var = SolutionMessage.Types.StringArrayVariable.CreateBuilder(); var.SetName(name).SetLength(array.Length); for (int i = 0; i < array.Length; i++) { var.AddData(array.GetValue(i)); } builder.AddStringArrayVars(var.Build()); } else { IStringConvertibleMatrix matrix = (item as IStringConvertibleMatrix); if (matrix != null) { SolutionMessage.Types.StringArrayVariable.Builder var = SolutionMessage.Types.StringArrayVariable.CreateBuilder(); var.SetName(name).SetLength(matrix.Columns); for (int i = 0; i < matrix.Rows; i++) { for (int j = 0; j < matrix.Columns; j++) { var.AddData(matrix.GetValue(i, j)); } } builder.AddStringArrayVars(var.Build()); } else { throw new ArgumentException(ItemName + ": Item is not of a supported type.", "item"); } } } }
private SolutionMessage BuildSolutionMessage(Individual individual, int solutionId = 0) { lock (clientLock) { SolutionMessage.Builder protobufBuilder = SolutionMessage.CreateBuilder(); protobufBuilder.SolutionId = solutionId; foreach (var variable in individual.Values) { try { MessageBuilder.AddToMessage(variable.Value, variable.Key, protobufBuilder); } catch (ArgumentException ex) { throw new InvalidOperationException(string.Format("ERROR while building solution message: Parameter {0} cannot be added to the message", Name), ex); } } return(protobufBuilder.Build()); } }
protected virtual SolutionMessage BuildSolutionMessage() { lock (clientLock) { SolutionMessage.Builder protobufBuilder = SolutionMessage.CreateBuilder(); protobufBuilder.SolutionId = 0; foreach (IParameter param in CollectedValues) { IItem value = param.ActualValue; if (value != null) { ILookupParameter lookupParam = param as ILookupParameter; string name = lookupParam != null ? lookupParam.TranslatedName : param.Name; try { MessageBuilder.AddToMessage(value, name, protobufBuilder); } catch (ArgumentException ex) { throw new InvalidOperationException(string.Format("ERROR while building solution message: Parameter {0} cannot be added to the message", name), ex); } } } return(protobufBuilder.Build()); } }
protected override void ConvertSymbolicExpressionTree(SymbolicExpressionTree tree, string name, SolutionMessage.Builder builder) { string stringRep = formatter.Format(tree); stringRep.Replace(Environment.NewLine, ""); SolutionMessage.Types.StringVariable.Builder stringVariable = SolutionMessage.Types.StringVariable.CreateBuilder(); stringVariable.SetName(name).SetData(stringRep); builder.AddStringVars(stringVariable.Build()); }
protected override void ConvertSymbolicExpressionTree(SymbolicExpressionTree tree, string name, SolutionMessage.Builder builder) { using (MemoryStream memoryStream = new MemoryStream()) { Persistence.Default.Xml.XmlGenerator.Serialize(tree, memoryStream); byte[] byteRep = memoryStream.ToArray(); SolutionMessage.Types.RawVariable.Builder rawVariable = SolutionMessage.Types.RawVariable.CreateBuilder(); rawVariable.SetName(name).SetData(ByteString.CopyFrom(byteRep)); builder.AddRawVars(rawVariable.Build()); } }
protected abstract void ConvertSymbolicExpressionTree(SymbolicExpressionTree tree, string name, SolutionMessage.Builder builder);
protected override void ConvertSymbolicExpressionTree(SymbolicExpressionTree tree, string name, SolutionMessage.Builder builder) { using (MemoryStream memoryStream = new MemoryStream()) { var ser = new ProtoBufSerializer(); ser.Serialize(tree, memoryStream, disposeStream: false); memoryStream.Flush(); byte[] byteRep = memoryStream.ToArray(); SolutionMessage.Types.RawVariable.Builder rawVariable = SolutionMessage.Types.RawVariable.CreateBuilder(); rawVariable.SetName(name).SetData(ByteString.CopyFrom(byteRep)); builder.AddRawVars(rawVariable.Build()); } }