Free optimization software from Microsoft

This morning I stumbled across Microsoft Solver Foundation, optimization software developed in C#. The site only mentions a free “express edition.” Sounds like they’re releasing a free version first and may sell an upgrade in the future.

Microsoft is inconsistent in its support for numerical computing. For example, Visual Studio’s math.h implementation does not include the mathematical functions that are included in POSIX systems. And their implementation of C++ TR1 does not yet include the specified mathematical functions. On the other hand, they have produced products like Windows HPC Server and Solver Foundation. Clearly some people at Microsoft care about numerical computing.

Post navigation

6 thoughts on “Free optimization software from Microsoft”

I haven’t tried these routines. The modeling language could be interesting and novel. I would still try to use COIN-OR, or lp_solve, since a lot of the code has been around for some time, is optimized and bug-free.

I’ve been extremely satisfied with the free optimization you can get with Python. My set of tools:

CVX OPT for convex optimization. scipy.optimize for general constrained and unconstrained numerical optimization (BFGS, Conjugate Gradients, etc.)SymPy for symbolic math, which can be useful either to automatically compute derivative functions to give to numerical methods, or to symbolically solve for an update that is repeated frequently.

Is the purpose of this package just to give tools to people who are developing in C# already, or is it a suggestion that people who do a lot of optimization should consider using C# (at some point in the future) as their development environment?

I found CVXOPT amazing for my optimization needs but developing an entire application around it proved very very tedious – i.e. the rest of the Python code for UI. Then I tried plugging CVXOPT to C# from IPY, and it was the most painful programming experience ever. And it didn’t work. In the end I shelved the idea.

I use IronPython with Ironclad so that I can use openopt (which has a numpy dependancy) for my numerical optimizations. However, I found it to be so slow that I just switched back to CPython altogether.