Ejemplo n.º 1
0
int main( int argc, const char* argv[] )
{
    // 0|-------------| x1 ----- xm ----- x2 |-----------------------|100

    /*
    x1 = kiwi.Variable('x1')
    x2 = kiwi.Variable('x2')
    xm = kiwi.Variable('xm')
    */

    Variable x1("x1");
    Variable x2("x2");
    Variable xm("xm");

    /*
    constraints = [
        x1 >= 0,
        x2 <= 100,
        x2 >= x1 + 10,
        xm == (x1 + x2) / 2,
    ]  # these all have strength 'required'
    */
    Constraint constraints[] = {
        Constraint {x1 >= 0},
        Constraint {x2 <= 100},
        Constraint {x2 >= x1 + 10},
        Constraint {xm == (x1 + x2) / 2}
    };

 // solver = kiwi.Solver()
    Solver solver;

    /*
    for cn in constraints:
        solver.addConstraint(cn)
    */
    for(auto& constraint : constraints)
    {
        solver.addConstraint(constraint);
    }

 // solver.addEditVariable(xm, 'strong')
    solver.addEditVariable(xm, strength::strong);

    /*
        for val in (-20, 0, 20, 50, 80, 100, 140):
            solver.suggestValue(xm, val)
            solver.updateVariables()
            print 'x1:', x1.value()
            print 'x2:', x2.value()
            print 'xm:', xm.value()
            print 'suggested xm:', val
            print

    */
    int values[] = {-20, 0, 20, 50, 80, 100, 140};
    for(auto value : values)
    {
        solver.suggestValue(xm, value);
        solver.updateVariables();
        std::cout << "x1:" << x1.value() << "\n";
        std::cout << "x2:" << x2.value() << "\n";
        std::cout << "xm:" << xm.value() << "\n";
        std::cout << "suggested xm:" << value << "\n";
        std::cout << "\n";
    }

    return 0;
}