Ejemplo n.º 1
0
 public void GenerateEquations(EquationSystem system)
 {
     foreach (var e in entities)
     {
         system.AddParameters(e.parameters);
         system.AddEquations(e.equations);
     }
     foreach (var c in constraints)
     {
         system.AddParameters(c.parameters);
         system.AddEquations(c.equations);
     }
 }
Ejemplo n.º 2
0
    protected override bool OnSatisfy()
    {
        EquationSystem sys = new EquationSystem();

        sys.AddParameters(parameters);
        var exprs = equations.ToList();

        sys.AddEquations(equations);

        double bestI = 0.0;
        double min   = -1.0;

        for (double i = 0.0; i < 1.0; i += 0.25 / 2.0)
        {
            value.value = i;
            sys.Solve();
            double cur_value = exprs.Sum(e => Math.Abs(e.Eval()));
            if (min >= 0.0 && min < cur_value)
            {
                continue;
            }
            bestI = value.value;
            min   = cur_value;
        }
        value.value = bestI;
        return(true);
    }
Ejemplo n.º 3
0
    protected virtual bool OnSatisfy()
    {
        EquationSystem sys = new EquationSystem();

        sys.AddParameter(value);
        sys.AddEquations(equations);
        return(sys.Solve() == EquationSystem.SolveResult.OKAY);
    }
Ejemplo n.º 4
0
    protected virtual bool OnSatisfy()
    {
        EquationSystem sys = new EquationSystem();

        sys.revertWhenNotConverged = false;
        sys.AddParameter(t0);
        sys.AddParameter(t1);
        sys.AddEquations(equations);
        return(sys.Solve() == EquationSystem.SolveResult.OKAY);
    }
Ejemplo n.º 5
0
    bool Satisfy()
    {
        EquationSystem sys = new EquationSystem();

        sys.AddParameters(parameters);
        addAngle = false;
        var exprs = equations.ToList();

        addAngle = true;
        sys.AddEquations(equations);

        double bestI = 0.0;
        double bestJ = 0.0;
        double min   = -1.0;

        for (double i = 0.0; i < 1.0; i += 0.25 / 2.0)
        {
            for (double j = 0.0; j < 1.0; j += 0.25 / 2.0)
            {
                t0.value = i;
                t1.value = j;
                sys.Solve();
                double cur_value = exprs.Sum(e => Math.Abs(e.Eval()));
                if (min >= 0.0 && min < cur_value)
                {
                    continue;
                }
                bestI = t0.value;
                bestJ = t1.value;
                min   = cur_value;
            }
        }
        t0.value = bestI;
        t1.value = bestJ;
        return(true);
    }
Ejemplo n.º 6
0
 public void GenerateEquations(EquationSystem sys)
 {
     sys.AddParameters(parameters);
     sys.AddEquations(equations);
 }