# Is it possible to run a Solver Foundation solver against a model containing linear and non-linear elements?

This is a follow up question to one I made previously about non-linear equations and ranged real numbers in Solver Foundation.

I acknowledge that where possible, rewriting a problem that is non-linear into linear could avoid some issues, however it is likely for various reasons this won’t be a viable option.

The requirements for the project I am involved with call for a set of constraints to be generated from a data source. The issue is the constraints could be a mix of linear or non-linear problems.

I have tried to come up with a set of example constraints and variables to test against that will hopefully give a clearer picture as to what I am trying to achieve. Does anyone know of a solver capable of handling a model of the kind to be generated by this combination of variables and constraints? We are currently using Solver foundation and have been trying various configurations and solver types.

Example:

Some parameters are created and have been bound to some arbitrary values:

   P1 = 1
P2 = 2
P3 = 3


Some decisions with a domain specified as a finite range with a defined step value between each value in the range:

D1 (1..5) step of 0.1  //(e.g. 1, 1.1, 1.2 … 4.9, 5)
D2 (1..5) step of 1
D3 (10..20) step of 0.1


The following example constraints simulate the kinds of constraints likely to be acquired from the data source. Next to each constraint is the expected result of running a solver with a model containing the one constraint, given the values of the above parameters and decision variables. Note that there is no concern with the quality of a solution, simply if there is a solution (feasible) or not (unfeasible).

C1: P1 = P2 * P3 (infeasible)
C2: P3 = P1 + P2 (feasible)
C3: D1 = P1 * P2 (feasible)
C4: D3 = P1 * P2 (infeasible)
C5: P1 = D1 * D2 (feasible)
C6: P1 = D3 * D3 (infeasible)
C7: D3 = D1 * D2 (feasible)
C8: D2 = D3 * D3 (infeasible)
C9: P3 = P2 / P1 (infeasible)
C10: -P3 = P1 * D1 (infeasible)


Any pointers or advice would be most welcome :) moving from a UI background into an optimisation project has been character building to say the least.

Thanks, d.