AOA uses the solution assigned to the variables (which might be empty) as a starting solution. If you solve the model a second time using AOA then for the second solve AIMMS will use the solution of the first solve as a starting solution. This might result in a different solution found by AOA. To avoid this you can use, e.g.,

`empty AllVariables;`

before you call AOA; this will empty the solution stored in the variables.

If you close and reopen the AIMMS project between the AOA solves then normally AOA will find the same solution.

Note that AOA is a local solver, that is, there is no guarantee that AOA will find a global optimal solution (unless the model is convex). Therefore, if the starting solution changes it might be that AOA finds a solution with a different objective value.

If you want to share your project then you should add the complete AIMMS project folder to a zip file and upload it here. If your project contains sensitive information then you can send it by email to our support (with a reference to this topic).

Thank you @Marcel Hunting for your response.In my problem, I have a variable named “x” and I have another variable (Bff) which is defined as (Bff = 1/x) and if I use the method you mentioned, I got the error that says x=0, and the solver cannot find the solution!

I also have another question regarding this. Could you please tell me “How different solvers check the “locally optimal” solution”?

Regards

After the

empty AllVariables;

statement you should use

x := 1;

to initialize x to 1. (You can use any nonzero value.) This should resolve the division by 0 error.

I do not know what you mean by “How different solvers check the “locally optimal” solution”'; please clarify.

Note: in some cases it is possible to reformulate a nonlinear model as a linear (or conic) model in which case a linear solver can be used to find a global optimum. To check whether that is the case for your model I have to see your AIMMS project.

Thank you @Marcel Hunting for your response. For example, When I use the “AOA” solver, the resulted program status is “locally optimal”. I thought maybe this is because it reaches to its “ItrationMax”, which is 20 by default. Is this a case? or does this solver check any other criteria to decide if the solution is “locally optimal”?

Regards

AOA does not know whether the solution it found is a local or global optimum. Therefore it will always return “locally optimal”.