This example shows the proper handling of the class SCIL::polynomial.

We first create a new instance of SCIL::ILP_Problem.

ILP_Problem IP(Optsense_Max);

Then we add some binary variables to our model.

var a = IP.add_binary_variable(0.); var b = IP.add_binary_variable(0.); var c = IP.add_binary_variable(0.);

With these variables we are now able to create some polynomials. Polynomials can be created conveniently with the overloaded operators +, - and *.

polynomial p1 = a*b + a + 3*a*b*c; polynomial p2 = p1 - 3*a*b; polynomial p3 = a*b*c; p3 -= b*c*a;

Next we normalize the polynomials which means we summarize and simplify them. If normalize is called with the parameter `clean=true`

, monomials with coefficient 0 are deleted.

```
polynomial p1n(p1);
polynomial p2n(p2);
polynomial p3n(p3);
polynomial p3nc(p3);
p1n.normalize();
p2n.normalize();
p3n.normalize();
p3nc.normalize(true);
```

Now we add the just created polynomials to our objective function.

IP.add_polynomial(p1); IP.add_polynomial(2*b);

The creation of polynomial constraints follows the same intuitive way as with basic constraints.

polynomial p_cons = c*b + 2*c; IP.add_pol_constraint(p_cons <= 1.);

Finally we can call `optimize`

to solve the problem.

IP.optimize();

Generated on Mon Mar 28 22:03:47 2011 for SCIL by 1.6.3