static private void simulatedAnnealing(double T, double deltaT) { new_network = new Model.Network(network); while (T > 0) { new_network.resetEdges(); foreach (Model.Demand d in new_network.Demands) { generateRandomPath(d); d.flow(); } double min_price = network.Price(); if (network.Price() == 0) { min_price = double.MaxValue; } double ap = acceptanceProbability(new_network.Price(), min_price, T); if (new_network.Price() < min_price || ap > generator.NextDouble()) { Model.Network tmp = network; network = new_network; new_network = tmp; } Console.Write("\rMinimalna cena sieci: " + network.Price() + " "); T -= deltaT; } }
static private void initialize(string path) { network = new Model.Network(); using (StreamReader streamReader = new StreamReader(path)) { List<string> textFile = new List<string>(); while (streamReader.EndOfStream == false) { string line = streamReader.ReadLine(); if (!line.Contains("#") && line != "") { textFile.Add(line); } } network.load(textFile); } }
static private void initialize(string path) { network = new Model.Network(); using (StreamReader streamReader = new StreamReader(path)) { List <string> textFile = new List <string>(); while (streamReader.EndOfStream == false) { string line = streamReader.ReadLine(); if (!line.Contains("#") && line != "") { textFile.Add(line); } } network.load(textFile); } }
public Network(Network source) { this.vertices = new Vertex[source.vertices.Length]; for (int i = 0; i < source.vertices.Length; i++) { this.vertices[i] = new Vertex(i + 1); } this.edges = new Edge[source.edges.Length]; for (int i = 0; i < source.edges.Length; i++) { Edge e = source.edges[i]; this.edges[i] = new Edge(e.Id, this.vertices[e.Begin.Id - 1], this.vertices[e.End.Id - 1], e.Module.Capacity, e.Module.Price); this.edges[i].Begin.addEdgeOut(this.edges[i]); } this.demands = new Demand[source.demands.Length]; for (int i = 0; i < source.demands.Length; i++) { Demand c = source.demands[i]; this.demands[i] = new Demand(c.Id, this.vertices[c.Begin.Id - 1], this.vertices[c.End.Id - 1], c.Capacity); } }
static private void simulatedAnnealing(double T, double deltaT) { new_network = new Model.Network(network); while(T>0) { new_network.resetEdges(); foreach (Model.Demand d in new_network.Demands) { generateRandomPath(d); d.flow(); } double min_price = network.Price(); if (network.Price() == 0) { min_price = double.MaxValue; } double ap = acceptanceProbability(new_network.Price(), min_price, T); if (new_network.Price() < min_price || ap > generator.NextDouble()) { Model.Network tmp = network; network = new_network; new_network = tmp; } Console.Write("\rMinimalna cena sieci: " + network.Price() + " "); T -= deltaT; } }