# How to Teach Optimisation with Octeract Engine

## What Octeract Engine does

It’s a fact that MINLPs are difficult to solve. So difficult that they often don’t solve out-of-the-box. Moreover, there’s typically no indication as to what went wrong. This is one of the fundamental challenges that comes with teaching optimisation. The unknowns in the solving process make meaningful lessons, from this type of outcome, nearly impossible.

This is where Octeract Engine comes in. The Engine is more than a global MINLP solver. It is a teacher.

## Teach with Octeract Engine

Instead of the road ending with an issue in solving, Octeract Engine aims to educate. The solver provides insight into the solving process and the issues encountered. With this intelligence, the Engine is built to teach optimisation.

If your students employ the Engine to solve a MINLP problem, information on what needs to change, in order to improve solving, is on hand.

For example, let’s say your students follow the tutorial on How to use Octeract Engine with AMPL as an exercise. The model looks as follows:

            
var x1 := 1;
var x2 := 1;
var x3;
var x4 := 1;
var x5;

minimize Expression: 42*x1 - 0.5*(100*x1*x1 + 100*x2*x2 + 100*x3*x3 + 100*x4*x4 + 100*x5*x5) + 44*x2 + 45*x3 + 47*x4 + 47.5*x5;

subject to Constraint: 20*x1 + 12*x2 + 11*x3 + 7*x4 + 4*x5 <= 40;
subject to x1_lim: 0 <= x1 <= 1;
subject to x2_lim: 0 <= x2 <= 1;
subject to x3_lim: 0 <= x3 <= 1;
subject to x4_lim: 0 <= x4 <= 1;
subject to x5_lim: 0 <= x5 <= 1;
options octeract_options 'num_cores=4';
option solver octeract-engine;
solve;
display x1, x2, x3, x4, x5;




After running the problem, the output from the Engine looks like this:

The solving output includes suggestions on how to tweak algorithmic behaviour. These suggested changes are designed to make the problem more solvable while educating the user on what happened during the solving process. In this way, learning happens instantly. The Engine directs the user to where they can find further insight in an online Knowledge Base.

 Name: BRANCHING_STRATEGY Type: string Default Value: MOST_VIOLATED_TERM Range: strategy code names

 Name: UB_FREQUENCY Type: integer Default Value: 4 Range: $$[1-{2 \times 10^9}]$$

This process teaches by guiding the user through solving their problem and understanding more about what goes on behind the scenes. Knowledge is power. Students are empowered to take some guided action when their problems don’t solve straight away.

## Why this is Valuable

Instead of spending invaluable learning time on investigating what went wrong, your students have immediate access to information. In the process, they learn more about how the solver works, the theory behind the solving process, the solver’s algorithms and how they affect the problem. The value is in the immediate learning and accessibility to information.

Octeract Engine’s teaching is not limited to identifying the issues encountered during solving. Rather, students gain a better understanding of how the solver’s algorithms work and the impact they have. These lessons are comprehensive in that they go beyond a single problem to aid students in their optimisation career.

For lecturers, teaching assistants and professors, the Engine helps to answer questions students have regarding their problems not solving. When students embark on a project, it is often the case that there are unexplained issues in solving their problems. The Engine absorbs some of these so less time is spent on trying to figure out which tweaks will help to solve the problem.