namespace OpenTraffic.Model.Simulator.RouteAssigner { using System; using System.Collections.Generic; using System.Text; using OpenTraffic.Model.Route; [Serializable] public class Kirchnoff : ProbabilityRouteAssigner { private float exponent; public Kirchnoff(float exponent) { this.exponent = exponent; } public override Object Clone() { return new Kirchnoff(exponent); } protected override double GetGains(Vehicle v, Dictionary gains) { double totGain = 0; if (v != null && gains != null) { List routes = RoutesLookup[v.Origin][v.Destination]; gains.Clear(); foreach (RouteContainer rc in routes) { foreach (TrafficRoute r in rc.Routes) { double cost = v.routeClass.CalculateCost(r, inResult, v.StartTime); double gain = 1 / Math.Sqrt(cost); gains.Add(r, gain); totGain += gain; } } } return totGain; } public override string ToString() { return "Kirchnoff(" + this.exponent + ")"; } } }