Changeset 5193
- Timestamp:
- 01/03/11 00:46:55 (14 years ago)
- Location:
- trunk/sources
- Files:
-
- 25 edited
- 8 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources
- Property svn:mergeinfo changed
/branches/ParallelEngine (added) merged: 5175-5178,5183,5185,5187-5188
- Property svn:mergeinfo changed
-
trunk/sources/HeuristicLab 3.3.sln
r5191 r5193 90 90 {A51DA44F-CB35-4F6F-99F5-2A2E904AB93B} = {A51DA44F-CB35-4F6F-99F5-2A2E904AB93B} 91 91 {2C36CD4F-E5F5-43A4-801A-201EA895FE17} = {2C36CD4F-E5F5-43A4-801A-201EA895FE17} 92 {00814351-4AB8-4088-9B99-F62787B89E93} = {00814351-4AB8-4088-9B99-F62787B89E93} 92 93 {3EAF1454-086D-44A2-8509-B1BA24DB1865} = {3EAF1454-086D-44A2-8509-B1BA24DB1865} 93 94 {3BD61258-31DA-4B09-89C0-4F71FEF5F05A} = {3BD61258-31DA-4B09-89C0-4F71FEF5F05A} … … 324 325 EndProject 325 326 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Algorithms.NSGA2-3.3", "HeuristicLab.Algorithms.NSGA2\3.3\HeuristicLab.Algorithms.NSGA2-3.3.csproj", "{15452B9F-A436-4139-8EE7-DA72FB8D3664}" 327 EndProject 328 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.ParallelEngine-3.3", "HeuristicLab.ParallelEngine\3.3\HeuristicLab.ParallelEngine-3.3.csproj", "{00814351-4AB8-4088-9B99-F62787B89E93}" 326 329 EndProject 327 330 Global … … 1466 1469 {15452B9F-A436-4139-8EE7-DA72FB8D3664}.Release|x86.ActiveCfg = Release|x86 1467 1470 {15452B9F-A436-4139-8EE7-DA72FB8D3664}.Release|x86.Build.0 = Release|x86 1471 {00814351-4AB8-4088-9B99-F62787B89E93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 1472 {00814351-4AB8-4088-9B99-F62787B89E93}.Debug|Any CPU.Build.0 = Debug|Any CPU 1473 {00814351-4AB8-4088-9B99-F62787B89E93}.Debug|x64.ActiveCfg = Debug|x64 1474 {00814351-4AB8-4088-9B99-F62787B89E93}.Debug|x64.Build.0 = Debug|x64 1475 {00814351-4AB8-4088-9B99-F62787B89E93}.Debug|x86.ActiveCfg = Debug|x86 1476 {00814351-4AB8-4088-9B99-F62787B89E93}.Debug|x86.Build.0 = Debug|x86 1477 {00814351-4AB8-4088-9B99-F62787B89E93}.Release|Any CPU.ActiveCfg = Release|Any CPU 1478 {00814351-4AB8-4088-9B99-F62787B89E93}.Release|Any CPU.Build.0 = Release|Any CPU 1479 {00814351-4AB8-4088-9B99-F62787B89E93}.Release|x64.ActiveCfg = Release|x64 1480 {00814351-4AB8-4088-9B99-F62787B89E93}.Release|x64.Build.0 = Release|x64 1481 {00814351-4AB8-4088-9B99-F62787B89E93}.Release|x86.ActiveCfg = Release|x86 1482 {00814351-4AB8-4088-9B99-F62787B89E93}.Release|x86.Build.0 = Release|x86 1468 1483 EndGlobalSection 1469 1484 GlobalSection(SolutionProperties) = preSolution -
trunk/sources/HeuristicLab.Common/3.3/HeuristicLab.Common-3.3.csproj
r5163 r5193 12 12 <AssemblyName>HeuristicLab.Common-3.3</AssemblyName> 13 13 <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> 14 <TargetFrameworkProfile></TargetFrameworkProfile> 14 <TargetFrameworkProfile> 15 </TargetFrameworkProfile> 15 16 <FileAlignment>512</FileAlignment> 16 17 <SignAssembly>true</SignAssembly> -
trunk/sources/HeuristicLab.Core/3.3/Engine.cs
r4722 r5193 23 23 using System.Collections.Generic; 24 24 using System.Threading; 25 using System.Threading.Tasks; 25 26 using HeuristicLab.Common; 26 27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; … … 42 43 } 43 44 44 private bool pausePending, stopPending; 45 #region Variables for communication between threads 46 private CancellationTokenSource cancellationTokenSource; 47 private bool stopPending; 45 48 private DateTime lastUpdateTime; 46 private System.Timers.Timer timer;49 #endregion 47 50 48 51 [StorableConstructor] 49 protected Engine(bool deserializing) 50 : base(deserializing) { 51 pausePending = stopPending = false; 52 timer = new System.Timers.Timer(100); 53 timer.AutoReset = true; 54 timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed); 55 } 52 protected Engine(bool deserializing) : base(deserializing) { } 56 53 protected Engine(Engine original, Cloner cloner) 57 54 : base(original, cloner) { … … 62 59 for (int i = contexts.Length - 1; i >= 0; i--) 63 60 executionStack.Push(cloner.Clone(contexts[i])); 64 pausePending = original.pausePending;65 stopPending = original.stopPending;66 timer = new System.Timers.Timer(100);67 timer.AutoReset = true;68 timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);69 61 } 70 62 protected Engine() … … 72 64 log = new Log(); 73 65 executionStack = new Stack<IOperation>(); 74 pausePending = stopPending = false;75 timer = new System.Timers.Timer(100);76 timer.AutoReset = true;77 timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);78 66 } 79 67 … … 97 85 public override void Start() { 98 86 base.Start(); 99 ThreadPool.QueueUserWorkItem(new WaitCallback(Run), null); 87 cancellationTokenSource = new CancellationTokenSource(); 88 stopPending = false; 89 Task task = Task.Factory.StartNew(Run, cancellationTokenSource.Token, cancellationTokenSource.Token); 90 task.ContinueWith(t => { 91 try { 92 t.Wait(); 93 } 94 catch (AggregateException ex) { 95 try { 96 ex.Flatten().Handle(x => x is OperationCanceledException); 97 } 98 catch (AggregateException remaining) { 99 if (remaining.InnerExceptions.Count == 1) OnExceptionOccurred(remaining.InnerExceptions[0]); 100 else OnExceptionOccurred(remaining); 101 } 102 } 103 cancellationTokenSource.Dispose(); 104 cancellationTokenSource = null; 105 if (stopPending) executionStack.Clear(); 106 if (executionStack.Count == 0) OnStopped(); 107 else OnPaused(); 108 }); 100 109 } 101 110 protected override void OnStarted() { … … 106 115 public override void Pause() { 107 116 base.Pause(); 108 pausePending = true;117 cancellationTokenSource.Cancel(); 109 118 } 110 119 protected override void OnPaused() { … … 115 124 public override void Stop() { 116 125 base.Stop(); 117 stopPending = true; 118 if (ExecutionState == ExecutionState.Paused) OnStopped(); 126 if (ExecutionState == ExecutionState.Paused) { 127 executionStack.Clear(); 128 OnStopped(); 129 } else { 130 stopPending = true; 131 cancellationTokenSource.Cancel(); 132 } 119 133 } 120 134 protected override void OnStopped() { … … 129 143 130 144 private void Run(object state) { 145 CancellationToken cancellationToken = (CancellationToken)state; 146 131 147 OnStarted(); 132 pausePending = stopPending = false; 148 lastUpdateTime = DateTime.Now; 149 System.Timers.Timer timer = new System.Timers.Timer(100); 150 timer.AutoReset = true; 151 timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed); 152 timer.Start(); 153 try { 154 Run(cancellationToken); 155 } 156 finally { 157 timer.Stop(); 158 timer.Dispose(); 159 ExecutionTime += DateTime.Now - lastUpdateTime; 160 } 133 161 134 lastUpdateTime = DateTime.Now; 135 timer.Start(); 136 while (!pausePending && !stopPending && (executionStack.Count > 0)) { 137 ProcessNextOperation(); 138 } 139 timer.Stop(); 140 ExecutionTime += DateTime.Now - lastUpdateTime; 141 142 if (pausePending) OnPaused(); 143 else OnStopped(); 162 cancellationToken.ThrowIfCancellationRequested(); 144 163 } 145 146 protected abstract void ProcessNextOperation(); 164 protected abstract void Run(CancellationToken cancellationToken); 147 165 148 166 private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { -
trunk/sources/HeuristicLab.Core/3.3/Interfaces/IOperator.cs
r2845 r5193 21 21 22 22 using System; 23 using System.Threading; 23 24 24 25 namespace HeuristicLab.Core { 25 26 /// <summary> 26 /// Interface to represent an operator (e.g. GreaterThanComparator,...), 27 /// a basic instruction of an algorithm. 27 /// Interface to represent an operator. 28 28 /// </summary> 29 29 public interface IOperator : IParameterizedNamedItem { 30 /// <summary>31 /// Gets or sets a boolean value whether the engine should stop here during the run.32 /// </summary>33 30 bool Breakpoint { get; set; } 34 31 35 /// <summary> 36 /// Executes the current instance on the specified <paramref name="scope"/>. 37 /// </summary> 38 /// <param name="scope">The scope where to execute the current instance.</param> 39 /// <returns>The next operation.</returns> 40 IOperation Execute(IExecutionContext context); 41 /// <summary> 42 /// Aborts the current operator. 43 /// </summary> 44 void Abort(); 32 IOperation Execute(IExecutionContext context, CancellationToken cancellationToken); 45 33 46 /// <summary> 47 /// Occurs when the breakpoint flag of the current instance was changed. 48 /// </summary> 49 event EventHandler BreakpointChanged; 50 /// <summary> 51 /// Occurs when the current instance is executed. 52 /// </summary> 34 event EventHandler BreakpointChanged; 53 35 event EventHandler Executed; 54 36 } -
trunk/sources/HeuristicLab.DebugEngine/3.3/DebugEngine.cs
r5117 r5193 23 23 using System.Linq; 24 24 using System.Threading; 25 using System.Threading.Tasks; 25 26 using HeuristicLab.Common; 26 27 using HeuristicLab.Core; … … 38 39 protected DebugEngine(bool deserializing) 39 40 : base(deserializing) { 40 pausePending = stopPending = false;41 41 InitializeTimer(); 42 42 } … … 48 48 ExecutionStack = cloner.Clone(original.ExecutionStack); 49 49 OperatorTrace = cloner.Clone(original.OperatorTrace); 50 pausePending = original.pausePending;51 stopPending = original.stopPending;52 50 InitializeTimer(); 53 51 currentOperation = cloner.Clone(original.currentOperation); 54 currentOperator = cloner.Clone(original.currentOperator);55 52 } 56 53 public DebugEngine() … … 59 56 ExecutionStack = new ExecutionStack(); 60 57 OperatorTrace = new OperatorTrace(); 61 pausePending = stopPending = false;62 58 InitializeTimer(); 63 59 } … … 86 82 public OperatorTrace OperatorTrace { get; private set; } 87 83 88 private bool pausePending, stopPending; 84 private CancellationTokenSource cancellationTokenSource; 85 private bool stopPending; 89 86 private DateTime lastUpdateTime; 90 87 private System.Timers.Timer timer; 91 92 [Storable]93 private IOperator currentOperator;94 88 95 89 [Storable] … … 159 153 public virtual void Step(bool skipStackOperations) { 160 154 OnStarted(); 155 cancellationTokenSource = new CancellationTokenSource(); 156 stopPending = false; 161 157 lastUpdateTime = DateTime.Now; 162 158 timer.Start(); 163 ProcessNextOperation(true); 164 while (skipStackOperations && !(CurrentOperation is IAtomicOperation) && CanContinue) 165 ProcessNextOperation(true); 159 try { 160 ProcessNextOperation(true, cancellationTokenSource.Token); 161 while (skipStackOperations && !(CurrentOperation is IAtomicOperation) && CanContinue) 162 ProcessNextOperation(true, cancellationTokenSource.Token); 163 } 164 catch (Exception ex) { 165 OnExceptionOccurred(ex); 166 } 166 167 timer.Stop(); 167 168 ExecutionTime += DateTime.Now - lastUpdateTime; 168 OnPaused(); 169 cancellationTokenSource.Dispose(); 170 cancellationTokenSource = null; 171 if (stopPending) ExecutionStack.Clear(); 172 if (stopPending || !CanContinue) OnStopped(); 173 else OnPaused(); 169 174 } 170 175 171 176 public override void Start() { 172 177 base.Start(); 173 ThreadPool.QueueUserWorkItem(new WaitCallback(Run), null); 178 cancellationTokenSource = new CancellationTokenSource(); 179 stopPending = false; 180 Task task = Task.Factory.StartNew(Run, cancellationTokenSource.Token, cancellationTokenSource.Token); 181 task.ContinueWith(t => { 182 try { 183 t.Wait(); 184 } 185 catch (AggregateException ex) { 186 try { 187 ex.Flatten().Handle(x => x is OperationCanceledException); 188 } 189 catch (AggregateException remaining) { 190 if (remaining.InnerExceptions.Count == 1) OnExceptionOccurred(remaining.InnerExceptions[0]); 191 else OnExceptionOccurred(remaining); 192 } 193 } 194 cancellationTokenSource.Dispose(); 195 cancellationTokenSource = null; 196 197 if (stopPending) ExecutionStack.Clear(); 198 if (stopPending || !CanContinue) OnStopped(); 199 else OnPaused(); 200 }); 174 201 } 175 202 … … 181 208 public override void Pause() { 182 209 base.Pause(); 183 pausePending = true; 184 if (currentOperator != null) currentOperator.Abort(); 210 cancellationTokenSource.Cancel(); 185 211 } 186 212 … … 193 219 CurrentOperation = null; 194 220 base.Stop(); 195 stopPending = true; 196 if (currentOperator != null) currentOperator.Abort(); 197 if (ExecutionState == ExecutionState.Paused) OnStopped(); 221 if (ExecutionState == ExecutionState.Paused) { 222 ExecutionStack.Clear(); 223 OnStopped(); 224 } else { 225 stopPending = true; 226 cancellationTokenSource.Cancel(); 227 } 198 228 } 199 229 … … 209 239 210 240 private void Run(object state) { 241 CancellationToken cancellationToken = (CancellationToken)state; 242 211 243 OnStarted(); 212 pausePending = stopPending = false;213 214 244 lastUpdateTime = DateTime.Now; 215 245 timer.Start(); 216 if (!pausePending && !stopPending && CanContinue) 217 ProcessNextOperation(false); 218 while (!pausePending && !stopPending && CanContinue && !IsAtBreakpoint) 219 ProcessNextOperation(false); 220 timer.Stop(); 221 ExecutionTime += DateTime.Now - lastUpdateTime; 222 223 if (IsAtBreakpoint) 224 Log.LogMessage(string.Format("Breaking before: {0}", CurrentAtomicOperation.Operator.Name)); 225 if (pausePending || IsAtBreakpoint) 226 OnPaused(); 227 else 228 OnStopped(); 246 try { 247 if (!cancellationToken.IsCancellationRequested && CanContinue) 248 ProcessNextOperation(false, cancellationToken); 249 while (!cancellationToken.IsCancellationRequested && CanContinue && !IsAtBreakpoint) 250 ProcessNextOperation(false, cancellationToken); 251 cancellationToken.ThrowIfCancellationRequested(); 252 } 253 finally { 254 timer.Stop(); 255 ExecutionTime += DateTime.Now - lastUpdateTime; 256 257 if (IsAtBreakpoint) 258 Log.LogMessage(string.Format("Breaking before: {0}", CurrentAtomicOperation.Operator.Name)); 259 } 229 260 } 230 261 … … 247 278 /// is pushed on the stack again.<br/> 248 279 /// If the execution was successful <see cref="EngineBase.OnOperationExecuted"/> is called.</remarks> 249 protected virtual void ProcessNextOperation(bool logOperations) { 250 try { 251 IAtomicOperation atomicOperation = CurrentOperation as IAtomicOperation; 252 OperationCollection operations = CurrentOperation as OperationCollection; 253 if (atomicOperation != null && operations != null) 254 throw new InvalidOperationException("Current operation is both atomic and an operation collection"); 255 256 if (atomicOperation != null) { 257 if (logOperations) 258 Log.LogMessage(string.Format("Performing atomic operation {0}", Utils.Name(atomicOperation))); 259 PerformAtomicOperation(atomicOperation); 260 } else if (operations != null) { 261 if (logOperations) 262 Log.LogMessage("Expanding operation collection"); 263 ExecutionStack.AddRange(operations.Reverse()); 264 CurrentOperation = null; 265 } else if (ExecutionStack.Count > 0) { 266 if (logOperations) 267 Log.LogMessage("Popping execution stack"); 268 CurrentOperation = ExecutionStack.Last(); 269 ExecutionStack.RemoveAt(ExecutionStack.Count - 1); 270 } else { 271 if (logOperations) 272 Log.LogMessage("Nothing to do"); 273 } 274 OperatorTrace.Regenerate(CurrentAtomicOperation); 275 } catch (Exception x) { 276 OnExceptionOccurred(x); 277 } 278 } 279 280 protected virtual void PerformAtomicOperation(IAtomicOperation operation) { 280 protected virtual void ProcessNextOperation(bool logOperations, CancellationToken cancellationToken) { 281 IAtomicOperation atomicOperation = CurrentOperation as IAtomicOperation; 282 OperationCollection operations = CurrentOperation as OperationCollection; 283 if (atomicOperation != null && operations != null) 284 throw new InvalidOperationException("Current operation is both atomic and an operation collection"); 285 286 if (atomicOperation != null) { 287 if (logOperations) 288 Log.LogMessage(string.Format("Performing atomic operation {0}", Utils.Name(atomicOperation))); 289 PerformAtomicOperation(atomicOperation, cancellationToken); 290 } else if (operations != null) { 291 if (logOperations) 292 Log.LogMessage("Expanding operation collection"); 293 ExecutionStack.AddRange(operations.Reverse()); 294 CurrentOperation = null; 295 } else if (ExecutionStack.Count > 0) { 296 if (logOperations) 297 Log.LogMessage("Popping execution stack"); 298 CurrentOperation = ExecutionStack.Last(); 299 ExecutionStack.RemoveAt(ExecutionStack.Count - 1); 300 } else { 301 if (logOperations) 302 Log.LogMessage("Nothing to do"); 303 } 304 OperatorTrace.Regenerate(CurrentAtomicOperation); 305 } 306 307 protected virtual void PerformAtomicOperation(IAtomicOperation operation, CancellationToken cancellationToken) { 281 308 if (operation != null) { 282 309 try { 283 currentOperator = operation.Operator; 284 IOperation successor = operation.Operator.Execute((IExecutionContext)operation); 310 IOperation successor = operation.Operator.Execute((IExecutionContext)operation, cancellationToken); 285 311 if (successor != null) { 286 312 OperatorTrace.RegisterParenthood(operation, successor); 287 313 ExecutionStack.Add(successor); 288 314 } 289 currentOperator = null;290 315 CurrentOperation = null; 291 } catch (Exception ex) { 292 OnExceptionOccurred(new OperatorExecutionException(operation.Operator, ex)); 293 Pause(); 316 } 317 catch (Exception ex) { 318 if (ex is OperationCanceledException) throw ex; 319 else throw new OperatorExecutionException(operation.Operator, ex); 294 320 } 295 321 } -
trunk/sources/HeuristicLab.Operators/3.3/Operator.cs
r4722 r5193 22 22 using System; 23 23 using System.Drawing; 24 using System.Threading; 24 25 using HeuristicLab.Common; 25 26 using HeuristicLab.Core; … … 28 29 namespace HeuristicLab.Operators { 29 30 /// <summary> 30 /// The base class for alloperators.31 /// Base class for operators. 31 32 /// </summary> 32 33 [Item("Operator", "Base class for operators.")] … … 43 44 } 44 45 45 [Storable] 46 private IExecutionContext executionContext; 46 private Lazy<ThreadLocal<IExecutionContext>> executionContexts; 47 47 protected IExecutionContext ExecutionContext { 48 get { return executionContext ; }48 get { return executionContexts.Value.Value; } 49 49 private set { 50 if (value != executionContext) { 51 executionContext = value; 52 OnExecutionContextChanged(); 50 if (value != executionContexts.Value.Value) { 51 executionContexts.Value.Value = value; 53 52 } 54 53 } 55 54 } 56 57 /// <summary> 58 /// Flag whether the current instance has been canceled. 59 /// </summary> 60 private bool canceled; 61 /// <inheritdoc/> 62 protected bool Canceled { 63 get { return canceled; } 64 private set { 65 if (value != canceled) { 66 canceled = value; 67 OnCanceledChanged(); 68 } 69 } 55 private CancellationToken cancellationToken; 56 protected CancellationToken CancellationToken { 57 get { return cancellationToken; } 70 58 } 71 59 72 60 [Storable] 73 61 private bool breakpoint; 74 /// <inheritdoc/>75 /// <remarks>Calls <see cref="OnBreakpointChanged"/> in the setter.</remarks>76 62 public bool Breakpoint { 77 63 get { return breakpoint; } … … 86 72 87 73 [StorableConstructor] 88 protected Operator(bool deserializing) : base(deserializing) { } 74 protected Operator(bool deserializing) 75 : base(deserializing) { 76 executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication); 77 } 89 78 protected Operator(Operator original, Cloner cloner) 90 79 : base(original, cloner) { 91 this.canceled = original.canceled;80 executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication); 92 81 this.breakpoint = original.breakpoint; 93 this.executionContext = cloner.Clone<IExecutionContext>(original.executionContext);94 82 } 95 /// <summary>96 /// Initializes a new instance of <see cref="OperatorBase"/> setting the breakpoint flag and97 /// the canceled flag to <c>false</c> and the name of the operator to the type name.98 /// </summary>99 83 protected Operator() 100 84 : base() { 101 canceled = false;85 executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication); 102 86 breakpoint = false; 103 87 } 104 88 protected Operator(string name) 105 89 : base(name) { 106 canceled = false;90 executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication); 107 91 breakpoint = false; 108 92 } 109 93 protected Operator(string name, ParameterCollection parameters) 110 94 : base(name, parameters) { 111 canceled = false;95 executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication); 112 96 breakpoint = false; 113 97 } 114 98 protected Operator(string name, string description) 115 99 : base(name, description) { 116 canceled = false;100 executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication); 117 101 breakpoint = false; 118 102 } 119 103 protected Operator(string name, string description, ParameterCollection parameters) 120 104 : base(name, description, parameters) { 121 canceled = false;105 executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication); 122 106 breakpoint = false; 123 107 } 124 108 125 /// <inheritdoc/> 126 public virtual IOperation Execute(IExecutionContext context) { 109 public virtual IOperation Execute(IExecutionContext context, CancellationToken cancellationToken) { 127 110 try { 128 Canceled = false;129 111 ExecutionContext = context; 112 this.cancellationToken = cancellationToken; 130 113 foreach (IParameter param in Parameters) 131 114 param.ExecutionContext = context; … … 140 123 } 141 124 } 142 /// <inheritdoc/>143 /// <remarks>Sets property <see cref="Canceled"/> to <c>true</c>.</remarks>144 public void Abort() {145 Canceled = true;146 }147 /// <summary>148 /// Performs the current operator on the specified <paramref name="scope"/>.149 /// </summary>150 /// <param name="scope">The scope where to execute the operator</param>151 /// <returns><c>null</c>.</returns>152 125 public abstract IOperation Apply(); 153 126 154 protected virtual void OnExecutionContextChanged() { }155 protected virtual void OnCanceledChanged() { }156 /// <inheritdoc/>157 127 public event EventHandler BreakpointChanged; 158 /// <summary>159 /// Fires a new <c>BreakpointChanged</c> event.160 /// </summary>161 128 protected virtual void OnBreakpointChanged() { 162 129 if (BreakpointChanged != null) { … … 164 131 } 165 132 } 166 /// <inheritdoc/>167 133 public event EventHandler Executed; 168 /// <summary>169 /// Fires a new <c>Executed</c> event.170 /// </summary>171 134 protected virtual void OnExecuted() { 172 135 if (Executed != null) { -
trunk/sources/HeuristicLab.Optimization/3.3/UserDefinedProblem.cs
r4722 r5193 30 30 using HeuristicLab.Parameters; 31 31 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 32 using System.Threading; 32 33 33 34 namespace HeuristicLab.Optimization { … … 248 249 public bool Breakpoint { get; set; } 249 250 250 public IOperation Execute(IExecutionContext context) { 251 throw new InvalidOperationException("Please choose an appropriate evaluation operator."); 252 } 253 254 public void Abort() { 251 public IOperation Execute(IExecutionContext context, CancellationToken cancellationToken) { 255 252 throw new InvalidOperationException("Please choose an appropriate evaluation operator."); 256 253 } -
trunk/sources/HeuristicLab.Parameters/3.3/LookupParameter.cs
r4722 r5193 52 52 } 53 53 public new T ActualValue { 54 get { 55 if (cachedActualValue == null) cachedActualValue = GetActualValue(); 56 return (T)cachedActualValue; 57 } 58 set { 59 cachedActualValue = value; 60 SetActualValue(value); 61 } 54 get { return (T)base.ActualValue; } 55 set { base.ActualValue = value; } 62 56 } 63 57 -
trunk/sources/HeuristicLab.Parameters/3.3/Parameter.cs
r4722 r5193 22 22 using System; 23 23 using System.Drawing; 24 using System.Threading; 24 25 using HeuristicLab.Common; 25 26 using HeuristicLab.Core; … … 53 54 get { return dataType; } 54 55 } 55 protected IItem cachedActualValue; 56 57 private Lazy<ThreadLocal<IItem>> cachedActualValues; 56 58 public IItem ActualValue { 57 59 get { 58 if (cachedActualValue == null) cachedActualValue = GetActualValue();59 return cachedActualValue ;60 if (cachedActualValues.Value.Value == null) cachedActualValues.Value.Value = GetActualValue(); 61 return cachedActualValues.Value.Value; 60 62 } 61 63 set { 62 cachedActualValue = value;64 cachedActualValues.Value.Value = value; 63 65 SetActualValue(value); 64 66 } 65 67 } 66 [Storable] 67 private IExecutionContext executionContext; 68 private Lazy<ThreadLocal<IExecutionContext>> executionContexts; 68 69 public IExecutionContext ExecutionContext { 69 get { return executionContext ; }70 get { return executionContexts.Value.Value; } 70 71 set { 71 if (value != executionContext) { 72 executionContext = value; 73 cachedActualValue = null; 74 OnExecutionContextChanged(); 72 if (value != executionContexts.Value.Value) { 73 executionContexts.Value.Value = value; 74 cachedActualValues.Value.Value = null; 75 75 } 76 76 } … … 78 78 79 79 [StorableConstructor] 80 protected Parameter(bool deserializing) : base(deserializing) { } 80 protected Parameter(bool deserializing) 81 : base(deserializing) { 82 cachedActualValues = new Lazy<ThreadLocal<IItem>>(() => { return new ThreadLocal<IItem>(); }, LazyThreadSafetyMode.ExecutionAndPublication); 83 executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication); 84 } 81 85 protected Parameter(Parameter original, Cloner cloner) 82 86 : base(original, cloner) { 83 87 dataType = original.dataType; 84 executionContext = cloner.Clone(original.executionContext); 88 cachedActualValues = new Lazy<ThreadLocal<IItem>>(() => { return new ThreadLocal<IItem>(); }, LazyThreadSafetyMode.ExecutionAndPublication); 89 executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication); 85 90 } 86 91 protected Parameter() 87 92 : base("Anonymous") { 88 93 dataType = typeof(IItem); 94 cachedActualValues = new Lazy<ThreadLocal<IItem>>(() => { return new ThreadLocal<IItem>(); }, LazyThreadSafetyMode.ExecutionAndPublication); 95 executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication); 89 96 } 90 97 protected Parameter(string name, Type dataType) … … 92 99 if (dataType == null) throw new ArgumentNullException(); 93 100 this.dataType = dataType; 101 cachedActualValues = new Lazy<ThreadLocal<IItem>>(() => { return new ThreadLocal<IItem>(); }, LazyThreadSafetyMode.ExecutionAndPublication); 102 executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication); 94 103 } 95 104 protected Parameter(string name, string description, Type dataType) … … 97 106 if (dataType == null) throw new ArgumentNullException(); 98 107 this.dataType = dataType; 108 cachedActualValues = new Lazy<ThreadLocal<IItem>>(() => { return new ThreadLocal<IItem>(); }, LazyThreadSafetyMode.ExecutionAndPublication); 109 executionContexts = new Lazy<ThreadLocal<IExecutionContext>>(() => { return new ThreadLocal<IExecutionContext>(); }, LazyThreadSafetyMode.ExecutionAndPublication); 99 110 } 100 111 … … 105 116 protected abstract IItem GetActualValue(); 106 117 protected abstract void SetActualValue(IItem value); 107 108 protected virtual void OnExecutionContextChanged() { }109 118 } 110 119 } -
trunk/sources/HeuristicLab.Problems.DataAnalysis
- Property svn:mergeinfo changed
/branches/ParallelEngine/HeuristicLab.Problems.DataAnalysis (added) merged: 5177-5178
- Property svn:mergeinfo changed
-
trunk/sources/HeuristicLab.Problems.VehicleRouting
- Property svn:mergeinfo changed
/branches/ParallelEngine/HeuristicLab.Problems.VehicleRouting (added) merged: 5177-5178,5185
- Property svn:mergeinfo changed
-
trunk/sources/HeuristicLab.Problems.VehicleRouting.Views
- Property svn:mergeinfo changed (with no actual effect on merging)
-
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Crossovers/AlbaPermutationCrossover.cs
r4722 r5193 54 54 IAtomicOperation op = this.ExecutionContext.CreateOperation( 55 55 InnerCrossoverParameter.ActualValue, this.ExecutionContext.Scope); 56 op.Operator.Execute((IExecutionContext)op );56 op.Operator.Execute((IExecutionContext)op, CancellationToken); 57 57 58 58 string childName = InnerCrossoverParameter.ActualValue.ChildParameter.ActualName; -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Manipulators/AlbaPermutationManipulator.cs
r4722 r5193 51 51 IAtomicOperation op = this.ExecutionContext.CreateOperation( 52 52 InnerManipulatorParameter.ActualValue, this.ExecutionContext.Scope); 53 op.Operator.Execute((IExecutionContext)op );53 op.Operator.Execute((IExecutionContext)op, CancellationToken); 54 54 } 55 55 } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/AlbaPermutationMoveOperator.cs
r4722 r5193 46 46 PermutationMoveOperatorParameter.PermutationParameter.ActualName = VRPToursParameter.ActualName; 47 47 IAtomicOperation op = this.ExecutionContext.CreateChildOperation(PermutationMoveOperatorParameter); 48 op.Operator.Execute((IExecutionContext)op );48 op.Operator.Execute((IExecutionContext)op, CancellationToken); 49 49 50 50 return next; -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/ThreeOpt/AlbaTranslocationMoveMaker.cs
r5129 r5193 68 68 moveMaker.PermutationParameter.ActualName = VRPToursParameter.ActualName; 69 69 IAtomicOperation op = this.ExecutionContext.CreateChildOperation(moveMaker); 70 op.Operator.Execute((IExecutionContext)op );70 op.Operator.Execute((IExecutionContext)op, CancellationToken); 71 71 72 72 return next; -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Crossovers/PrinsPermutationCrossover.cs
r4722 r5193 29 29 [Item("PrinsPermutationCrossover", "An operator which crosses two VRP representations using a standard permutation operator. It is implemented as described in Prins, C. (2004). A simple and effective evolutionary algorithm for the vehicle routing problem. Computers & Operations Research, 12:1985-2002.")] 30 30 [StorableClass] 31 public sealed class PrinsPermutationCrossover : PrinsCrossover, IPrinsOperator { 31 public sealed class PrinsPermutationCrossover : PrinsCrossover, IPrinsOperator { 32 32 public IValueLookupParameter<IPermutationCrossover> InnerCrossoverParameter { 33 33 get { return (IValueLookupParameter<IPermutationCrossover>)Parameters["InnerCrossover"]; } … … 52 52 IAtomicOperation op = this.ExecutionContext.CreateOperation( 53 53 InnerCrossoverParameter.ActualValue, this.ExecutionContext.Scope); 54 op.Operator.Execute((IExecutionContext)op );54 op.Operator.Execute((IExecutionContext)op, CancellationToken); 55 55 56 56 string childName = InnerCrossoverParameter.ActualValue.ChildParameter.ActualName; -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Manipulators/PrinsPermutationManipulator.cs
r4722 r5193 42 42 public PrinsPermutationManipulator() 43 43 : base() { 44 44 Parameters.Add(new ValueLookupParameter<IPermutationManipulator>("InnerManipulator", "The permutation manipulator.", new TranslocationManipulator())); 45 45 } 46 46 … … 50 50 IAtomicOperation op = this.ExecutionContext.CreateOperation( 51 51 InnerManipulatorParameter.ActualValue, this.ExecutionContext.Scope); 52 op.Operator.Execute((IExecutionContext)op );52 op.Operator.Execute((IExecutionContext)op, CancellationToken); 53 53 } 54 54 } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Zhu/Crossovers/ZhuPermutationCrossover.cs
r4722 r5193 54 54 IAtomicOperation op = this.ExecutionContext.CreateOperation( 55 55 InnerCrossoverParameter.ActualValue, this.ExecutionContext.Scope); 56 op.Operator.Execute((IExecutionContext)op );56 op.Operator.Execute((IExecutionContext)op, CancellationToken); 57 57 58 58 string childName = InnerCrossoverParameter.ActualValue.ChildParameter.ActualName; -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Zhu/Manipulators/ZhuPermutationManipulator.cs
r4722 r5193 52 52 IAtomicOperation op = this.ExecutionContext.CreateOperation( 53 53 InnerManipulatorParameter.ActualValue, this.ExecutionContext.Scope); 54 op.Operator.Execute((IExecutionContext)op );54 op.Operator.Execute((IExecutionContext)op, CancellationToken); 55 55 } 56 56 } -
trunk/sources/HeuristicLab.SequentialEngine/3.3/SequentialEngine.cs
r4722 r5193 21 21 22 22 using System; 23 using System.Threading; 23 24 using HeuristicLab.Common; 24 25 using HeuristicLab.Core; … … 27 28 namespace HeuristicLab.SequentialEngine { 28 29 /// <summary> 29 /// Represents an engine that executes its steps sequentially, also if they could be executed 30 /// in parallel. 30 /// Engine for sequential execution of algorithms. 31 31 /// </summary> 32 32 [StorableClass] 33 33 [Item("Sequential Engine", "Engine for sequential execution of algorithms.")] 34 34 public class SequentialEngine : Engine { 35 private IOperator currentOperator;36 37 35 [StorableConstructor] 38 36 protected SequentialEngine(bool deserializing) : base(deserializing) { } … … 44 42 } 45 43 46 /// <summary> 47 /// Deals with the next operation, if it is an <see cref="AtomicOperation"/> it is executed, 48 /// if it is a <see cref="CompositeOperation"/> its single operations are pushed on the execution stack. 49 /// </summary> 50 /// <remarks>If an error occurs during the execution the operation is aborted and the operation 51 /// is pushed on the stack again.<br/> 52 /// If the execution was successful <see cref="EngineBase.OnOperationExecuted"/> is called.</remarks> 53 protected override void ProcessNextOperation() { 54 currentOperator = null; 55 IOperation next = ExecutionStack.Pop(); 56 OperationCollection coll = next as OperationCollection; 57 while (coll != null) { 58 for (int i = coll.Count - 1; i >= 0; i--) 59 ExecutionStack.Push(coll[i]); 60 next = ExecutionStack.Count > 0 ? ExecutionStack.Pop() : null; 61 coll = next as OperationCollection; 62 } 63 IAtomicOperation operation = next as IAtomicOperation; 64 if (operation != null) { 65 try { 66 currentOperator = operation.Operator; 67 ExecutionStack.Push(operation.Operator.Execute((IExecutionContext)operation)); 68 } 69 catch (Exception ex) { 70 ExecutionStack.Push(operation); 71 OnExceptionOccurred(new OperatorExecutionException(operation.Operator, ex)); 72 Pause(); 73 } 74 if (operation.Operator.Breakpoint) { 75 Log.LogMessage(string.Format("Breakpoint: {0}", operation.Operator.Name != string.Empty ? operation.Operator.Name : operation.Operator.ItemName)); 76 Pause(); 44 protected override void Run(CancellationToken cancellationToken) { 45 IOperation next; 46 OperationCollection coll; 47 IAtomicOperation operation; 48 49 while (ExecutionStack.Count > 0) { 50 cancellationToken.ThrowIfCancellationRequested(); 51 52 next = ExecutionStack.Pop(); 53 if (next is OperationCollection) { 54 coll = (OperationCollection)next; 55 for (int i = coll.Count - 1; i >= 0; i--) 56 if (coll[i] != null) ExecutionStack.Push(coll[i]); 57 } else if (next is IAtomicOperation) { 58 operation = (IAtomicOperation)next; 59 try { 60 next = operation.Operator.Execute((IExecutionContext)operation, cancellationToken); 61 } 62 catch (Exception ex) { 63 ExecutionStack.Push(operation); 64 if (ex is OperationCanceledException) throw ex; 65 else throw new OperatorExecutionException(operation.Operator, ex); 66 } 67 if (next != null) ExecutionStack.Push(next); 68 69 if (operation.Operator.Breakpoint) { 70 Log.LogMessage(string.Format("Breakpoint: {0}", operation.Operator.Name != string.Empty ? operation.Operator.Name : operation.Operator.ItemName)); 71 Pause(); 72 } 77 73 } 78 74 } 79 75 } 80 81 public override void Pause() {82 base.Pause();83 if (currentOperator != null) currentOperator.Abort();84 }85 public override void Stop() {86 base.Stop();87 if (currentOperator != null) currentOperator.Abort();88 }89 76 } 90 77 } -
trunk/sources/HeuristicLab/3.3/Files.txt
r5143 r5193 42 42 HeuristicLab.Optimization.Views\3.3:HeuristicLab.Optimization.Views-3.3.dll 43 43 HeuristicLab.Optimizer\3.3:HeuristicLab.Optimizer-3.3.dll 44 HeuristicLab.ParallelEngine\3.3:HeuristicLab.ParallelEngine-3.3.dll 44 45 HeuristicLab.Parameters\3.3:HeuristicLab.Parameters-3.3.dll 45 46 HeuristicLab.Parameters.Views\3.3:HeuristicLab.Parameters.Views-3.3.dll -
trunk/sources/HeuristicLab/3.3/Tests/Builder.testsettings
r5114 r5193 14 14 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Problems.VehicleRouting.Views-3.3.dll" /> 15 15 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Persistence-3.3.dll" /> 16 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab. SequentialEngine-3.3.dll" />16 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Problems.ExternalEvaluation.GP-3.3.dll" /> 17 17 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Algorithms.DataAnalysis.Views-3.3.dll" /> 18 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Problems. DataAnalysis.Classification.Views-3.3.dll" />18 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Problems.Knapsack-3.3.dll" /> 19 19 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\LibSVM-1.6.3.dll" /> 20 20 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Operators.Views.GraphVisualization-3.3.dll" /> 21 21 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.PluginInfrastructure-3.3.dll" /> 22 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.MainForm-3.3.dll" /> 22 23 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Core.Views-3.3.dll" /> 23 24 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Optimizer-3.3.dll" /> … … 27 28 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Tracing-3.3.dll" /> 28 29 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Encodings.BinaryVectorEncoding-3.3.dll" /> 29 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\Google.ProtocolBuffers-0.9.1.dll" />30 30 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.ALGLIB-2.5.0.dll" /> 31 31 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\ICSharpCode.SharpDevelop.Dom.dll" /> 32 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab. Data.Views-3.3.dll" />32 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Algorithms.TabuSearch-3.3.dll" /> 33 33 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\Netron.Diagramming.Core-3.0.2672.12446.dll" /> 34 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Operators.Views-3.3.dll" /> 34 35 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Encodings.RealVectorEncoding-3.3.dll" /> 35 36 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Encodings.PermutationEncoding-3.3.dll" /> … … 39 40 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.ProtobufCS-0.9.1.dll" /> 40 41 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Problems.ArtificialAnt.Views-3.3.dll" /> 41 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab. MainForm.WindowsForms-3.3.dll" />42 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Data.Views-3.3.dll" /> 42 43 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Persistence.GUI-3.3.dll" /> 43 44 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Problems.VehicleRouting-3.3.dll" /> 44 45 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Operators.Programmable-3.3.dll" /> 45 46 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Encodings.PermutationEncoding.Views-3.3.dll" /> 46 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab. Algorithms.TabuSearch-3.3.dll" />47 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.ParallelEngine-3.3.dll" /> 47 48 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Problems.TestFunctions.Views-3.3.dll" /> 48 49 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Common-3.3.dll" /> 49 50 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Netron-3.0.2672.12446.dll" /> 51 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.SequentialEngine-3.3.dll" /> 50 52 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\ICSharpCode.SharpZipLib.dll" /> 51 53 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Problems.ArtificialAnt-3.3.dll" /> 52 54 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm-3.3.dll" /> 53 55 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Operators-3.3.dll" /> 54 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\ Mono.Cecil.dll" />56 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Algorithms.NSGA2-3.3.dll" /> 55 57 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Algorithms.SimulatedAnnealing-3.3.dll" /> 56 58 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Algorithms.DataAnalysis-3.3.dll" /> … … 58 60 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Problems.OneMax-3.3.dll" /> 59 61 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Core-3.3.dll" /> 60 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab. Operators.Views-3.3.dll" />62 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Problems.ExternalEvaluation-3.3.dll" /> 61 63 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Problems.TravelingSalesman-3.3.dll" /> 62 64 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Encodings.IntegerVectorEncoding-3.3.dll" /> … … 64 66 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Problems.TestFunctions-3.3.dll" /> 65 67 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.3.dll" /> 66 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab. MainForm-3.3.dll" />68 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Parameters.Views-3.3.dll" /> 67 69 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Collections-3.3.dll" /> 68 70 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\ALGLIB-2.5.0.dll" /> … … 71 73 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Problems.TravelingSalesman.Views-3.3.dll" /> 72 74 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.MainForm.WindowsForms-3.3_Accessor.dll" /> 73 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab. Parameters.Views-3.3.dll" />75 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.LibSVM-1.6.3.dll" /> 74 76 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\ICSharpCode.TextEditor.dll" /> 75 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab .LibSVM-1.6.3.dll" />77 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab-3.3.Tests.dll" /> 76 78 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Analysis.Views-3.3.dll" /> 77 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab. Problems.ExternalEvaluation-3.3.dll" />79 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.MainForm.WindowsForms-3.3.dll" /> 78 80 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Problems.ExternalEvaluation.Views-3.3.dll" /> 79 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Problems.ExternalEvaluation.GP-3.3.dll" />80 81 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Problems.DataAnalysis.Views-3.3.dll" /> 81 82 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.log4net-1.2.10.0.dll" /> 82 83 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Problems.DataAnalysis-3.3.dll" /> 83 84 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Problems.DataAnalysis.Regression-3.3.dll" /> 84 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Problems.Knapsack-3.3.dll" /> 85 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Data-3.3.dll" /> 86 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\Mono.Cecil.dll" /> 85 87 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Optimization-3.3.dll" /> 86 88 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Random-3.3.dll" /> 87 89 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Clients.Common-3.3.dll" /> 88 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\ HeuristicLab.Data-3.3.dll" />90 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\Google.ProtocolBuffers-0.9.1.dll" /> 89 91 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Problems.ExternalEvaluation.GP.Views-3.3.dll" /> 90 92 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Algorithms.GeneticAlgorithm-3.3.dll" /> 91 93 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\ALGLIB-3.1.0.dll" /> 92 94 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Problems.OneMax.Views-3.3.dll" /> 93 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab -3.3.Tests.dll" />95 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Problems.DataAnalysis.Classification.Views-3.3.dll" /> 94 96 <DeploymentItem filename="HeuristicLab\3.3\Tests\bin\Release\HeuristicLab.Optimization.Operators-3.3.dll" /> 95 97 </Deployment> -
trunk/sources/HeuristicLab/3.3/Tests/HeuristicLab-3.3.Tests.csproj
r5191 r5193 151 151 <Name>HeuristicLab.Algorithms.LocalSearch-3.3</Name> 152 152 </ProjectReference> 153 <ProjectReference Include="..\..\..\HeuristicLab.Algorithms.NSGA2\3.3\HeuristicLab.Algorithms.NSGA2-3.3.csproj"> 154 <Project>{15452B9F-A436-4139-8EE7-DA72FB8D3664}</Project> 155 <Name>HeuristicLab.Algorithms.NSGA2-3.3</Name> 156 </ProjectReference> 153 157 <ProjectReference Include="..\..\..\HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm\3.3\HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm-3.3.csproj"> 154 158 <Project>{F409DD9E-1E9C-4EB1-AA3A-9F6E987C6E58}</Project> … … 331 335 <Name>HeuristicLab.Optimizer-3.3</Name> 332 336 </ProjectReference> 337 <ProjectReference Include="..\..\..\HeuristicLab.ParallelEngine\3.3\HeuristicLab.ParallelEngine-3.3.csproj"> 338 <Project>{00814351-4AB8-4088-9B99-F62787B89E93}</Project> 339 <Name>HeuristicLab.ParallelEngine-3.3</Name> 340 </ProjectReference> 333 341 <ProjectReference Include="..\..\..\HeuristicLab.Parameters.Views\3.3\HeuristicLab.Parameters.Views-3.3.csproj"> 334 342 <Project>{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}</Project> … … 460 468 </ItemGroup> 461 469 <ItemGroup> 462 <None Include="Builder.testsettings" /> 470 <None Include="Builder.testsettings"> 471 <SubType>Designer</SubType> 472 </None> 463 473 <None Include="GA_TSP.hl"> 464 474 <CopyToOutputDirectory>Always</CopyToOutputDirectory>
Note: See TracChangeset
for help on using the changeset viewer.