Changeset 3865
- Timestamp:
- 05/27/10 20:27:41 (14 years ago)
- Location:
- trunk/sources
- Files:
-
- 1 added
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab 3.3.sln
r3864 r3865 36 36 {489CFE09-FDF7-4C89-BAB5-BD09CADD61AD} = {489CFE09-FDF7-4C89-BAB5-BD09CADD61AD} 37 37 {72104A0B-90E7-42F3-9ABE-9BBBADD4B943} = {72104A0B-90E7-42F3-9ABE-9BBBADD4B943} 38 {3081630C-9521-47D7-8075-1777C12F212C} = {3081630C-9521-47D7-8075-1777C12F212C} 38 39 {25087811-F74C-4128-BC86-8324271DA13E} = {25087811-F74C-4128-BC86-8324271DA13E} 39 40 {662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2} = {662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2} -
trunk/sources/HeuristicLab.Problems.ExternalEvaluation.Views/3.3/ExternalEvaluationProcessDriverView.Designer.cs
r3864 r3865 24 24 /// </summary> 25 25 private void InitializeComponent() { 26 components = new System.ComponentModel.Container(); 26 this.executableTextBox = new System.Windows.Forms.TextBox(); 27 this.browseExecutableButton = new System.Windows.Forms.Button(); 28 this.argumentsTextBox = new System.Windows.Forms.TextBox(); 29 this.executableLabel = new System.Windows.Forms.Label(); 30 this.argumentsLabel = new System.Windows.Forms.Label(); 31 this.openFileDialog = new System.Windows.Forms.OpenFileDialog(); 32 this.startButton = new System.Windows.Forms.Button(); 33 this.terminateButton = new System.Windows.Forms.Button(); 34 ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit(); 35 this.SuspendLayout(); 36 // 37 // nameTextBox 38 // 39 this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft); 40 this.errorProvider.SetIconPadding(this.nameTextBox, 2); 41 this.nameTextBox.Size = new System.Drawing.Size(319, 20); 42 // 43 // descriptionTextBox 44 // 45 this.descriptionTextBox.Size = new System.Drawing.Size(319, 20); 46 // 47 // executableTextBox 48 // 49 this.executableTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 50 | System.Windows.Forms.AnchorStyles.Right))); 51 this.executableTextBox.Location = new System.Drawing.Point(72, 59); 52 this.executableTextBox.Name = "executableTextBox"; 53 this.executableTextBox.ReadOnly = true; 54 this.executableTextBox.Size = new System.Drawing.Size(243, 20); 55 this.executableTextBox.TabIndex = 4; 56 // 57 // browseExecutableButton 58 // 59 this.browseExecutableButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 60 this.browseExecutableButton.Location = new System.Drawing.Point(321, 57); 61 this.browseExecutableButton.Name = "browseExecutableButton"; 62 this.browseExecutableButton.Size = new System.Drawing.Size(67, 23); 63 this.browseExecutableButton.TabIndex = 5; 64 this.browseExecutableButton.Text = "Browse..."; 65 this.browseExecutableButton.UseVisualStyleBackColor = true; 66 this.browseExecutableButton.Click += new System.EventHandler(this.browseExecutableButton_Click); 67 // 68 // argumentsTextBox 69 // 70 this.argumentsTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 71 | System.Windows.Forms.AnchorStyles.Right))); 72 this.argumentsTextBox.Location = new System.Drawing.Point(72, 85); 73 this.argumentsTextBox.Name = "argumentsTextBox"; 74 this.argumentsTextBox.Size = new System.Drawing.Size(243, 20); 75 this.argumentsTextBox.TabIndex = 6; 76 this.argumentsTextBox.Validated += new System.EventHandler(this.argumentsTextBox_Validated); 77 // 78 // executableLabel 79 // 80 this.executableLabel.AutoSize = true; 81 this.executableLabel.Location = new System.Drawing.Point(3, 62); 82 this.executableLabel.Name = "executableLabel"; 83 this.executableLabel.Size = new System.Drawing.Size(63, 13); 84 this.executableLabel.TabIndex = 7; 85 this.executableLabel.Text = "Executable:"; 86 // 87 // argumentsLabel 88 // 89 this.argumentsLabel.AutoSize = true; 90 this.argumentsLabel.Location = new System.Drawing.Point(3, 88); 91 this.argumentsLabel.Name = "argumentsLabel"; 92 this.argumentsLabel.Size = new System.Drawing.Size(60, 13); 93 this.argumentsLabel.TabIndex = 7; 94 this.argumentsLabel.Text = "Arguments:"; 95 // 96 // openFileDialog 97 // 98 this.openFileDialog.Filter = "Executables|*.exe|All files|*.*"; 99 this.openFileDialog.Title = "Select the executable of the external process"; 100 // 101 // startButton 102 // 103 this.startButton.Location = new System.Drawing.Point(72, 111); 104 this.startButton.Name = "startButton"; 105 this.startButton.Size = new System.Drawing.Size(75, 23); 106 this.startButton.TabIndex = 8; 107 this.startButton.Text = "Launch"; 108 this.startButton.UseVisualStyleBackColor = true; 109 this.startButton.Click += new System.EventHandler(this.startButton_Click); 110 // 111 // terminateButton 112 // 113 this.terminateButton.Enabled = false; 114 this.terminateButton.Location = new System.Drawing.Point(153, 111); 115 this.terminateButton.Name = "terminateButton"; 116 this.terminateButton.Size = new System.Drawing.Size(75, 23); 117 this.terminateButton.TabIndex = 8; 118 this.terminateButton.Text = "Terminate"; 119 this.terminateButton.UseVisualStyleBackColor = true; 120 this.terminateButton.Click += new System.EventHandler(this.terminateButton_Click); 121 // 122 // ExternalEvaluationProcessDriverView 123 // 124 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 27 125 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 126 this.Controls.Add(this.executableTextBox); 127 this.Controls.Add(this.argumentsLabel); 128 this.Controls.Add(this.argumentsTextBox); 129 this.Controls.Add(this.browseExecutableButton); 130 this.Controls.Add(this.startButton); 131 this.Controls.Add(this.executableLabel); 132 this.Controls.Add(this.terminateButton); 133 this.Name = "ExternalEvaluationProcessDriverView"; 134 this.Size = new System.Drawing.Size(391, 139); 135 this.Controls.SetChildIndex(this.terminateButton, 0); 136 this.Controls.SetChildIndex(this.executableLabel, 0); 137 this.Controls.SetChildIndex(this.startButton, 0); 138 this.Controls.SetChildIndex(this.browseExecutableButton, 0); 139 this.Controls.SetChildIndex(this.argumentsTextBox, 0); 140 this.Controls.SetChildIndex(this.argumentsLabel, 0); 141 this.Controls.SetChildIndex(this.executableTextBox, 0); 142 this.Controls.SetChildIndex(this.nameLabel, 0); 143 this.Controls.SetChildIndex(this.descriptionLabel, 0); 144 this.Controls.SetChildIndex(this.nameTextBox, 0); 145 this.Controls.SetChildIndex(this.descriptionTextBox, 0); 146 ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit(); 147 this.ResumeLayout(false); 148 this.PerformLayout(); 149 28 150 } 29 151 30 152 #endregion 153 154 private System.Windows.Forms.TextBox executableTextBox; 155 private System.Windows.Forms.Button browseExecutableButton; 156 private System.Windows.Forms.TextBox argumentsTextBox; 157 private System.Windows.Forms.Label executableLabel; 158 private System.Windows.Forms.Label argumentsLabel; 159 private System.Windows.Forms.OpenFileDialog openFileDialog; 160 private System.Windows.Forms.Button startButton; 161 private System.Windows.Forms.Button terminateButton; 31 162 } 32 163 } -
trunk/sources/HeuristicLab.Problems.ExternalEvaluation.Views/3.3/ExternalEvaluationProcessDriverView.cs
r3864 r3865 45 45 46 46 protected override void DeregisterContentEvents() { 47 // TODO: Deregister your event handlers here 47 Content.ExecutableChanged -= new EventHandler(Content_ExecutableChanged); 48 Content.ArgumentsChanged -= new EventHandler(Content_ArgumentsChanged); 49 Content.ProcessStarted -= new EventHandler(Content_ProcessStarted); 50 Content.ProcessExited -= new EventHandler(Content_ProcessExited); 48 51 base.DeregisterContentEvents(); 49 52 } … … 51 54 protected override void RegisterContentEvents() { 52 55 base.RegisterContentEvents(); 53 // TODO: Register your event handlers here 56 Content.ExecutableChanged += new EventHandler(Content_ExecutableChanged); 57 Content.ArgumentsChanged += new EventHandler(Content_ArgumentsChanged); 58 Content.ProcessStarted += new EventHandler(Content_ProcessStarted); 59 Content.ProcessExited += new EventHandler(Content_ProcessExited); 54 60 } 55 61 56 62 #region Event Handlers (Content) 57 // TODO: Put event handlers of the content here 63 private void Content_ExecutableChanged(object sender, EventArgs e) { 64 executableTextBox.Text = Content.Executable; 65 } 66 private void Content_ArgumentsChanged(object sender, EventArgs e) { 67 argumentsTextBox.Text = Content.Arguments; 68 } 69 private void Content_ProcessStarted(object sender, EventArgs e) { 70 if (InvokeRequired) Invoke(new Action<object, EventArgs>(Content_ProcessStarted), sender, e); 71 else SetEnabledStateOfControls(); 72 } 73 private void Content_ProcessExited(object sender, EventArgs e) { 74 if (InvokeRequired) Invoke(new Action<object, EventArgs>(Content_ProcessExited), sender, e); 75 else SetEnabledStateOfControls(); 76 } 58 77 #endregion 59 78 … … 61 80 base.OnContentChanged(); 62 81 if (Content == null) { 63 // TODO: Add code when content has been changed and is null 82 executableTextBox.Text = String.Empty; 83 argumentsTextBox.Text = String.Empty; 64 84 } else { 65 // TODO: Add code when content has been changed and is not null 85 executableTextBox.Text = Content.Executable; 86 argumentsTextBox.Text = Content.Arguments; 66 87 } 67 88 SetEnabledStateOfControls(); … … 74 95 75 96 private void SetEnabledStateOfControls() { 76 // TODO: Enable or disable controls based on whether the content is null or the view is set readonly 97 bool readOnlyDriverNullOrStarted = ReadOnly || Content == null || Content.IsInitialized; 98 browseExecutableButton.Enabled = !readOnlyDriverNullOrStarted; 99 startButton.Enabled = !readOnlyDriverNullOrStarted; 100 terminateButton.Enabled = !ReadOnly && Content != null && Content.IsInitialized; 101 executableTextBox.Enabled = !readOnlyDriverNullOrStarted; 102 argumentsTextBox.Enabled = !readOnlyDriverNullOrStarted; 77 103 } 78 104 79 105 #region Event Handlers (child controls) 80 // TODO: Put event handlers of child controls here. 106 private void browseExecutableButton_Click(object sender, EventArgs e) { 107 if (openFileDialog.ShowDialog() == DialogResult.OK) { 108 try { 109 Content.Executable = openFileDialog.FileName; 110 } catch (InvalidOperationException ex) { 111 MessageBox.Show(ex.Message); 112 } 113 } 114 } 115 private void argumentsTextBox_Validated(object sender, EventArgs e) { 116 if (Content != null) { 117 Content.Arguments = argumentsTextBox.Text; 118 } 119 } 81 120 #endregion 121 122 private void startButton_Click(object sender, EventArgs e) { 123 try { 124 Content.Start(); 125 } catch (InvalidOperationException ex) { 126 MessageBox.Show(ex.Message); 127 } 128 } 129 130 private void terminateButton_Click(object sender, EventArgs e) { 131 try { 132 Content.Stop(); 133 } catch (InvalidOperationException ex) { 134 MessageBox.Show(ex.Message); 135 } 136 } 82 137 } 83 138 } -
trunk/sources/HeuristicLab.Problems.ExternalEvaluation.Views/3.3/HeuristicLab.Problems.ExternalEvaluation.Views-3.3.csproj
r3864 r3865 125 125 <None Include="HeuristicLab.snk" /> 126 126 </ItemGroup> 127 <ItemGroup> 128 <EmbeddedResource Include="ExternalEvaluationProcessDriverView.resx"> 129 <DependentUpon>ExternalEvaluationProcessDriverView.cs</DependentUpon> 130 </EmbeddedResource> 131 </ItemGroup> 127 132 <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 128 133 <!-- To modify your build process, add your task inside one of the targets below and uncomment it. -
trunk/sources/HeuristicLab.Problems.ExternalEvaluation.Views/3.3/HeuristicLabProblemsExternalEvaluationViewsPlugin.cs
r3864 r3865 29 29 [Plugin("HeuristicLab.Problems.ExternalEvaluation.Views", "3.3.0.0")] 30 30 [PluginFile("HeuristicLab.Problems.ExternalEvaluation.Views-3.3.dll", PluginFileType.Assembly)] 31 / *[PluginDependency("HeuristicLab.Collections", "3.3")]31 //[PluginDependency("HeuristicLab.Collections", "3.3")] 32 32 [PluginDependency("HeuristicLab.Common", "3.3")] 33 [PluginDependency("HeuristicLab.Common.Resources", "3.3")]33 //[PluginDependency("HeuristicLab.Common.Resources", "3.3")] 34 34 [PluginDependency("HeuristicLab.Core", "3.3")] 35 35 [PluginDependency("HeuristicLab.Core.Views", "3.3")] 36 [PluginDependency("HeuristicLab.Data", "3.3")]36 //[PluginDependency("HeuristicLab.Data", "3.3")] 37 37 [PluginDependency("HeuristicLab.MainForm", "3.3")] 38 38 [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")] 39 [PluginDependency("HeuristicLab.Optimization", "3.3")]40 [PluginDependency("HeuristicLab.Optimization.Views", "3.3")]41 [PluginDependency("HeuristicLab.Parameters", "3.3")]*/39 //[PluginDependency("HeuristicLab.Optimization", "3.3")] 40 //[PluginDependency("HeuristicLab.Optimization.Views", "3.3")] 41 //[PluginDependency("HeuristicLab.Parameters", "3.3")] 42 42 [PluginDependency("HeuristicLab.Problems.ExternalEvaluation", "3.3")] 43 43 public class HeuristicLabProblemsExternalEvaluationViewsPlugin : PluginBase { -
trunk/sources/HeuristicLab.Problems.ExternalEvaluation.Views/3.3/Properties/AssemblyInfo.cs
r3864 r3865 6 6 // set of attributes. Change these attribute values to modify the information 7 7 // associated with an assembly. 8 [assembly: AssemblyTitle("HeuristicLab.Problems.ExternalEvaluation.Views -3.3")]9 [assembly: AssemblyDescription(" ")]8 [assembly: AssemblyTitle("HeuristicLab.Problems.ExternalEvaluation.Views")] 9 [assembly: AssemblyDescription("View-Plugin for Problems that are evaluated outside of HeuristicLab.")] 10 10 [assembly: AssemblyConfiguration("")] 11 [assembly: AssemblyCompany(" Microsoft")]12 [assembly: AssemblyProduct("HeuristicLab .Problems.ExternalEvaluation.Views-3.3")]13 [assembly: AssemblyCopyright(" Copyright © Microsoft 2010")]11 [assembly: AssemblyCompany("")] 12 [assembly: AssemblyProduct("HeuristicLab")] 13 [assembly: AssemblyCopyright("(c) 2002-2010 HEAL")] 14 14 [assembly: AssemblyTrademark("")] 15 15 [assembly: AssemblyCulture("")] … … 33 33 // by using the '*' as shown below: 34 34 // [assembly: AssemblyVersion("1.0.*")] 35 [assembly: AssemblyVersion(" 1.0.0.0")]36 [assembly: AssemblyFileVersion(" 1.0.0.0")]35 [assembly: AssemblyVersion("3.3.0.0")] 36 [assembly: AssemblyFileVersion("3.3.0.0")] -
trunk/sources/HeuristicLab.Problems.ExternalEvaluation/3.3/Drivers/ExternalEvaluationDriver.cs
r3864 r3865 31 31 public bool IsInitialized { get; protected set; } 32 32 33 protected ExternalEvaluationDriver() 34 : base() { 35 name = ItemName; 36 description = ItemDescription; 37 } 38 33 39 #region IExternalEvaluationDriver Members 34 40 -
trunk/sources/HeuristicLab.Problems.ExternalEvaluation/3.3/Drivers/ExternalEvaluationProcessDriver.cs
r3864 r3865 23 23 using System.Diagnostics; 24 24 using System.IO; 25 using HeuristicLab.Common; 25 26 using HeuristicLab.Core; 26 27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; … … 30 31 [StorableClass] 31 32 public class ExternalEvaluationProcessDriver : ExternalEvaluationDriver { 33 public override bool CanChangeName { get { return false; } } 34 public override bool CanChangeDescription { get { return false; } } 35 32 36 private Process process; 33 37 [Storable] 34 38 private string executable; 39 public string Executable { 40 get { return executable; } 41 set { 42 if (IsInitialized) throw new InvalidOperationException("ExternalEvaluationProcessDriver cannot change the executable path as it has already been started."); 43 string oldExecutable = executable; 44 executable = value; 45 if (!oldExecutable.Equals(executable)) OnExecutableChanged(); 46 } 47 } 35 48 [Storable] 36 49 private string arguments; 50 public string Arguments { 51 get { return arguments; } 52 set { 53 if (IsInitialized) throw new InvalidOperationException("ExternalEvaluationProcessDriver cannot change the arguments as it has already been started."); 54 string oldArguments = arguments; 55 arguments = value; 56 if (!oldArguments.Equals(arguments)) OnArgumentsChanged(); 57 } 58 } 37 59 private ExternalEvaluationStreamDriver driver; 38 60 … … 44 66 } 45 67 68 public override IDeepCloneable Clone(Cloner cloner) { 69 ExternalEvaluationProcessDriver clone = (ExternalEvaluationProcessDriver)base.Clone(cloner); 70 clone.executable = executable; 71 clone.arguments = arguments; 72 return clone; 73 } 74 46 75 #region IExternalDriver Members 47 76 48 77 public override void Start() { 49 base.Start(); 50 process = new Process(); 51 process.StartInfo = new ProcessStartInfo(executable, arguments); 52 process.StartInfo.UseShellExecute = false; 53 process.StartInfo.RedirectStandardInput = true; 54 process.StartInfo.RedirectStandardOutput = true; 55 process.Start(); 56 Stream processStdOut = process.StandardOutput.BaseStream; 57 Stream processStdIn = process.StandardInput.BaseStream; 58 driver = new ExternalEvaluationStreamDriver(processStdOut, processStdIn); 59 driver.Start(); 78 if (!String.IsNullOrEmpty(executable.Trim())) { 79 base.Start(); 80 process = new Process(); 81 process.StartInfo = new ProcessStartInfo(executable, arguments); 82 process.StartInfo.UseShellExecute = false; 83 process.StartInfo.RedirectStandardInput = true; 84 process.StartInfo.RedirectStandardOutput = true; 85 process.EnableRaisingEvents = true; // required to be notified of exit 86 process.Start(); 87 Stream processStdOut = process.StandardOutput.BaseStream; 88 Stream processStdIn = process.StandardInput.BaseStream; 89 OnProcessStarted(); 90 process.Exited += new EventHandler(process_Exited); 91 driver = new ExternalEvaluationStreamDriver(processStdOut, processStdIn); 92 driver.Start(); 93 } else throw new InvalidOperationException("Cannot start ExternalEvaluationProcessDriver because executable is not defined."); 60 94 } 61 95 … … 70 104 public override void Stop() { 71 105 base.Stop(); 72 if (!process.HasExited) { 73 driver.Stop(); 106 if (process != null) { 74 107 if (!process.HasExited) { 75 process.CloseMainWindow(); 76 process.WaitForExit(1000); 77 process.Close(); 108 driver.Stop(); 109 if (!process.HasExited) { 110 process.CloseMainWindow(); 111 process.WaitForExit(1000); 112 process.Close(); 113 // for some reasons the event process_Exited does not fire 114 OnProcessExited(); 115 } 78 116 } 117 process = null; 79 118 } 80 process = null;81 119 } 82 120 83 121 #endregion 122 123 #region Event handlers (process) 124 private void process_Exited(object sender, EventArgs e) { 125 if (IsInitialized) { 126 if (driver.IsInitialized) driver.Stop(); 127 IsInitialized = false; 128 process = null; 129 } 130 OnProcessExited(); 131 } 132 #endregion 133 134 #region Events 135 public event EventHandler ExecutableChanged; 136 protected void OnExecutableChanged() { 137 EventHandler handler = ExecutableChanged; 138 if (handler != null) handler(this, EventArgs.Empty); 139 } 140 141 public event EventHandler ArgumentsChanged; 142 protected void OnArgumentsChanged() { 143 EventHandler handler = ArgumentsChanged; 144 if (handler != null) handler(this, EventArgs.Empty); 145 } 146 147 public event EventHandler ProcessStarted; 148 private void OnProcessStarted() { 149 EventHandler handler = ProcessStarted; 150 if (handler != null) handler(this, EventArgs.Empty); 151 } 152 153 public event EventHandler ProcessExited; 154 private void OnProcessExited() { 155 EventHandler handler = ProcessExited; 156 if (handler != null) handler(this, EventArgs.Empty); 157 } 158 #endregion 84 159 } 85 160 } -
trunk/sources/HeuristicLab.Problems.ExternalEvaluation/3.3/Drivers/ExternalEvaluationStreamDriver.cs
r3862 r3865 30 30 [StorableClass] 31 31 public class ExternalEvaluationStreamDriver : ExternalEvaluationDriver { 32 public override bool CanChangeName { get { return false; } } 33 public override bool CanChangeDescription { get { return false; } } 34 32 35 private CodedInputStream inputStream; 33 36 private Stream input; -
trunk/sources/HeuristicLab.Problems.ExternalEvaluation/3.3/Properties/AssemblyInfo.frame
r3862 r3865 7 7 // associated with an assembly. 8 8 [assembly: AssemblyTitle("HeuristicLab.Problems.ExternalEvaluation")] 9 [assembly: AssemblyDescription("Plugin sfor Problems that are evaluated outside of HeuristicLab.")]9 [assembly: AssemblyDescription("Plugin for Problems that are evaluated outside of HeuristicLab.")] 10 10 [assembly: AssemblyConfiguration("")] 11 11 [assembly: AssemblyCompany("")] -
trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/SingleObjectiveTestFunctionProblem.cs
r3797 r3865 206 206 ParameterizeAnalyzers(); 207 207 SolutionCreator_RealVectorParameter_ActualNameChanged(null, EventArgs.Empty); 208 OnSolutionCreatorChanged(); 208 209 } 209 210 private void SolutionCreator_RealVectorParameter_ActualNameChanged(object sender, EventArgs e) { … … 224 225 BestKnownQuality = new DoubleValue(Evaluator.BestKnownQuality); 225 226 Evaluator_QualityParameter_ActualNameChanged(null, EventArgs.Empty); 227 OnEvaluatorChanged(); 226 228 OnReset(); 227 229 } -
trunk/sources/HeuristicLab/3.3/Files.txt
r3862 r3865 48 48 HeuristicLab.Problems.DataAnalysis.Views\3.3:HeuristicLab.Problems.DataAnalysis.Views-3.3.dll 49 49 HeuristicLab.Problems.ExternalEvaluation\3.3:HeuristicLab.Problems.ExternalEvaluation-3.3.dll 50 HeuristicLab.Problems.ExternalEvaluation.Views\3.3:HeuristicLab.Problems.ExternalEvaluation.Views-3.3.dll 50 51 HeuristicLab.Problems.Knapsack\3.3:HeuristicLab.Problems.Knapsack-3.3.dll 51 52 HeuristicLab.Problems.Knapsack.Views\3.3:HeuristicLab.Problems.Knapsack.Views-3.3.dll
Note: See TracChangeset
for help on using the changeset viewer.