Changeset 14601 for branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.TravelingThief/3.3/Problems/LootProfitProblem.cs
- Timestamp:
- 01/24/17 09:31:29 (7 years ago)
- Location:
- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.TravelingThief
- Files:
-
- 3 added
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.TravelingThief/3.3/Problems/LootProfitProblem.cs
r14598 r14601 1 using System; 1 #region License Information 2 /* HeuristicLab 3 * Copyright (C) 2002-2017 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 * 5 * This file is part of HeuristicLab. 6 * 7 * HeuristicLab is free software: you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation, either version 3 of the License, or 10 * (at your option) any later version. 11 * 12 * HeuristicLab is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>. 19 */ 20 #endregion 21 2 22 using System.Collections.Generic; 3 23 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 24 using HeuristicLab.Common; 25 using HeuristicLab.Core; 26 using HeuristicLab.Encodings.BinaryVectorEncoding; 27 using HeuristicLab.Encodings.PermutationEncoding; 28 using HeuristicLab.Optimization; 29 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 30 using HeuristicLab.Problems.Binary; 31 using HeuristicLab.Problems.TravelingSalesman; 6 32 7 namespace HeuristicLab.Networks.IntegratedOptimization.Problems { 8 class LootProfitProblem { 33 namespace HeuristicLab.Networks.IntegratedOptimization.TravelingThief { 34 [Item("Loot Profit Problem", "Represents a problem whose objective is to optimize a TTP loot for fixed TTP tour.")] 35 [Creatable(CreatableAttribute.Categories.Problems, Priority = 999)] 36 [StorableClass] 37 public class LootProfitProblem : BinaryProblem { 38 public override bool Maximization { 39 get { return true; } 40 } 41 42 [Storable] 43 public TravelingSalesmanProblem Tsp { get; set; } 44 [Storable] 45 public BinaryKnapsackProblem Ksp { get; set; } 46 [Storable] 47 public Permutation FixedTspSolution { get; set; } 48 [Storable] 49 public int[] Availability { get; set; } 50 [Storable] 51 public double RentingRatio { get; set; } 52 [Storable] 53 public double MinSpeed { get; set; } 54 [Storable] 55 public double MaxSpeed { get; set; } 56 57 [StorableConstructor] 58 protected LootProfitProblem(bool deserializing) : base(deserializing) { } 59 protected LootProfitProblem(LootProfitProblem original, Cloner cloner) : base(original, cloner) { 60 Tsp = cloner.Clone(original.Tsp); 61 Ksp = cloner.Clone(original.Ksp); 62 FixedTspSolution = cloner.Clone(original.FixedTspSolution); 63 Availability = original.Availability != null ? (int[])original.Availability.Clone() : null; 64 RentingRatio = original.RentingRatio; 65 MinSpeed = original.MinSpeed; 66 MaxSpeed = original.MaxSpeed; 67 } 68 public LootProfitProblem() : base() { 69 Encoding.Length = 5; 70 } 71 72 public override IDeepCloneable Clone(Cloner cloner) { 73 return new LootProfitProblem(this, cloner); 74 } 75 76 public override double Evaluate(BinaryVector vector, IRandom random) { 77 return TtpUtils.EvaluateTtp(Tsp, FixedTspSolution.ToArray(), 78 Ksp, vector.ToArray(), 79 Availability, RentingRatio, MinSpeed, MaxSpeed); 80 } 81 82 public override IEnumerable<Individual> GetNeighbors(Individual individual, IRandom random) { 83 while (true) { 84 var neighbor = individual.Copy(); 85 SinglePositionBitflipManipulator.Apply(random, neighbor.BinaryVector()); break; 86 yield return neighbor; 87 } 88 } 9 89 } 10 90 }
Note: See TracChangeset
for help on using the changeset viewer.