Changeset 2052 for trunk/sources/HeuristicLab.ES/3.2/ESEditor.cs
- Timestamp:
- 06/17/09 00:30:11 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.ES/3.2/ESEditor.cs
r1529 r2052 36 36 public partial class ESEditor : EditorBase { 37 37 private ChooseOperatorDialog chooseOperatorDialog; 38 private OperatorLibrary operatorLibrary; 39 private List<IOperator> problemInitializers; 40 private int selectedProblemInitializer; 41 private List<IOperator> solutionGenerators; 42 private int selectedSolutionGenerator; 43 private List<IOperator> mutators; 44 private int selectedMutator; 45 private List<IOperator> evaluators; 46 private int selectedEvaluator; 47 private List<IOperator> recombinators; 48 private int selectedRecombinator; 38 49 39 50 /// <summary> … … 52 63 public ESEditor() { 53 64 InitializeComponent(); 65 problemInitializers = new List<IOperator>(); 66 selectedProblemInitializer = -1; 67 solutionGenerators = new List<IOperator>(); 68 selectedSolutionGenerator = -1; 69 mutators = new List<IOperator>(); 70 selectedMutator = -1; 71 evaluators = new List<IOperator>(); 72 selectedEvaluator = -1; 73 recombinators = new List<IOperator>(); 74 selectedRecombinator = -1; 54 75 } 55 76 /// <summary> … … 60 81 : this() { 61 82 ES = es; 83 } 84 85 private int AddOperator(ComboBox comboBox, IOperator iOperator, List<IOperator> list) { 86 for (int i = 0; i < comboBox.Items.Count - 1; i++) { 87 if ((comboBox.Items[i] as string).CompareTo(iOperator.Name) > 0) { 88 comboBox.Items.Insert(i, iOperator.Name); 89 list.Insert(i, iOperator); 90 return i; 91 } 92 } 93 int index = comboBox.Items.Count - 1; 94 comboBox.Items.Insert(index, iOperator.Name); 95 list.Add(iOperator); 96 return index; 97 } 98 private int SetOperator(ComboBox comboBox, IOperator iOperator, List<IOperator> list) { 99 int index; 100 if ((index = list.FindIndex(op => op.Name.Equals(iOperator.Name))) >= 0) { 101 comboBox.Items.RemoveAt(index); 102 list.RemoveAt(index); 103 return AddOperator(comboBox, iOperator, list); 104 } else return -1; 62 105 } 63 106 … … 106 149 } else { 107 150 tabControl.Enabled = true; 108 problemInitializationTextBox.Text = ES.ProblemInjector.GetType().Name; 109 solutionGenerationTextBox.Text = ES.SolutionGenerator.GetType().Name; 110 mutationTextBox.Text = ES.Mutator.GetType().Name; 111 evaluationTextBox.Text = ES.Evaluator.GetType().Name; 112 recombinationTextBox.Text = ES.Recombinator.GetType().Name; 151 int index; 152 if (!((index = problemInitializers.FindIndex(op => op.Name.Equals(ES.ProblemInjector.Name))) >= 0)) { 153 index = AddOperator(problemInitializationComboBox, ES.ProblemInjector, problemInitializers); 154 if (index <= selectedProblemInitializer) selectedProblemInitializer++; 155 } 156 problemInitializationComboBox.SelectedIndex = index; 157 if (!((index = solutionGenerators.FindIndex(op => op.Name.Equals(ES.SolutionGenerator.Name))) >= 0)) { 158 index = AddOperator(solutionGenerationComboBox, ES.SolutionGenerator, solutionGenerators); 159 if (index <= selectedSolutionGenerator) selectedSolutionGenerator++; 160 } 161 solutionGenerationComboBox.SelectedIndex = index; 162 if (!((index = evaluators.FindIndex(op => op.Name.Equals(ES.Evaluator.Name))) >= 0)) { 163 index = AddOperator(evaluationComboBox, ES.Evaluator, evaluators); 164 if (index <= selectedEvaluator) selectedEvaluator++; 165 } 166 evaluationComboBox.SelectedIndex = index; 167 if (!((index = mutators.FindIndex(op => op.Name.Equals(ES.Mutator.Name))) >= 0)) { 168 index = AddOperator(mutationComboBox, ES.Mutator, mutators); 169 if (index <= selectedMutator) selectedMutator++; 170 } 171 mutationComboBox.SelectedIndex = index; 172 if (!((index = recombinators.FindIndex(op => op.Name.Equals(ES.Recombinator.Name))) >= 0)) { 173 index = AddOperator(recombinationComboBox, ES.Recombinator, recombinators); 174 if (index <= selectedRecombinator) selectedRecombinator++; 175 } 176 recombinationComboBox.SelectedIndex = index; 113 177 plusRadioButton.Checked = ES.PlusNotation; 114 178 commaRadioButton.Checked = !ES.PlusNotation; … … 157 221 } 158 222 private void setProblemInitializationButton_Click(object sender, EventArgs e) { 159 if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog(); 160 if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) { 161 ES.ProblemInjector = chooseOperatorDialog.Operator; 162 problemInitializationTextBox.Text = ES.ProblemInjector.GetType().Name; 163 } 164 } 165 private void setSolutionGenerationButton_Click(object sender, EventArgs e) { 166 if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog(); 167 if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) { 168 ES.SolutionGenerator= chooseOperatorDialog.Operator; 169 solutionGenerationTextBox.Text = ES.SolutionGenerator.GetType().Name; 170 } 171 } 172 private void setMutationButton_Click(object sender, EventArgs e) { 173 if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog(); 174 if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) { 175 ES.Mutator = chooseOperatorDialog.Operator; 176 mutationTextBox.Text = ES.Mutator.GetType().Name; 177 } 178 } 179 private void setEvaluationButton_Click(object sender, EventArgs e) { 180 if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog(); 181 if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) { 182 ES.Evaluator = chooseOperatorDialog.Operator; 183 evaluationTextBox.Text = ES.Evaluator.GetType().Name; 184 } 185 } 186 private void setRecombinationButton_Click(object sender, EventArgs e) { 187 if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog(); 188 if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) { 189 ES.Recombinator = chooseOperatorDialog.Operator; 190 recombinationTextBox.Text = ES.Recombinator.GetType().Name; 191 } 223 192 224 } 193 225 private void executeButton_Click(object sender, EventArgs e) { … … 254 286 } 255 287 } 288 289 private void openOperatorLibraryButton_Click(object sender, EventArgs e) { 290 if (openOperatorLibraryFileDialog.ShowDialog() == DialogResult.OK) { 291 292 operatorLibrary = (PersistenceManager.Load(openOperatorLibraryFileDialog.FileName) as OperatorLibrary); 293 if (operatorLibrary == null) { 294 MessageBox.Show("The selected file is not an operator library"); 295 return; 296 } 297 foreach (IOperatorGroup topLevelGroup in operatorLibrary.Group.SubGroups) { 298 if (topLevelGroup.Name.Equals("Problem")) { 299 foreach (IOperatorGroup group in topLevelGroup.SubGroups) { 300 if (group.Name.Equals("Initialization")) { 301 foreach (IOperator op in group.Operators) { 302 int index = SetOperator(problemInitializationComboBox, (IOperator)op.Clone(), problemInitializers); 303 if (index < 0) { 304 index = AddOperator(problemInitializationComboBox, (IOperator)op.Clone(), problemInitializers); 305 if (index <= selectedProblemInitializer) selectedProblemInitializer++; 306 } 307 } 308 } else if (group.Name.Equals("Solution generation")) { 309 foreach (IOperator op in group.Operators) { 310 int index = SetOperator(solutionGenerationComboBox, (IOperator)op.Clone(), solutionGenerators); 311 if (index < 0) { 312 index = AddOperator(solutionGenerationComboBox, (IOperator)op.Clone(), solutionGenerators); 313 if (index <= selectedSolutionGenerator) selectedSolutionGenerator++; 314 } 315 } 316 } else if (group.Name.Equals("Evaluation")) { 317 foreach (IOperator op in group.Operators) { 318 int index = SetOperator(evaluationComboBox, (IOperator)op.Clone(), evaluators); 319 if (index < 0) { 320 index = AddOperator(evaluationComboBox, (IOperator)op.Clone(), evaluators); 321 if (index <= selectedEvaluator) selectedEvaluator++; 322 } 323 } 324 } 325 } 326 } else if (topLevelGroup.Name.Equals("ES")) { 327 foreach (IOperatorGroup group in topLevelGroup.SubGroups) { 328 if (group.Name.Equals("Mutation")) { 329 foreach (IOperator op in group.Operators) { 330 int index = SetOperator(mutationComboBox, (IOperator)op.Clone(), mutators); 331 if (index < 0) { 332 index = AddOperator(mutationComboBox, (IOperator)op.Clone(), mutators); 333 if (index <= selectedMutator) selectedMutator++; 334 } 335 } 336 } else if (group.Name.Equals("Recombination")) { 337 foreach (IOperator op in group.Operators) { 338 int index = SetOperator(recombinationComboBox, (IOperator)op.Clone(), recombinators); 339 if (index < 0) { 340 index = AddOperator(recombinationComboBox, (IOperator)op.Clone(), recombinators); 341 if (index <= selectedRecombinator) selectedRecombinator++; 342 } 343 } 344 } 345 } 346 } 347 } 348 problemInitializationComboBox.SelectedIndexChanged -= new EventHandler(problemInitializationComboBox_SelectedIndexChanged); 349 problemInitializationComboBox.SelectedIndex = selectedProblemInitializer; 350 problemInitializationComboBox.SelectedIndexChanged += new EventHandler(problemInitializationComboBox_SelectedIndexChanged); 351 solutionGenerationComboBox.SelectedIndexChanged -= new EventHandler(solutionGenerationComboBox_SelectedIndexChanged); 352 solutionGenerationComboBox.SelectedIndex = selectedSolutionGenerator; 353 solutionGenerationComboBox.SelectedIndexChanged += new EventHandler(solutionGenerationComboBox_SelectedIndexChanged); 354 evaluationComboBox.SelectedIndexChanged -= new EventHandler(evaluationComboBox_SelectedIndexChanged); 355 evaluationComboBox.SelectedIndex = selectedEvaluator; 356 evaluationComboBox.SelectedIndexChanged += new EventHandler(evaluationComboBox_SelectedIndexChanged); 357 mutationComboBox.SelectedIndexChanged -= new EventHandler(mutationComboBox_SelectedIndexChanged); 358 mutationComboBox.SelectedIndex = selectedMutator; 359 mutationComboBox.SelectedIndexChanged += new EventHandler(mutationComboBox_SelectedIndexChanged); 360 recombinationComboBox.SelectedIndexChanged -= new EventHandler(recombinationComboBox_SelectedIndexChanged); 361 recombinationComboBox.SelectedIndex = selectedRecombinator; 362 recombinationComboBox.SelectedIndexChanged += new EventHandler(recombinationComboBox_SelectedIndexChanged); 363 } 364 } 365 366 private void problemInitializationComboBox_SelectedIndexChanged(object sender, EventArgs e) { 367 int index = problemInitializationComboBox.SelectedIndex; 368 if (index != selectedProblemInitializer) { 369 if (index == problemInitializationComboBox.Items.Count - 1) { 370 if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog(); 371 if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) { 372 selectedProblemInitializer = -1; 373 index = SetOperator(problemInitializationComboBox, chooseOperatorDialog.Operator, problemInitializers); 374 if (index < 0) index = AddOperator(problemInitializationComboBox, chooseOperatorDialog.Operator, problemInitializers); 375 } else { 376 problemInitializationComboBox.SelectedIndex = selectedProblemInitializer; 377 return; 378 } 379 } 380 if (index >= 0) { 381 ES.ProblemInjector = problemInitializers[index]; 382 selectedProblemInitializer = index; 383 problemInitializationComboBox.SelectedIndex = index; 384 } 385 } 386 } 387 388 private void solutionGenerationComboBox_SelectedIndexChanged(object sender, EventArgs e) { 389 int index = solutionGenerationComboBox.SelectedIndex; 390 if (index != selectedSolutionGenerator) { 391 if (index == solutionGenerationComboBox.Items.Count - 1) { 392 if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog(); 393 if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) { 394 selectedSolutionGenerator = -1; 395 index = SetOperator(solutionGenerationComboBox, chooseOperatorDialog.Operator, solutionGenerators); 396 if (index < 0) AddOperator(solutionGenerationComboBox, chooseOperatorDialog.Operator, solutionGenerators); 397 } else { 398 solutionGenerationComboBox.SelectedIndex = selectedSolutionGenerator; 399 return; 400 } 401 } 402 if (index >= 0) { 403 ES.SolutionGenerator = solutionGenerators[index]; 404 selectedSolutionGenerator = index; 405 solutionGenerationComboBox.SelectedIndex = selectedSolutionGenerator; 406 } 407 } 408 } 409 410 private void evaluationComboBox_SelectedIndexChanged(object sender, EventArgs e) { 411 int index = evaluationComboBox.SelectedIndex; 412 if (index != selectedEvaluator) { 413 if (index == evaluationComboBox.Items.Count - 1) { 414 if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog(); 415 if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) { 416 selectedEvaluator = -1; 417 index = SetOperator(evaluationComboBox, chooseOperatorDialog.Operator, evaluators); 418 if (index < 0) index = AddOperator(evaluationComboBox, chooseOperatorDialog.Operator, evaluators); 419 } else { 420 evaluationComboBox.SelectedIndex = selectedEvaluator; 421 return; 422 } 423 } 424 if (index >= 0) { 425 ES.Evaluator = evaluators[index]; 426 selectedEvaluator = index; 427 evaluationComboBox.SelectedIndex = index; 428 } 429 } 430 } 431 432 private void mutationComboBox_SelectedIndexChanged(object sender, EventArgs e) { 433 int index = mutationComboBox.SelectedIndex; 434 if (index != selectedMutator) { 435 if (index == mutationComboBox.Items.Count - 1) { 436 if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog(); 437 if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) { 438 selectedMutator = -1; 439 index = SetOperator(mutationComboBox, chooseOperatorDialog.Operator, mutators); 440 if (index < 0) index = AddOperator(mutationComboBox, chooseOperatorDialog.Operator, mutators); 441 } else { 442 mutationComboBox.SelectedIndex = selectedMutator; 443 return; 444 } 445 } 446 if (index >= 0) { 447 ES.Mutator = mutators[index]; 448 selectedMutator = index; 449 mutationComboBox.SelectedIndex = index; 450 } 451 } 452 } 453 454 private void recombinationComboBox_SelectedIndexChanged(object sender, EventArgs e) { 455 int index = recombinationComboBox.SelectedIndex; 456 if (index != selectedRecombinator) { 457 if (index == recombinationComboBox.Items.Count - 1) { 458 if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog(); 459 if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) { 460 selectedRecombinator = -1; 461 index = SetOperator(recombinationComboBox, chooseOperatorDialog.Operator, recombinators); 462 if (index < 0) index = AddOperator(recombinationComboBox, chooseOperatorDialog.Operator, recombinators); 463 } else { 464 recombinationComboBox.SelectedIndex = selectedRecombinator; 465 return; 466 } 467 } 468 if (index >= 0) { 469 ES.Recombinator = recombinators[index]; 470 selectedRecombinator = index; 471 recombinationComboBox.SelectedIndex = index; 472 } 473 } 474 } 256 475 } 257 476 }
Note: See TracChangeset
for help on using the changeset viewer.