Changeset 8085 for branches/GP-MoveOperators/HeuristicLab.Optimizer/3.3
- Timestamp:
- 06/21/12 18:02:33 (12 years ago)
- Location:
- branches/GP-MoveOperators
- Files:
-
- 12 edited
- 3 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/GP-MoveOperators
- Property svn:ignore
-
old new 20 20 bin 21 21 protoc.exe 22 _ReSharper.HeuristicLab 3.3 Tests
-
- Property svn:mergeinfo changed
- Property svn:ignore
-
branches/GP-MoveOperators/HeuristicLab.Optimizer/3.3/CreateExperimentDialog.Designer.cs
r7259 r8085 46 46 private void InitializeComponent() { 47 47 this.components = new System.ComponentModel.Container(); 48 System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CreateExperimentDialog)); 48 49 this.okButton = new System.Windows.Forms.Button(); 49 50 this.cancelButton = new System.Windows.Forms.Button(); … … 53 54 this.repetitionsNumericUpDown = new System.Windows.Forms.NumericUpDown(); 54 55 this.toolTip = new System.Windows.Forms.ToolTip(this.components); 56 this.experimentCreationBackgroundWorker = new System.ComponentModel.BackgroundWorker(); 57 this.instanceDiscoveryProgressBar = new System.Windows.Forms.ProgressBar(); 58 this.instanceDiscoveryProgressLabel = new System.Windows.Forms.Label(); 59 this.selectAllCheckBox = new System.Windows.Forms.CheckBox(); 60 this.selectNoneCheckBox = new System.Windows.Forms.CheckBox(); 61 this.instanceDiscoveryBackgroundWorker = new System.ComponentModel.BackgroundWorker(); 62 this.tabControl = new System.Windows.Forms.TabControl(); 63 this.parametersTabPage = new System.Windows.Forms.TabPage(); 64 this.parametersSplitContainer = new System.Windows.Forms.SplitContainer(); 65 this.parametersListView = new System.Windows.Forms.ListView(); 66 this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); 67 this.generateButton = new System.Windows.Forms.Button(); 68 this.stringConvertibleArrayView = new HeuristicLab.Data.Views.StringConvertibleArrayView(); 69 this.detailsTypeLabel = new System.Windows.Forms.Label(); 70 this.choicesListView = new System.Windows.Forms.ListView(); 71 this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); 72 this.instancesTabPage = new System.Windows.Forms.TabPage(); 73 this.label1 = new System.Windows.Forms.Label(); 74 this.instancesTreeView = new System.Windows.Forms.TreeView(); 75 this.experimentsToCreateDescriptionLabel = new System.Windows.Forms.Label(); 76 this.variationsLabel = new System.Windows.Forms.Label(); 77 this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components); 78 this.warningProvider = new System.Windows.Forms.ErrorProvider(this.components); 79 this.experimentCreationProgressBar = new System.Windows.Forms.ProgressBar(); 55 80 ((System.ComponentModel.ISupportInitialize)(this.repetitionsNumericUpDown)).BeginInit(); 81 this.tabControl.SuspendLayout(); 82 this.parametersTabPage.SuspendLayout(); 83 ((System.ComponentModel.ISupportInitialize)(this.parametersSplitContainer)).BeginInit(); 84 this.parametersSplitContainer.Panel1.SuspendLayout(); 85 this.parametersSplitContainer.Panel2.SuspendLayout(); 86 this.parametersSplitContainer.SuspendLayout(); 87 this.instancesTabPage.SuspendLayout(); 88 ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit(); 89 ((System.ComponentModel.ISupportInitialize)(this.warningProvider)).BeginInit(); 56 90 this.SuspendLayout(); 57 91 // … … 61 95 this.okButton.DialogResult = System.Windows.Forms.DialogResult.OK; 62 96 this.okButton.Enabled = false; 63 this.okButton.Location = new System.Drawing.Point( 113, 58);97 this.okButton.Location = new System.Drawing.Point(246, 377); 64 98 this.okButton.Name = "okButton"; 65 99 this.okButton.Size = new System.Drawing.Size(75, 23); 66 this.okButton.TabIndex = 4;100 this.okButton.TabIndex = 7; 67 101 this.okButton.Text = "&OK"; 68 102 this.okButton.UseVisualStyleBackColor = true; … … 73 107 this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 74 108 this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; 75 this.cancelButton.Location = new System.Drawing.Point( 194, 58);109 this.cancelButton.Location = new System.Drawing.Point(327, 377); 76 110 this.cancelButton.Name = "cancelButton"; 77 111 this.cancelButton.Size = new System.Drawing.Size(75, 23); 78 this.cancelButton.TabIndex = 5;112 this.cancelButton.TabIndex = 8; 79 113 this.cancelButton.Text = "&Cancel"; 80 114 this.cancelButton.UseVisualStyleBackColor = true; … … 105 139 // 106 140 this.repetitionsLabel.AutoSize = true; 107 this.repetitionsLabel.Location = new System.Drawing.Point(12, 3 0);141 this.repetitionsLabel.Location = new System.Drawing.Point(12, 31); 108 142 this.repetitionsLabel.Name = "repetitionsLabel"; 109 143 this.repetitionsLabel.Size = new System.Drawing.Size(63, 13); … … 127 161 0}); 128 162 this.repetitionsNumericUpDown.Name = "repetitionsNumericUpDown"; 129 this.repetitionsNumericUpDown.Size = new System.Drawing.Size( 156, 20);163 this.repetitionsNumericUpDown.Size = new System.Drawing.Size(289, 20); 130 164 this.repetitionsNumericUpDown.TabIndex = 3; 131 165 this.repetitionsNumericUpDown.ThousandsSeparator = true; … … 138 172 this.repetitionsNumericUpDown.Validated += new System.EventHandler(this.repetitionsNumericUpDown_Validated); 139 173 // 174 // experimentCreationBackgroundWorker 175 // 176 this.experimentCreationBackgroundWorker.WorkerReportsProgress = true; 177 this.experimentCreationBackgroundWorker.WorkerSupportsCancellation = true; 178 this.experimentCreationBackgroundWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.experimentCreationBackgroundWorker_DoWork); 179 this.experimentCreationBackgroundWorker.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.experimentCreationBackgroundWorker_ProgressChanged); 180 this.experimentCreationBackgroundWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.experimentCreationBackgroundWorker_RunWorkerCompleted); 181 // 182 // instanceDiscoveryProgressBar 183 // 184 this.instanceDiscoveryProgressBar.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); 185 this.instanceDiscoveryProgressBar.Location = new System.Drawing.Point(6, 132); 186 this.instanceDiscoveryProgressBar.Name = "instanceDiscoveryProgressBar"; 187 this.instanceDiscoveryProgressBar.Size = new System.Drawing.Size(308, 23); 188 this.instanceDiscoveryProgressBar.Style = System.Windows.Forms.ProgressBarStyle.Continuous; 189 this.instanceDiscoveryProgressBar.TabIndex = 4; 190 this.instanceDiscoveryProgressBar.Visible = false; 191 // 192 // instanceDiscoveryProgressLabel 193 // 194 this.instanceDiscoveryProgressLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); 195 this.instanceDiscoveryProgressLabel.BackColor = System.Drawing.SystemColors.Control; 196 this.instanceDiscoveryProgressLabel.Location = new System.Drawing.Point(6, 158); 197 this.instanceDiscoveryProgressLabel.Name = "instanceDiscoveryProgressLabel"; 198 this.instanceDiscoveryProgressLabel.Size = new System.Drawing.Size(308, 23); 199 this.instanceDiscoveryProgressLabel.TabIndex = 5; 200 this.instanceDiscoveryProgressLabel.Text = "label1"; 201 this.instanceDiscoveryProgressLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 202 this.instanceDiscoveryProgressLabel.Visible = false; 203 // 204 // selectAllCheckBox 205 // 206 this.selectAllCheckBox.AutoSize = true; 207 this.selectAllCheckBox.Location = new System.Drawing.Point(52, 12); 208 this.selectAllCheckBox.Name = "selectAllCheckBox"; 209 this.selectAllCheckBox.Size = new System.Drawing.Size(36, 17); 210 this.selectAllCheckBox.TabIndex = 1; 211 this.selectAllCheckBox.Text = "all"; 212 this.selectAllCheckBox.UseVisualStyleBackColor = true; 213 this.selectAllCheckBox.CheckedChanged += new System.EventHandler(this.selectAllCheckBox_CheckedChanged); 214 // 215 // selectNoneCheckBox 216 // 217 this.selectNoneCheckBox.AutoSize = true; 218 this.selectNoneCheckBox.Location = new System.Drawing.Point(94, 12); 219 this.selectNoneCheckBox.Name = "selectNoneCheckBox"; 220 this.selectNoneCheckBox.Size = new System.Drawing.Size(50, 17); 221 this.selectNoneCheckBox.TabIndex = 2; 222 this.selectNoneCheckBox.Text = "none"; 223 this.selectNoneCheckBox.UseVisualStyleBackColor = true; 224 this.selectNoneCheckBox.CheckedChanged += new System.EventHandler(this.selectNoneCheckBox_CheckedChanged); 225 // 226 // instanceDiscoveryBackgroundWorker 227 // 228 this.instanceDiscoveryBackgroundWorker.WorkerReportsProgress = true; 229 this.instanceDiscoveryBackgroundWorker.WorkerSupportsCancellation = true; 230 this.instanceDiscoveryBackgroundWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.instanceDiscoveryBackgroundWorker_DoWork); 231 this.instanceDiscoveryBackgroundWorker.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.instanceDiscoveryBackgroundWorker_ProgressChanged); 232 this.instanceDiscoveryBackgroundWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.instanceDiscoveryBackgroundWorker_RunWorkerCompleted); 233 // 234 // tabControl 235 // 236 this.tabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 237 | System.Windows.Forms.AnchorStyles.Left) 238 | System.Windows.Forms.AnchorStyles.Right))); 239 this.tabControl.Controls.Add(this.parametersTabPage); 240 this.tabControl.Controls.Add(this.instancesTabPage); 241 this.tabControl.Location = new System.Drawing.Point(15, 54); 242 this.tabControl.Name = "tabControl"; 243 this.tabControl.SelectedIndex = 0; 244 this.tabControl.Size = new System.Drawing.Size(387, 317); 245 this.tabControl.TabIndex = 4; 246 // 247 // parametersTabPage 248 // 249 this.parametersTabPage.Controls.Add(this.parametersSplitContainer); 250 this.parametersTabPage.Location = new System.Drawing.Point(4, 22); 251 this.parametersTabPage.Name = "parametersTabPage"; 252 this.parametersTabPage.Padding = new System.Windows.Forms.Padding(3); 253 this.parametersTabPage.Size = new System.Drawing.Size(379, 291); 254 this.parametersTabPage.TabIndex = 1; 255 this.parametersTabPage.Text = "Parameter Variations"; 256 this.parametersTabPage.UseVisualStyleBackColor = true; 257 // 258 // parametersSplitContainer 259 // 260 this.parametersSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill; 261 this.parametersSplitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; 262 this.parametersSplitContainer.Location = new System.Drawing.Point(3, 3); 263 this.parametersSplitContainer.Name = "parametersSplitContainer"; 264 // 265 // parametersSplitContainer.Panel1 266 // 267 this.parametersSplitContainer.Panel1.Controls.Add(this.parametersListView); 268 // 269 // parametersSplitContainer.Panel2 270 // 271 this.parametersSplitContainer.Panel2.Controls.Add(this.generateButton); 272 this.parametersSplitContainer.Panel2.Controls.Add(this.stringConvertibleArrayView); 273 this.parametersSplitContainer.Panel2.Controls.Add(this.detailsTypeLabel); 274 this.parametersSplitContainer.Panel2.Controls.Add(this.choicesListView); 275 this.parametersSplitContainer.Size = new System.Drawing.Size(373, 285); 276 this.parametersSplitContainer.SplitterDistance = 155; 277 this.parametersSplitContainer.TabIndex = 1; 278 // 279 // parametersListView 280 // 281 this.parametersListView.CheckBoxes = true; 282 this.parametersListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { 283 this.columnHeader1}); 284 this.parametersListView.Dock = System.Windows.Forms.DockStyle.Fill; 285 this.parametersListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; 286 this.parametersListView.Location = new System.Drawing.Point(0, 0); 287 this.parametersListView.MultiSelect = false; 288 this.parametersListView.Name = "parametersListView"; 289 this.parametersListView.Size = new System.Drawing.Size(155, 285); 290 this.parametersListView.TabIndex = 0; 291 this.parametersListView.UseCompatibleStateImageBehavior = false; 292 this.parametersListView.View = System.Windows.Forms.View.Details; 293 this.parametersListView.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.parametersListView_ItemChecked); 294 this.parametersListView.SelectedIndexChanged += new System.EventHandler(this.parametersListView_SelectedIndexChanged); 295 // 296 // columnHeader1 297 // 298 this.columnHeader1.Width = 150; 299 // 300 // generateButton 301 // 302 this.generateButton.Location = new System.Drawing.Point(16, 10); 303 this.generateButton.Name = "generateButton"; 304 this.generateButton.Size = new System.Drawing.Size(75, 23); 305 this.generateButton.TabIndex = 8; 306 this.generateButton.Text = "Generate..."; 307 this.generateButton.UseVisualStyleBackColor = true; 308 this.generateButton.Click += new System.EventHandler(this.generateButton_Click); 309 // 310 // stringConvertibleArrayView 311 // 312 this.stringConvertibleArrayView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 313 | System.Windows.Forms.AnchorStyles.Left) 314 | System.Windows.Forms.AnchorStyles.Right))); 315 this.stringConvertibleArrayView.Caption = "StringConvertibleArray View"; 316 this.stringConvertibleArrayView.Content = null; 317 this.stringConvertibleArrayView.Location = new System.Drawing.Point(16, 39); 318 this.stringConvertibleArrayView.Name = "stringConvertibleArrayView"; 319 this.stringConvertibleArrayView.ReadOnly = false; 320 this.stringConvertibleArrayView.Size = new System.Drawing.Size(183, 233); 321 this.stringConvertibleArrayView.TabIndex = 7; 322 // 323 // detailsTypeLabel 324 // 325 this.detailsTypeLabel.AutoSize = true; 326 this.detailsTypeLabel.Location = new System.Drawing.Point(13, 15); 327 this.detailsTypeLabel.Name = "detailsTypeLabel"; 328 this.detailsTypeLabel.Size = new System.Drawing.Size(48, 13); 329 this.detailsTypeLabel.TabIndex = 0; 330 this.detailsTypeLabel.Text = "Choices:"; 331 // 332 // choicesListView 333 // 334 this.choicesListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 335 | System.Windows.Forms.AnchorStyles.Left) 336 | System.Windows.Forms.AnchorStyles.Right))); 337 this.choicesListView.CheckBoxes = true; 338 this.choicesListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { 339 this.columnHeader2}); 340 this.choicesListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; 341 this.choicesListView.Location = new System.Drawing.Point(16, 34); 342 this.choicesListView.Name = "choicesListView"; 343 this.choicesListView.Size = new System.Drawing.Size(183, 238); 344 this.choicesListView.TabIndex = 6; 345 this.choicesListView.UseCompatibleStateImageBehavior = false; 346 this.choicesListView.View = System.Windows.Forms.View.Details; 347 this.choicesListView.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.choiceListView_ItemChecked); 348 // 349 // columnHeader2 350 // 351 this.columnHeader2.Width = 150; 352 // 353 // instancesTabPage 354 // 355 this.instancesTabPage.Controls.Add(this.label1); 356 this.instancesTabPage.Controls.Add(this.instanceDiscoveryProgressBar); 357 this.instancesTabPage.Controls.Add(this.selectNoneCheckBox); 358 this.instancesTabPage.Controls.Add(this.instanceDiscoveryProgressLabel); 359 this.instancesTabPage.Controls.Add(this.selectAllCheckBox); 360 this.instancesTabPage.Controls.Add(this.instancesTreeView); 361 this.instancesTabPage.Location = new System.Drawing.Point(4, 22); 362 this.instancesTabPage.Name = "instancesTabPage"; 363 this.instancesTabPage.Padding = new System.Windows.Forms.Padding(3); 364 this.instancesTabPage.Size = new System.Drawing.Size(320, 273); 365 this.instancesTabPage.TabIndex = 0; 366 this.instancesTabPage.Text = "Problem Instances"; 367 this.instancesTabPage.UseVisualStyleBackColor = true; 368 // 369 // label1 370 // 371 this.label1.AutoSize = true; 372 this.label1.Location = new System.Drawing.Point(6, 13); 373 this.label1.Name = "label1"; 374 this.label1.Size = new System.Drawing.Size(40, 13); 375 this.label1.TabIndex = 0; 376 this.label1.Text = "Select:"; 377 // 378 // instancesTreeView 379 // 380 this.instancesTreeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 381 | System.Windows.Forms.AnchorStyles.Left) 382 | System.Windows.Forms.AnchorStyles.Right))); 383 this.instancesTreeView.CheckBoxes = true; 384 this.instancesTreeView.Location = new System.Drawing.Point(6, 35); 385 this.instancesTreeView.Name = "instancesTreeView"; 386 this.instancesTreeView.Size = new System.Drawing.Size(308, 232); 387 this.instancesTreeView.TabIndex = 6; 388 this.instancesTreeView.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.instancesTreeView_AfterCheck); 389 // 390 // experimentsToCreateDescriptionLabel 391 // 392 this.experimentsToCreateDescriptionLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); 393 this.experimentsToCreateDescriptionLabel.AutoSize = true; 394 this.experimentsToCreateDescriptionLabel.Location = new System.Drawing.Point(12, 382); 395 this.experimentsToCreateDescriptionLabel.Name = "experimentsToCreateDescriptionLabel"; 396 this.experimentsToCreateDescriptionLabel.Size = new System.Drawing.Size(56, 13); 397 this.experimentsToCreateDescriptionLabel.TabIndex = 5; 398 this.experimentsToCreateDescriptionLabel.Text = "Variations:"; 399 // 400 // variationsLabel 401 // 402 this.variationsLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); 403 this.variationsLabel.AutoSize = true; 404 this.variationsLabel.Location = new System.Drawing.Point(74, 382); 405 this.variationsLabel.Name = "variationsLabel"; 406 this.variationsLabel.Size = new System.Drawing.Size(13, 13); 407 this.variationsLabel.TabIndex = 6; 408 this.variationsLabel.Text = "1"; 409 this.variationsLabel.TextChanged += new System.EventHandler(this.experimentsLabel_TextChanged); 410 // 411 // errorProvider 412 // 413 this.errorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink; 414 this.errorProvider.ContainerControl = this; 415 // 416 // warningProvider 417 // 418 this.warningProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink; 419 this.warningProvider.ContainerControl = this; 420 this.warningProvider.Icon = ((System.Drawing.Icon)(resources.GetObject("warningProvider.Icon"))); 421 // 422 // experimentCreationProgressBar 423 // 424 this.experimentCreationProgressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 425 | System.Windows.Forms.AnchorStyles.Right))); 426 this.experimentCreationProgressBar.Location = new System.Drawing.Point(187, 377); 427 this.experimentCreationProgressBar.Name = "experimentCreationProgressBar"; 428 this.experimentCreationProgressBar.Size = new System.Drawing.Size(134, 23); 429 this.experimentCreationProgressBar.TabIndex = 9; 430 this.experimentCreationProgressBar.Visible = false; 431 // 140 432 // CreateExperimentDialog 141 433 // 142 434 this.AcceptButton = this.okButton; 143 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 144 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 435 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; 145 436 this.CancelButton = this.cancelButton; 146 this.ClientSize = new System.Drawing.Size(281, 93); 437 this.ClientSize = new System.Drawing.Size(414, 412); 438 this.Controls.Add(this.experimentCreationProgressBar); 439 this.Controls.Add(this.variationsLabel); 440 this.Controls.Add(this.experimentsToCreateDescriptionLabel); 441 this.Controls.Add(this.tabControl); 147 442 this.Controls.Add(this.repetitionsNumericUpDown); 148 443 this.Controls.Add(this.repetitionsLabel); … … 158 453 this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 159 454 this.Text = "Create Experiment"; 455 this.TopMost = true; 456 this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.CreateExperimentDialog_FormClosing); 457 this.Load += new System.EventHandler(this.CreateExperimentDialog_Load); 160 458 ((System.ComponentModel.ISupportInitialize)(this.repetitionsNumericUpDown)).EndInit(); 459 this.tabControl.ResumeLayout(false); 460 this.parametersTabPage.ResumeLayout(false); 461 this.parametersSplitContainer.Panel1.ResumeLayout(false); 462 this.parametersSplitContainer.Panel2.ResumeLayout(false); 463 this.parametersSplitContainer.Panel2.PerformLayout(); 464 ((System.ComponentModel.ISupportInitialize)(this.parametersSplitContainer)).EndInit(); 465 this.parametersSplitContainer.ResumeLayout(false); 466 this.instancesTabPage.ResumeLayout(false); 467 this.instancesTabPage.PerformLayout(); 468 ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit(); 469 ((System.ComponentModel.ISupportInitialize)(this.warningProvider)).EndInit(); 161 470 this.ResumeLayout(false); 162 471 this.PerformLayout(); … … 173 482 private System.Windows.Forms.NumericUpDown repetitionsNumericUpDown; 174 483 private System.Windows.Forms.ToolTip toolTip; 484 private System.ComponentModel.BackgroundWorker experimentCreationBackgroundWorker; 485 private System.Windows.Forms.ProgressBar instanceDiscoveryProgressBar; 486 private System.Windows.Forms.Label instanceDiscoveryProgressLabel; 487 private System.Windows.Forms.CheckBox selectAllCheckBox; 488 private System.Windows.Forms.CheckBox selectNoneCheckBox; 489 private System.ComponentModel.BackgroundWorker instanceDiscoveryBackgroundWorker; 490 private System.Windows.Forms.TabControl tabControl; 491 private System.Windows.Forms.TabPage parametersTabPage; 492 private System.Windows.Forms.TabPage instancesTabPage; 493 private System.Windows.Forms.SplitContainer parametersSplitContainer; 494 private System.Windows.Forms.ListView parametersListView; 495 private System.Windows.Forms.ColumnHeader columnHeader1; 496 private System.Windows.Forms.Label experimentsToCreateDescriptionLabel; 497 private System.Windows.Forms.Label variationsLabel; 498 private System.Windows.Forms.Label detailsTypeLabel; 499 private System.Windows.Forms.ListView choicesListView; 500 private System.Windows.Forms.ColumnHeader columnHeader2; 501 private System.Windows.Forms.Label label1; 502 private System.Windows.Forms.ErrorProvider errorProvider; 503 private System.Windows.Forms.ErrorProvider warningProvider; 504 private System.Windows.Forms.TreeView instancesTreeView; 505 private Data.Views.StringConvertibleArrayView stringConvertibleArrayView; 506 private System.Windows.Forms.ProgressBar experimentCreationProgressBar; 507 private System.Windows.Forms.Button generateButton; 175 508 176 509 } -
branches/GP-MoveOperators/HeuristicLab.Optimizer/3.3/CreateExperimentDialog.cs
r7259 r8085 21 21 22 22 using System; 23 using System.Collections.Generic; 24 using System.ComponentModel; 25 using System.Globalization; 26 using System.Linq; 27 using System.Text; 28 using System.Threading; 23 29 using System.Windows.Forms; 30 using HeuristicLab.Core; 31 using HeuristicLab.Data; 24 32 using HeuristicLab.Optimization; 33 using HeuristicLab.Parameters; 34 using HeuristicLab.Problems.Instances; 25 35 26 36 namespace HeuristicLab.Optimizer { 27 37 public partial class CreateExperimentDialog : Form { 38 private enum DialogMode { Normal = 1, DiscoveringInstances = 2, CreatingExperiment = 3, PreparingExperiment = 4 }; 39 28 40 private IOptimizer optimizer; 29 41 public IOptimizer Optimizer { … … 31 43 set { 32 44 optimizer = value; 33 experiment = null;45 Experiment = null; 34 46 okButton.Enabled = optimizer != null; 35 } 36 } 37 38 private Experiment experiment; 39 public Experiment Experiment { 40 get { return experiment; } 41 } 42 43 public CreateExperimentDialog() { 44 experiment = null; 45 optimizer = null; 47 SetTabControlVisibility(); 48 FillInstanceTreeViewAsync(); 49 FillParametersListView(); 50 } 51 } 52 53 public Experiment Experiment { get; private set; } 54 55 private bool createBatchRun; 56 private int repetitions; 57 private Dictionary<IProblemInstanceProvider, HashSet<IDataDescriptor>> instances; 58 private Dictionary<IValueParameter, IntArray> intParameters; 59 private Dictionary<IValueParameter, DoubleArray> doubleParameters; 60 private HashSet<IValueParameter> boolParameters; 61 private Dictionary<IValueParameter, HashSet<IItem>> multipleChoiceParameters; 62 private IItem optionalNullChoice = new BoolValue(); // any item will do 63 64 private StringBuilder failedInstances; 65 private EventWaitHandle backgroundWorkerWaitHandle = new ManualResetEvent(false); 66 private bool suppressTreeViewEventHandling, suppressCheckAllNoneEventHandling; 67 68 public CreateExperimentDialog() : this(null) { } 69 public CreateExperimentDialog(IOptimizer optimizer) { 46 70 InitializeComponent(); 47 } 48 public CreateExperimentDialog(IOptimizer optimizer) 49 : this() { 50 Optimizer = optimizer; 51 } 71 instanceDiscoveryProgressLabel.BackColor = instancesTabPage.BackColor; 72 createBatchRun = createBatchRunCheckBox.Checked; 73 repetitions = (int)repetitionsNumericUpDown.Value; 74 // do not set the Optimizer property here, because we want to delay instance discovery to the time when the form loads 75 this.optimizer = optimizer; 76 Experiment = null; 77 okButton.Enabled = optimizer != null; 78 79 instances = new Dictionary<IProblemInstanceProvider, HashSet<IDataDescriptor>>(); 80 intParameters = new Dictionary<IValueParameter, IntArray>(); 81 doubleParameters = new Dictionary<IValueParameter, DoubleArray>(); 82 boolParameters = new HashSet<IValueParameter>(); 83 multipleChoiceParameters = new Dictionary<IValueParameter, HashSet<IItem>>(); 84 } 85 86 #region Event handlers 87 private void CreateExperimentDialog_Load(object sender, EventArgs e) { 88 SetTabControlVisibility(); 89 FillInstanceTreeViewAsync(); 90 FillParametersListView(); 91 } 92 93 private void CreateExperimentDialog_FormClosing(object sender, FormClosingEventArgs e) { 94 if (experimentCreationBackgroundWorker.IsBusy) { 95 if (DialogResult != System.Windows.Forms.DialogResult.OK) { 96 if (experimentCreationBackgroundWorker.IsBusy) experimentCreationBackgroundWorker.CancelAsync(); 97 if (instanceDiscoveryBackgroundWorker.IsBusy) instanceDiscoveryBackgroundWorker.CancelAsync(); 98 } 99 e.Cancel = true; 100 } 101 } 102 103 private void okButton_Click(object sender, EventArgs e) { 104 SetMode(DialogMode.CreatingExperiment); 105 experimentCreationBackgroundWorker.RunWorkerAsync(); 106 backgroundWorkerWaitHandle.WaitOne(); // make sure the background worker has started before exiting 107 } 108 109 #region Parameters variation 110 private void parametersListView_ItemChecked(object sender, ItemCheckedEventArgs e) { 111 var parameter = (IValueParameter)e.Item.Tag; 112 var isConstrainedValueParameter = typeof(OptionalConstrainedValueParameter<>).Equals(parameter.GetType().GetGenericTypeDefinition()) 113 || typeof(ConstrainedValueParameter<>).Equals(parameter.GetType().GetGenericTypeDefinition()); 114 115 if (!isConstrainedValueParameter && parameter.Value == null) { 116 if (e.Item.Checked) e.Item.Checked = false; 117 return; 118 } 119 120 if (isConstrainedValueParameter) { 121 if (e.Item.Checked) multipleChoiceParameters.Add(parameter, new HashSet<IItem>()); 122 else multipleChoiceParameters.Remove(parameter); 123 } 124 125 var intValue = parameter.Value as ValueTypeValue<int>; 126 if (intValue != null) { 127 if (e.Item.Checked) { 128 intParameters.Add(parameter, new IntArray()); 129 intParameters[parameter].Reset += new EventHandler(ValuesArray_Reset); 130 } else intParameters.Remove(parameter); 131 } 132 133 var doubleValue = parameter.Value as ValueTypeValue<double>; 134 if (doubleValue != null) { 135 if (e.Item.Checked) { 136 doubleParameters.Add(parameter, new DoubleArray()); 137 doubleParameters[parameter].Reset += new EventHandler(ValuesArray_Reset); 138 } else doubleParameters.Remove(parameter); 139 } 140 141 var boolValue = parameter.Value as ValueTypeValue<bool>; 142 if (boolValue != null) { 143 if (e.Item.Checked) boolParameters.Add(parameter); 144 else boolParameters.Remove(parameter); 145 } 146 147 UpdateVariationsLabel(); 148 if (e.Item.Selected) UpdateDetailsView(parameter); 149 else e.Item.Selected = true; 150 } 151 152 private void parametersListView_SelectedIndexChanged(object sender, EventArgs e) { 153 if (parametersListView.SelectedItems.Count == 0) { 154 ClearDetailsView(); 155 } else { 156 var parameter = parametersListView.SelectedItems[0].Tag as IValueParameter; 157 UpdateDetailsView(parameter); 158 } 159 } 160 161 private void UpdateDetailsView(IValueParameter parameter) { 162 ClearDetailsView(); 163 164 var isOptionalConstrainedValueParameter = typeof(OptionalConstrainedValueParameter<>).IsAssignableFrom(parameter.GetType().GetGenericTypeDefinition()); 165 var isConstrainedValueParameter = 166 isOptionalConstrainedValueParameter 167 || typeof(ConstrainedValueParameter<>).Equals(parameter.GetType().GetGenericTypeDefinition()); 168 169 if (isConstrainedValueParameter) { 170 detailsTypeLabel.Text = "Choices:"; 171 choicesListView.Tag = parameter; 172 173 if (isOptionalConstrainedValueParameter) { 174 choicesListView.Items.Add(new ListViewItem("-") { 175 Tag = optionalNullChoice, 176 Checked = multipleChoiceParameters.ContainsKey(parameter) 177 && multipleChoiceParameters[parameter].Contains(optionalNullChoice) 178 }); 179 } 180 dynamic constrainedValuedParameter = parameter; 181 dynamic validValues = constrainedValuedParameter.ValidValues; 182 foreach (var choice in validValues) { 183 choicesListView.Items.Add(new ListViewItem(choice.ToString()) { 184 Tag = choice, 185 Checked = multipleChoiceParameters.ContainsKey(parameter) 186 && multipleChoiceParameters[parameter].Contains(choice) 187 }); 188 } 189 choicesListView.Enabled = multipleChoiceParameters.ContainsKey(parameter); 190 detailsTypeLabel.Visible = true; 191 choicesListView.Visible = true; 192 return; 193 } 194 195 if (parameter.Value is ValueTypeValue<bool>) { 196 detailsTypeLabel.Text = "Boolean parameter: True / False"; 197 detailsTypeLabel.Visible = true; 198 } 199 200 var intValue = parameter.Value as ValueTypeValue<int>; 201 if (intValue != null) { 202 if (intParameters.ContainsKey(parameter)) 203 stringConvertibleArrayView.Content = intParameters[parameter]; 204 stringConvertibleArrayView.Visible = true; 205 stringConvertibleArrayView.ReadOnly = !intParameters.ContainsKey(parameter); 206 generateButton.Tag = parameter; 207 generateButton.Enabled = intParameters.ContainsKey(parameter); 208 generateButton.Visible = true; 209 return; 210 } 211 212 var doubleValue = parameter.Value as ValueTypeValue<double>; 213 if (doubleValue != null) { 214 if (doubleParameters.ContainsKey(parameter)) 215 stringConvertibleArrayView.Content = doubleParameters[parameter]; 216 stringConvertibleArrayView.Visible = true; 217 stringConvertibleArrayView.ReadOnly = !doubleParameters.ContainsKey(parameter); 218 generateButton.Tag = parameter; 219 generateButton.Enabled = doubleParameters.ContainsKey(parameter); 220 generateButton.Visible = true; 221 return; 222 } 223 } 224 225 #region Detail controls 226 private void choiceListView_ItemChecked(object sender, ItemCheckedEventArgs e) { 227 var parameter = (IValueParameter)choicesListView.Tag; 228 if (multipleChoiceParameters.ContainsKey(parameter)) { 229 if (e.Item.Checked) { 230 multipleChoiceParameters[parameter].Add((IItem)e.Item.Tag); 231 } else multipleChoiceParameters[parameter].Remove((IItem)e.Item.Tag); 232 233 UpdateVariationsLabel(); 234 } 235 } 236 237 private void generateButton_Click(object sender, EventArgs e) { 238 var parameter = (IValueParameter)generateButton.Tag; 239 bool integerOnly = intParameters.ContainsKey(parameter); 240 double min = 0, max = 1, step = 1; 241 #region Try to calculate some meaningful values 242 if (integerOnly) { 243 int len = intParameters[parameter].Length; 244 if (len > 0) { 245 min = intParameters[parameter].Min(); 246 max = intParameters[parameter].Max(); 247 step = len >= 2 ? Math.Abs((intParameters[parameter][len - 1] - intParameters[parameter][len - 2])) : 1; 248 } 249 } else { 250 int len = doubleParameters[parameter].Length; 251 if (len > 0) { 252 min = doubleParameters[parameter].Min(); 253 max = doubleParameters[parameter].Max(); 254 step = len >= 2 ? Math.Abs((doubleParameters[parameter][len - 1] - doubleParameters[parameter][len - 2])) : 1; 255 } 256 } 257 #endregion 258 using (var dialog = new DefineArithmeticProgressionDialog(integerOnly, min, max, step)) { 259 if (dialog.ShowDialog(this) == DialogResult.OK) { 260 var values = dialog.Values; 261 if (integerOnly) { 262 intParameters[parameter].Reset -= new EventHandler(ValuesArray_Reset); 263 intParameters[parameter] = new IntArray(values.Select(x => (int)x).ToArray()); 264 intParameters[parameter].Reset += new EventHandler(ValuesArray_Reset); 265 stringConvertibleArrayView.Content = intParameters[parameter]; 266 } else { 267 doubleParameters[parameter].Reset -= new EventHandler(ValuesArray_Reset); 268 doubleParameters[parameter] = new DoubleArray(values.ToArray()); 269 doubleParameters[parameter].Reset += new EventHandler(ValuesArray_Reset); 270 stringConvertibleArrayView.Content = doubleParameters[parameter]; 271 } 272 UpdateVariationsLabel(); 273 } 274 } 275 } 276 277 private void ValuesArray_Reset(object sender, EventArgs e) { 278 UpdateVariationsLabel(); 279 } 280 #endregion 281 #endregion 282 283 #region Instances 284 private void instancesTreeView_AfterCheck(object sender, TreeViewEventArgs e) { 285 if (!suppressTreeViewEventHandling) { 286 if (e.Node.Nodes.Count > 0) { // provider node was (un)checked 287 SyncProviderNode(e.Node); 288 } else { // descriptor node was (un)checked 289 SyncInstanceNode(e.Node); 290 } 291 292 suppressCheckAllNoneEventHandling = true; 293 try { 294 var treeViewNodes = instancesTreeView.Nodes.OfType<TreeNode>().SelectMany(x => x.Nodes.OfType<TreeNode>()); 295 selectAllCheckBox.Checked = treeViewNodes.Count() == instances.SelectMany(x => x.Value).Count(); 296 selectNoneCheckBox.Checked = !treeViewNodes.Any(x => x.Checked); 297 } 298 finally { suppressCheckAllNoneEventHandling = false; } 299 UpdateVariationsLabel(); 300 } 301 } 302 303 private void SyncProviderNode(TreeNode node) { 304 suppressTreeViewEventHandling = true; 305 try { 306 foreach (TreeNode n in node.Nodes) { 307 if (n.Checked != node.Checked) { 308 n.Checked = node.Checked; 309 SyncInstanceNode(n, false); 310 } 311 } 312 } 313 finally { suppressTreeViewEventHandling = false; } 314 } 315 316 private void SyncInstanceNode(TreeNode node, bool providerCheck = true) { 317 var provider = (IProblemInstanceProvider)node.Parent.Tag; 318 var descriptor = (IDataDescriptor)node.Tag; 319 if (node.Checked) { 320 if (!instances.ContainsKey(provider)) 321 instances.Add(provider, new HashSet<IDataDescriptor>()); 322 instances[provider].Add(descriptor); 323 } else { 324 if (instances.ContainsKey(provider)) { 325 instances[provider].Remove(descriptor); 326 if (instances[provider].Count == 0) 327 instances.Remove(provider); 328 } 329 } 330 if (providerCheck) { 331 bool allChecked = node.Parent.Nodes.OfType<TreeNode>().All(x => x.Checked); 332 suppressTreeViewEventHandling = true; 333 try { 334 node.Parent.Checked = allChecked; 335 } 336 finally { suppressTreeViewEventHandling = false; } 337 } 338 } 339 340 private void selectAllCheckBox_CheckedChanged(object sender, EventArgs e) { 341 if (!suppressCheckAllNoneEventHandling) { 342 if (selectAllCheckBox.Checked) { 343 suppressCheckAllNoneEventHandling = true; 344 try { selectNoneCheckBox.Checked = false; } 345 finally { suppressCheckAllNoneEventHandling = false; } 346 try { 347 suppressTreeViewEventHandling = true; 348 foreach (TreeNode node in instancesTreeView.Nodes) { 349 if (!node.Checked) { 350 node.Checked = true; 351 SyncProviderNode(node); 352 } 353 } 354 } 355 finally { suppressTreeViewEventHandling = false; } 356 } 357 } 358 } 359 360 private void selectNoneCheckBox_CheckedChanged(object sender, EventArgs e) { 361 if (!suppressCheckAllNoneEventHandling) { 362 if (selectNoneCheckBox.Checked) { 363 suppressCheckAllNoneEventHandling = true; 364 try { selectAllCheckBox.Checked = false; } 365 finally { suppressCheckAllNoneEventHandling = false; } 366 try { 367 suppressTreeViewEventHandling = true; 368 foreach (TreeNode node in instancesTreeView.Nodes) { 369 if (node.Checked) { 370 node.Checked = false; 371 SyncProviderNode(node); 372 } 373 } 374 } 375 finally { suppressTreeViewEventHandling = false; } 376 } 377 } 378 } 379 #endregion 52 380 53 381 private void createBatchRunCheckBox_CheckedChanged(object sender, EventArgs e) { 54 382 repetitionsNumericUpDown.Enabled = createBatchRunCheckBox.Checked; 55 } 383 createBatchRun = createBatchRunCheckBox.Checked; 384 } 385 56 386 private void repetitionsNumericUpDown_Validated(object sender, EventArgs e) { 57 387 if (repetitionsNumericUpDown.Text == string.Empty) 58 388 repetitionsNumericUpDown.Text = repetitionsNumericUpDown.Value.ToString(); 59 } 60 private void okButton_Click(object sender, EventArgs e) { 61 experiment = new Experiment(); 62 if (createBatchRunCheckBox.Checked) { 63 BatchRun batchRun = new BatchRun(); 64 batchRun.Repetitions = (int)repetitionsNumericUpDown.Value; 65 batchRun.Optimizer = (IOptimizer)Optimizer.Clone(); 66 Experiment.Optimizers.Add(batchRun); 389 repetitions = (int)repetitionsNumericUpDown.Value; 390 } 391 392 private void experimentsLabel_TextChanged(object sender, EventArgs e) { 393 long number; 394 if (long.TryParse(variationsLabel.Text, NumberStyles.AllowThousands, CultureInfo.CurrentCulture.NumberFormat, out number)) { 395 if (number > 1000) warningProvider.SetError(variationsLabel, "Consider reducing the number of variations!"); 396 else warningProvider.SetError(variationsLabel, null); 397 } 398 } 399 #endregion 400 401 #region Helpers 402 private void SetTabControlVisibility() { 403 bool isAlgorithm = optimizer != null && optimizer is IAlgorithm; 404 bool instancesAvailable = isAlgorithm 405 && ((IAlgorithm)optimizer).Problem != null 406 && ProblemInstanceManager.GetProviders(((IAlgorithm)optimizer).Problem).Any(); 407 if (instancesAvailable && tabControl.TabCount == 1) 408 tabControl.TabPages.Add(instancesTabPage); 409 else if (!instancesAvailable && tabControl.TabCount == 2) 410 tabControl.TabPages.Remove(instancesTabPage); 411 tabControl.Visible = isAlgorithm; 412 if (isAlgorithm) { 413 variationsLabel.Visible = true; 414 experimentsToCreateDescriptionLabel.Visible = true; 415 Height = 450; 67 416 } else { 68 Experiment.Optimizers.Add((IOptimizer)Optimizer.Clone()); 69 } 70 Experiment.Prepare(true); 71 } 417 variationsLabel.Visible = false; 418 experimentsToCreateDescriptionLabel.Visible = false; 419 Height = 130; 420 } 421 } 422 423 private void FillParametersListView() { 424 parametersListView.Items.Clear(); 425 intParameters.Clear(); 426 doubleParameters.Clear(); 427 boolParameters.Clear(); 428 multipleChoiceParameters.Clear(); 429 430 if (Optimizer is IAlgorithm) { 431 var parameters = ((IAlgorithm)optimizer).Parameters; 432 foreach (var param in parameters) { 433 var valueParam = param as IValueParameter; 434 if (valueParam != null && (valueParam.Value is ValueTypeValue<bool> 435 || valueParam.Value is ValueTypeValue<int> 436 || valueParam.Value is ValueTypeValue<double>) 437 || typeof(OptionalConstrainedValueParameter<>).IsAssignableFrom(param.GetType().GetGenericTypeDefinition()) 438 || typeof(ConstrainedValueParameter<>).IsAssignableFrom(param.GetType().GetGenericTypeDefinition())) 439 parametersListView.Items.Add(new ListViewItem(param.Name) { Tag = param }); 440 } 441 } 442 } 443 444 private void FillInstanceTreeViewAsync() { 445 instances.Clear(); 446 instancesTreeView.Nodes.Clear(); 447 448 if (Optimizer is IAlgorithm && ((IAlgorithm)Optimizer).Problem != null) { 449 SetMode(DialogMode.DiscoveringInstances); 450 instanceDiscoveryBackgroundWorker.RunWorkerAsync(); 451 } 452 } 453 454 private void AddOptimizer(IOptimizer optimizer, Experiment experiment) { 455 if (createBatchRun) { 456 var batchRun = new BatchRun(); 457 batchRun.Repetitions = repetitions; 458 batchRun.Optimizer = optimizer; 459 experiment.Optimizers.Add(batchRun); 460 } else { 461 experiment.Optimizers.Add(optimizer); 462 } 463 } 464 465 private int GetNumberOfVariations() { 466 int instancesCount = 1; 467 if (instances.Values.Any()) 468 instancesCount = Math.Max(instances.Values.SelectMany(x => x).Count(), 1); 469 470 int intParameterVariations = 1; 471 foreach (var intParam in intParameters.Values) { 472 intParameterVariations *= Math.Max(intParam.Length, 1); 473 } 474 int doubleParameterVariations = 1; 475 foreach (var doubleParam in doubleParameters.Values) { 476 doubleParameterVariations *= Math.Max(doubleParam.Length, 1); 477 } 478 int boolParameterVariations = 1; 479 foreach (var boolParam in boolParameters) { 480 boolParameterVariations *= 2; 481 } 482 int choiceParameterVariations = 1; 483 foreach (var choiceParam in multipleChoiceParameters.Values) { 484 choiceParameterVariations *= Math.Max(choiceParam.Count, 1); 485 } 486 487 return (instancesCount * intParameterVariations * doubleParameterVariations * boolParameterVariations * choiceParameterVariations); 488 } 489 490 private void SetMode(DialogMode mode) { 491 if (InvokeRequired) Invoke((Action<DialogMode>)SetMode, mode); 492 else { 493 createBatchRunCheckBox.Enabled = mode == DialogMode.Normal; 494 repetitionsNumericUpDown.Enabled = mode == DialogMode.Normal; 495 parametersSplitContainer.Enabled = mode == DialogMode.Normal || mode == DialogMode.DiscoveringInstances; 496 selectAllCheckBox.Enabled = mode == DialogMode.Normal; 497 selectNoneCheckBox.Enabled = mode == DialogMode.Normal; 498 instancesTreeView.Enabled = mode == DialogMode.Normal; 499 instancesTreeView.Visible = mode == DialogMode.Normal || mode == DialogMode.CreatingExperiment || mode == DialogMode.PreparingExperiment; 500 okButton.Enabled = mode == DialogMode.Normal; 501 okButton.Visible = mode != DialogMode.CreatingExperiment && mode != DialogMode.PreparingExperiment; 502 cancelButton.Enabled = mode != DialogMode.PreparingExperiment; 503 instanceDiscoveryProgressLabel.Visible = mode == DialogMode.DiscoveringInstances; 504 instanceDiscoveryProgressBar.Visible = mode == DialogMode.DiscoveringInstances; 505 experimentCreationProgressBar.Visible = mode == DialogMode.CreatingExperiment || mode == DialogMode.PreparingExperiment; 506 } 507 } 508 509 private void ClearDetailsView() { 510 stringConvertibleArrayView.Visible = false; 511 stringConvertibleArrayView.Content = null; 512 stringConvertibleArrayView.ReadOnly = true; 513 generateButton.Visible = false; 514 detailsTypeLabel.Visible = false; 515 choicesListView.Items.Clear(); 516 choicesListView.Enabled = false; 517 choicesListView.Visible = false; 518 } 519 520 private void UpdateVariationsLabel() { 521 variationsLabel.Text = GetNumberOfVariations().ToString("#,#", CultureInfo.CurrentCulture); 522 } 523 524 #region Retrieve parameter combinations 525 private IEnumerable<Dictionary<IValueParameter, int>> GetIntParameterConfigurations() { 526 var configuration = new Dictionary<IValueParameter, int>(); 527 var enumerators = new Dictionary<IValueParameter, IEnumerator<int>>(); 528 bool finished; 529 do { 530 foreach (var p in intParameters) { 531 if (!enumerators.ContainsKey(p.Key)) { 532 enumerators[p.Key] = p.Value.GetEnumerator(); 533 enumerators[p.Key].MoveNext(); 534 } 535 configuration[p.Key] = enumerators[p.Key].Current; 536 } 537 yield return configuration; 538 539 finished = true; 540 foreach (var p in intParameters) { 541 if (!enumerators[p.Key].MoveNext()) { 542 enumerators[p.Key] = p.Value.GetEnumerator(); 543 enumerators[p.Key].MoveNext(); 544 } else { 545 finished = false; 546 break; 547 } 548 } 549 } while (!finished); 550 } 551 552 private IEnumerable<Dictionary<IValueParameter, double>> GetDoubleParameterConfigurations() { 553 var configuration = new Dictionary<IValueParameter, double>(); 554 var enumerators = new Dictionary<IValueParameter, IEnumerator<double>>(); 555 bool finished; 556 do { 557 foreach (var p in doubleParameters) { 558 if (!enumerators.ContainsKey(p.Key)) { 559 enumerators[p.Key] = p.Value.GetEnumerator(); 560 enumerators[p.Key].MoveNext(); 561 } 562 configuration[p.Key] = enumerators[p.Key].Current; 563 } 564 yield return configuration; 565 566 finished = true; 567 foreach (var p in doubleParameters) { 568 if (!enumerators[p.Key].MoveNext()) { 569 enumerators[p.Key] = p.Value.GetEnumerator(); 570 enumerators[p.Key].MoveNext(); 571 } else { 572 finished = false; 573 break; 574 } 575 } 576 } while (!finished); 577 } 578 579 private IEnumerable<Dictionary<IValueParameter, bool>> GetBoolParameterConfigurations() { 580 var configuration = new Dictionary<IValueParameter, bool>(); 581 bool finished; 582 do { 583 finished = true; 584 foreach (var p in boolParameters) { 585 if (!configuration.ContainsKey(p)) configuration.Add(p, false); 586 else { 587 if (configuration[p]) { 588 configuration[p] = false; 589 } else { 590 configuration[p] = true; 591 finished = false; 592 break; 593 } 594 } 595 } 596 yield return configuration; 597 } while (!finished); 598 } 599 600 private IEnumerable<Dictionary<IValueParameter, IItem>> GetMultipleChoiceConfigurations() { 601 var configuration = new Dictionary<IValueParameter, IItem>(); 602 var enumerators = new Dictionary<IValueParameter, IEnumerator<IItem>>(); 603 bool finished; 604 do { 605 foreach (var p in multipleChoiceParameters.Keys.ToArray()) { 606 if (!enumerators.ContainsKey(p)) { 607 enumerators.Add(p, multipleChoiceParameters[p].GetEnumerator()); 608 if (!enumerators[p].MoveNext()) { 609 multipleChoiceParameters.Remove(p); 610 continue; 611 } 612 } 613 configuration[p] = enumerators[p].Current; 614 } 615 616 finished = true; 617 foreach (var p in multipleChoiceParameters.Keys) { 618 if (!enumerators[p].MoveNext()) { 619 enumerators[p] = multipleChoiceParameters[p].GetEnumerator(); 620 enumerators[p].MoveNext(); 621 } else { 622 finished = false; 623 break; 624 } 625 } 626 yield return configuration; 627 } while (!finished); 628 } 629 #endregion 630 #endregion 631 632 #region Background workers 633 #region Instance discovery 634 private void instanceDiscoveryBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) { 635 var instanceProviders = ProblemInstanceManager.GetProviders(((IAlgorithm)Optimizer).Problem).ToArray(); 636 var nodes = new TreeNode[instanceProviders.Length]; 637 for (int i = 0; i < instanceProviders.Length; i++) { 638 var provider = instanceProviders[i]; 639 nodes[i] = new TreeNode(provider.Name) { Tag = provider }; 640 } 641 e.Result = nodes; 642 for (int i = 0; i < nodes.Length; i++) { 643 var providerNode = nodes[i]; 644 var provider = providerNode.Tag as IProblemInstanceProvider; 645 double progress = i / (double)nodes.Length; 646 instanceDiscoveryBackgroundWorker.ReportProgress((int)(100 * progress), provider.Name); 647 var descriptors = ProblemInstanceManager.GetDataDescriptors(provider).ToArray(); 648 for (int j = 0; j < descriptors.Length; j++) { 649 #region Check cancellation request 650 if (instanceDiscoveryBackgroundWorker.CancellationPending) { 651 e.Cancel = true; 652 return; 653 } 654 #endregion 655 var node = new TreeNode(descriptors[j].Name) { Tag = descriptors[j] }; 656 providerNode.Nodes.Add(node); 657 } 658 } 659 instanceDiscoveryBackgroundWorker.ReportProgress(100, string.Empty); 660 } 661 662 private void instanceDiscoveryBackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e) { 663 if (instanceDiscoveryProgressBar.Value != e.ProgressPercentage) 664 instanceDiscoveryProgressBar.Value = e.ProgressPercentage; 665 instanceDiscoveryProgressLabel.Text = (string)e.UserState; 666 Application.DoEvents(); 667 } 668 669 private void instanceDiscoveryBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { 670 try { 671 instancesTreeView.Nodes.AddRange((TreeNode[])e.Result); 672 foreach (TreeNode node in instancesTreeView.Nodes) 673 node.Collapse(); 674 selectNoneCheckBox.Checked = true; 675 } 676 catch { } 677 try { 678 SetMode(DialogMode.Normal); 679 if (e.Error != null) MessageBox.Show(e.Error.Message, "Error occurred", MessageBoxButtons.OK, MessageBoxIcon.Error); 680 } 681 catch { } 682 } 683 #endregion 684 685 #region Experiment creation 686 private void experimentCreationBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) { 687 backgroundWorkerWaitHandle.Set(); // notify the ok button that we're busy now 688 failedInstances = new StringBuilder(); 689 var localExperiment = new Experiment(); 690 691 int counter = 0, totalVariations = GetNumberOfVariations(); 692 if (instances.Count == 0) { 693 try { 694 AddParameterVariations(Optimizer, localExperiment, ref counter, totalVariations); 695 } catch (OperationCanceledException) { 696 e.Cancel = true; 697 localExperiment = null; 698 return; 699 } 700 experimentCreationBackgroundWorker.ReportProgress(100, string.Empty); 701 } else { 702 foreach (var provider in instances.Keys) { 703 foreach (var descriptor in instances[provider]) { 704 var algorithm = (IAlgorithm)Optimizer.Clone(); 705 bool failed = false; 706 try { 707 ProblemInstanceManager.LoadData(provider, descriptor, (IProblemInstanceConsumer)algorithm.Problem); 708 } catch (Exception ex) { 709 failedInstances.AppendLine(descriptor.Name + ": " + ex.Message); 710 failed = true; 711 } 712 if (!failed) { 713 try { 714 AddParameterVariations(algorithm, localExperiment, ref counter, totalVariations); 715 } catch (OperationCanceledException) { 716 e.Cancel = true; 717 localExperiment = null; 718 return; 719 } 720 } else experimentCreationBackgroundWorker.ReportProgress((int)Math.Round((100.0 * counter) / totalVariations), "Loading failed (" + descriptor.Name + ")"); 721 } 722 } 723 } 724 if (localExperiment != null) { 725 // this step can take some time 726 SetMode(DialogMode.PreparingExperiment); 727 experimentCreationBackgroundWorker.ReportProgress(-1); 728 localExperiment.Prepare(true); 729 experimentCreationBackgroundWorker.ReportProgress(100); 730 } 731 Experiment = localExperiment; 732 } 733 734 private void AddParameterVariations(IOptimizer optimizer, Experiment localExperiment, ref int counter, int totalVariations) { 735 var variations = experimentCreationBackgroundWorker_CalculateParameterVariations(optimizer); 736 foreach (var v in variations) { 737 if (experimentCreationBackgroundWorker.CancellationPending) 738 throw new OperationCanceledException(); 739 AddOptimizer(v, localExperiment); 740 counter++; 741 experimentCreationBackgroundWorker.ReportProgress((int)Math.Round((100.0 * counter) / totalVariations), string.Empty); 742 } 743 } 744 745 private IEnumerable<IOptimizer> experimentCreationBackgroundWorker_CalculateParameterVariations(IOptimizer optimizer) { 746 if (!boolParameters.Any() && !intParameters.Any() && !doubleParameters.Any() && !multipleChoiceParameters.Any()) { 747 var o = (IOptimizer)optimizer.Clone(); 748 o.Runs.Clear(); 749 yield return o; 750 yield break; 751 } 752 bool finished; 753 var mcEnumerator = GetMultipleChoiceConfigurations().GetEnumerator(); 754 var boolEnumerator = GetBoolParameterConfigurations().GetEnumerator(); 755 var intEnumerator = GetIntParameterConfigurations().GetEnumerator(); 756 var doubleEnumerator = GetDoubleParameterConfigurations().GetEnumerator(); 757 mcEnumerator.MoveNext(); boolEnumerator.MoveNext(); intEnumerator.MoveNext(); doubleEnumerator.MoveNext(); 758 do { 759 var variant = (IAlgorithm)optimizer.Clone(); 760 variant.Runs.Clear(); 761 variant.Name += " {"; 762 finished = true; 763 if (doubleParameters.Any()) { 764 foreach (var d in doubleEnumerator.Current) { 765 var value = (ValueTypeValue<double>)((IValueParameter)variant.Parameters[d.Key.Name]).Value; 766 value.Value = d.Value; 767 variant.Name += d.Key.Name + "=" + d.Value.ToString() + ", "; 768 } 769 if (finished) { 770 if (doubleEnumerator.MoveNext()) { 771 finished = false; 772 } else { 773 doubleEnumerator = GetDoubleParameterConfigurations().GetEnumerator(); 774 doubleEnumerator.MoveNext(); 775 } 776 } 777 } 778 if (intParameters.Any()) { 779 foreach (var i in intEnumerator.Current) { 780 var value = (ValueTypeValue<int>)((IValueParameter)variant.Parameters[i.Key.Name]).Value; 781 value.Value = i.Value; 782 variant.Name += i.Key.Name + "=" + i.Value.ToString() + ", "; 783 } 784 if (finished) { 785 if (intEnumerator.MoveNext()) { 786 finished = false; 787 } else { 788 intEnumerator = GetIntParameterConfigurations().GetEnumerator(); 789 intEnumerator.MoveNext(); 790 } 791 } 792 } 793 if (boolParameters.Any()) { 794 foreach (var b in boolEnumerator.Current) { 795 var value = (ValueTypeValue<bool>)((IValueParameter)variant.Parameters[b.Key.Name]).Value; 796 value.Value = b.Value; 797 variant.Name += b.Key.Name + "=" + b.Value.ToString() + ", "; 798 } 799 if (finished) { 800 if (boolEnumerator.MoveNext()) { 801 finished = false; 802 } else { 803 boolEnumerator = GetBoolParameterConfigurations().GetEnumerator(); 804 boolEnumerator.MoveNext(); 805 } 806 } 807 } 808 if (multipleChoiceParameters.Any()) { 809 foreach (var m in mcEnumerator.Current) { 810 dynamic variantParam = variant.Parameters[m.Key.Name]; 811 if (m.Value == optionalNullChoice) { 812 variantParam.Value = null; 813 variant.Name += m.Key.Name + "=null, "; 814 continue; 815 } 816 var variantEnumerator = ((IEnumerable<object>)variantParam.ValidValues).GetEnumerator(); 817 var originalEnumerator = ((IEnumerable<object>)((dynamic)m.Key).ValidValues).GetEnumerator(); 818 while (variantEnumerator.MoveNext() && originalEnumerator.MoveNext()) { 819 if (m.Value == (IItem)originalEnumerator.Current) { 820 variantParam.Value = (dynamic)variantEnumerator.Current; 821 if (m.Value is INamedItem) 822 variant.Name += m.Key.Name + "=" + ((INamedItem)m.Value).Name + ", "; 823 else variant.Name += m.Key.Name + "=" + m.Value.ToString() + ", "; 824 break; 825 } 826 } 827 } 828 if (finished) { 829 if (mcEnumerator.MoveNext()) { 830 finished = false; 831 } else { 832 mcEnumerator = GetMultipleChoiceConfigurations().GetEnumerator(); 833 mcEnumerator.MoveNext(); 834 } 835 } 836 } 837 variant.Name = variant.Name.Substring(0, variant.Name.Length - 2) + "}"; 838 yield return variant; 839 } while (!finished); 840 } 841 842 private void experimentCreationBackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e) { 843 if (e.ProgressPercentage >= 0 && e.ProgressPercentage <= 100) { 844 experimentCreationProgressBar.Style = ProgressBarStyle.Continuous; 845 experimentCreationProgressBar.Value = e.ProgressPercentage; 846 } else { 847 experimentCreationProgressBar.Style = ProgressBarStyle.Marquee; 848 } 849 Application.DoEvents(); 850 } 851 852 private void experimentCreationBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { 853 try { 854 SetMode(DialogMode.Normal); 855 if (e.Error != null) MessageBox.Show(e.Error.Message, "Error occurred", MessageBoxButtons.OK, MessageBoxIcon.Error); 856 if (failedInstances.Length > 0) MessageBox.Show("Some instances could not be loaded: " + Environment.NewLine + failedInstances.ToString(), "Some instances failed to load", MessageBoxButtons.OK, MessageBoxIcon.Error); 857 if (!e.Cancelled && e.Error == null) { 858 DialogResult = System.Windows.Forms.DialogResult.OK; 859 Close(); 860 } 861 } 862 catch { } 863 } 864 #endregion 865 #endregion 72 866 } 73 867 } -
branches/GP-MoveOperators/HeuristicLab.Optimizer/3.3/HeuristicLab.Optimizer-3.3.csproj
r7013 r8085 99 99 </PropertyGroup> 100 100 <ItemGroup> 101 <Reference Include="Microsoft.CSharp" /> 101 102 <Reference Include="System" /> 102 103 <Reference Include="System.Core"> … … 115 116 </ItemGroup> 116 117 <ItemGroup> 118 <EmbeddedResource Include="CreateExperimentDialog.resx"> 119 <DependentUpon>CreateExperimentDialog.cs</DependentUpon> 120 </EmbeddedResource> 117 121 <EmbeddedResource Include="Documents\GA_VRP.hl" /> 118 122 <EmbeddedResource Include="Documents\SGP_SymbClass.hl" /> … … 121 125 <EmbeddedResource Include="Documents\PSO_Schwefel.hl" /> 122 126 <None Include="Plugin.cs.frame" /> 127 <Compile Include="DefineArithmeticProgressionDialog.cs"> 128 <SubType>Form</SubType> 129 </Compile> 130 <Compile Include="DefineArithmeticProgressionDialog.Designer.cs"> 131 <DependentUpon>DefineArithmeticProgressionDialog.cs</DependentUpon> 132 </Compile> 123 133 <Compile Include="OptimizerSingleDocumentMainForm.cs"> 124 134 <SubType>Form</SubType> … … 205 215 </ItemGroup> 206 216 <ItemGroup> 217 <ProjectReference Include="..\..\HeuristicLab.Clients.Access\3.3\HeuristicLab.Clients.Access-3.3.csproj"> 218 <Project>{494F87F4-0F25-4D33-A382-10CDB2174D48}</Project> 219 <Name>HeuristicLab.Clients.Access-3.3</Name> 220 <Private>False</Private> 221 </ProjectReference> 207 222 <ProjectReference Include="..\..\HeuristicLab.Clients.Common\3.3\HeuristicLab.Clients.Common-3.3.csproj"> 208 223 <Project>{730A9104-D4D1-4360-966B-E49B7571DDA3}</Project> … … 235 250 <Private>False</Private> 236 251 </ProjectReference> 252 <ProjectReference Include="..\..\HeuristicLab.Data.Views\3.3\HeuristicLab.Data.Views-3.3.csproj"> 253 <Project>{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}</Project> 254 <Name>HeuristicLab.Data.Views-3.3</Name> 255 <Private>False</Private> 256 </ProjectReference> 257 <ProjectReference Include="..\..\HeuristicLab.Data\3.3\HeuristicLab.Data-3.3.csproj"> 258 <Project>{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}</Project> 259 <Name>HeuristicLab.Data-3.3</Name> 260 <Private>False</Private> 261 </ProjectReference> 237 262 <ProjectReference Include="..\..\HeuristicLab.MainForm.WindowsForms\3.3\HeuristicLab.MainForm.WindowsForms-3.3.csproj"> 238 263 <Project>{AB687BBE-1BFE-476B-906D-44237135431D}</Project> … … 250 275 <Private>False</Private> 251 276 </ProjectReference> 277 <ProjectReference Include="..\..\HeuristicLab.Parameters\3.3\HeuristicLab.Parameters-3.3.csproj"> 278 <Project>{56F9106A-079F-4C61-92F6-86A84C2D84B7}</Project> 279 <Name>HeuristicLab.Parameters-3.3</Name> 280 <Private>False</Private> 281 </ProjectReference> 252 282 <ProjectReference Include="..\..\HeuristicLab.Persistence\3.3\HeuristicLab.Persistence-3.3.csproj"> 253 283 <Project>{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}</Project> … … 258 288 <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project> 259 289 <Name>HeuristicLab.PluginInfrastructure-3.3</Name> 290 <Private>False</Private> 291 </ProjectReference> 292 <ProjectReference Include="..\..\HeuristicLab.Problems.Instances\3.3\HeuristicLab.Problems.Instances-3.3.csproj"> 293 <Project>{3540E29E-4793-49E7-8EE2-FEA7F61C3994}</Project> 294 <Name>HeuristicLab.Problems.Instances-3.3</Name> 260 295 <Private>False</Private> 261 296 </ProjectReference> -
branches/GP-MoveOperators/HeuristicLab.Optimizer/3.3/MainFormTypeSelectionDialog.Designer.cs
r7070 r8085 126 126 this.AcceptButton = this.okButton; 127 127 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 128 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode. Font;128 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; 129 129 this.CancelButton = this.cancelButton; 130 130 this.ClientSize = new System.Drawing.Size(260, 202); -
branches/GP-MoveOperators/HeuristicLab.Optimizer/3.3/NewItemDialog.Designer.cs
r7259 r8085 121 121 this.AcceptButton = this.okButton; 122 122 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 123 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode. Font;123 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; 124 124 this.CancelButton = this.cancelButton; 125 125 this.ClientSize = new System.Drawing.Size(624, 444); -
branches/GP-MoveOperators/HeuristicLab.Optimizer/3.3/OptimizerDockingMainForm.Designer.cs
r7259 r8085 50 50 // 51 51 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 52 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode. Font;52 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; 53 53 this.ClientSize = new System.Drawing.Size(984, 714); 54 54 this.Name = "OptimizerMainForm"; -
branches/GP-MoveOperators/HeuristicLab.Optimizer/3.3/OptimizerMultipleDocumentMainForm.Designer.cs
r7259 r8085 50 50 // 51 51 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 52 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode. Font;52 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; 53 53 this.ClientSize = new System.Drawing.Size(984, 714); 54 54 this.Name = "OptimizerMainForm"; -
branches/GP-MoveOperators/HeuristicLab.Optimizer/3.3/OptimizerSingleDocumentMainForm.Designer.cs
r7259 r8085 50 50 // 51 51 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 52 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode. Font;52 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; 53 53 this.ClientSize = new System.Drawing.Size(984, 714); 54 54 this.Name = "OptimizerMainForm"; -
branches/GP-MoveOperators/HeuristicLab.Optimizer/3.3/Plugin.cs.frame
r7260 r8085 21 21 22 22 using System.Windows.Forms; 23 using HeuristicLab.Clients.Access; 23 24 using HeuristicLab.Optimizer.Properties; 24 25 using HeuristicLab.PluginInfrastructure; … … 33 34 [PluginDependency("HeuristicLab.Core", "3.3")] 34 35 [PluginDependency("HeuristicLab.Core.Views", "3.3")] 36 [PluginDependency("HeuristicLab.Data", "3.3")] 37 [PluginDependency("HeuristicLab.Data.Views", "3.3")] 35 38 [PluginDependency("HeuristicLab.MainForm", "3.3")] 36 39 [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")] 37 40 [PluginDependency("HeuristicLab.Optimization", "3.3")] 41 [PluginDependency("HeuristicLab.Parameters", "3.3")] 38 42 [PluginDependency("HeuristicLab.Persistence", "3.3")] 43 [PluginDependency("HeuristicLab.Problems.Instances", "3.3")] 44 [PluginDependency("HeuristicLab.Clients.Access", "3.3")] 39 45 public class HeuristicLabOptimizerPlugin : PluginBase { 40 46 } … … 54 60 55 61 if (mainForm != null) { 62 ClientInformation.InitializeAsync(); 63 UserInformation.InitializeAsync(); 64 56 65 mainForm.ShowContentInViewHost = true; 57 66 Application.Run(mainForm); -
branches/GP-MoveOperators/HeuristicLab.Optimizer/3.3/StartPage.Designer.cs
r7259 r8085 211 211 // 212 212 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 213 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode. Font;213 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; 214 214 this.Controls.Add(this.splitContainer); 215 215 this.Controls.Add(this.showStartPageCheckBox);
Note: See TracChangeset
for help on using the changeset viewer.