protected override ICollection <IResultFuzzyMember> InitializeMembers() { var members = new HashSet <IResultFuzzyMember>(); _very_down = new LinearResult("Very Down", this, -80f, 20f, 0f); _moderately_down = new LinearResult("Moderately Down", this, -60f, 20f, 0f); _slightly_down = new LinearResult("Slightly Down", this, -40f, 20f, 0f); _going_down = new LinearResult("Going Down", this, -20f, 20f, 0f); _center = new LinearResult("Center", this, 0f, 20f, 0f); _going_up = new LinearResult("Going Up", this, 20f, 20f, 0f); _slightly_up = new LinearResult("Slightly Up", this, 40f, 20f, 0f); _moderately_up = new LinearResult("Moderately Up", this, 60f, 20f, 0f); _very_up = new LinearResult("Very Up", this, 80f, 20f, 0f); members.Add(_very_down); members.Add(_moderately_down); members.Add(_slightly_down); members.Add(_going_down); members.Add(_center); members.Add(_going_up); members.Add(_slightly_up); members.Add(_moderately_up); members.Add(_very_up); return(members); }
/// <summary> /// Set results based on internal solver status /// </summary> private void SetResult(Z3Result status) { switch (status) { case Z3Result.Optimal: _result = LinearResult.Optimal; _solutionQuality = LinearSolutionQuality.Exact; break; case Z3Result.LocalOptimal: _result = LinearResult.Feasible; _solutionQuality = LinearSolutionQuality.Approximate; break; case Z3Result.Feasible: _result = LinearResult.Feasible; _solutionQuality = LinearSolutionQuality.Exact; break; case Z3Result.Infeasible: _result = LinearResult.InfeasiblePrimal; _solutionQuality = LinearSolutionQuality.None; break; case Z3Result.Interrupted: _result = LinearResult.Interrupted; _solutionQuality = LinearSolutionQuality.None; break; default: Debug.Assert(false, "Unrecognized Z3 Result"); break; } }
public double[] SolveLowLevelLP() { // Solve the LP Console.Write("Solving LP ... "); GurobiParams pms = new GurobiParams(); pms.OutputFlag = false; pms.TimeLimit = (int)RobustnessOptions.LPTimeMilliSeconds; // Try to prevent GC from happening here ... // First do a massive reclaim ... GC.Collect(2); // Then save the old GC mode and set the one now to low latency ... var old_gc_mode = System.Runtime.GCSettings.LatencyMode; System.Runtime.GCSettings.LatencyMode = System.Runtime.GCLatencyMode.LowLatency; var answer = solver_.Solve(pms); // Restore GC mode ... System.Runtime.GCSettings.LatencyMode = old_gc_mode; // DV: For now! //double solval = answer.GetSolutionValue(objective_id).ToDouble(); //Console.WriteLine("Objective (row) value: {0}", solval); //Console.WriteLine("Objective (variable) GetValue: {0}", answer.GetValue(vars_[LPSTerm.TotalVarCount() - 1]).ToDouble()); //var report = solver_.GetReport(LinearSolverReportType.None); //Console.WriteLine("Report:"); //Console.WriteLine(report); LinearResult result = answer.LpResult; if (result != LinearResult.Optimal) { if (result != LinearResult.Feasible) { Console.WriteLine("LP non-feasible"); return(null); } else // Feasible { Console.WriteLine("LP feasible but non-optimal solution"); } } Console.WriteLine("LP optimal solution found"); double[] vs = new double[input_dimension_]; for (int i = 0; i < input_dimension_; i++) { vs[i] = answer.GetValue(vars_[i]).ToDouble(); } return(vs); }
/// <summary>Constructor that initializes the base clases</summary> public Z3MILPSolver() : base(null) { _result = LinearResult.Feasible; _solver = new Z3BaseSolver(this); }