-
Notifications
You must be signed in to change notification settings - Fork 1
/
Program.cs
51 lines (45 loc) · 1.77 KB
/
Program.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
using Skewboid;
using System;
using System.IO;
using System.Linq;
// open csv file and store in an array of strings
string[] lines = File.ReadAllLines("..\\..\\..\\candidates.csv");
// convert the first line into an array of strings
string[] inputLine = lines[0].Split(',');
var index = Array.IndexOf(inputLine, "NumberOfObjectives");
if (index == -1) throw new Exception("NumberOfObjectives not found");
int numObjectives = int.Parse(inputLine[index + 1]);
index = Array.IndexOf(inputLine, "NumberOfCandidates");
if (index == -1) throw new Exception("NumberOfCandidates not found");
int numCandidates = int.Parse(inputLine[index + 1]);
index = Array.IndexOf(inputLine, "NumberOfAlphas");
if (index == -1) throw new Exception("NumberOfAlphas not found");
int numAlphas = int.Parse(inputLine[index + 1]);
index = Array.IndexOf(inputLine, "Weights");
var weights = Enumerable.Repeat(1.0, numObjectives).ToArray();
if (index != -1)
for (int i = 0; i < numObjectives; i++)
{
if (double.TryParse(inputLine[index + i + 1], out var w))
weights[i] = w;
}
var candidates = new DefaultCandidate[numCandidates];
for (int i = 0; i < numCandidates; i++)
{
string[] objString = lines[i + 1].Split(',');
double[] objectives = new double[numObjectives];
for (int j = 0; j < numObjectives; j++)
if (double.TryParse(objString[j], out var f))
objectives[j] = f;
candidates[i] = new DefaultCandidate(objectives);
}
double[] alphaArray = new double[numAlphas];
for (int i = 0; i < numAlphas; i++)
{
string[] objString = lines[i + 1 + numCandidates].Split(',');
if (double.TryParse(objString[0], out var f))
{
alphaArray[i] = f;
var paretoSet = ParetoFunctions.FindParetoCandidates(candidates, alphaArray[i], 1e-9, false);
}
}