First scsolver binary package after ooo-build integration

Since not everybody who wants to use my solver has a version of OO.o derived from ooo-build, I have made available a separate binary package that can be installed on a regular OO.o. There is no functionality change since the last snapshot I uploaded here on my website, so if you are having trouble solving your model with my solver, sorry, this snapshot is not gonna help you.

Because now I work directly off of ooo-build cvs, the new changelog is located here. The old changelog is no longer maintained.

Boost fix

I’ve finally tracked down the problem of my solver not solving ANY models after having been integrated into ooo-build. It was due to Boost uBlas’s matrix resize function not preserving element values when resized. In my development environment (FC4) I use Boost 1.32.0 which resizes matrix gracefuly with all the unaffected elements’ values preserved unless the caller chooses otherwise. Somehow, this feature was introduced sometime between the version included in OO.o as of SRC680m148 (1.30.2) and the version I use on my system, and the version in OO.o does NOT preserve unaffected elements’ values when the matrix is resized.

Anyway, I’m very glad to finally have nailed this one down as I had spent a few days just for this alone! Now, I’ve finally sent off a patch to Michael. This patch also fixes a couple of other minor breakages occurred during the integration (wrt. string handling and compiler warning).

BTW, It’s very interesting to see that even a simple thing like a change log has a standard format. I never knew that, obviously.

Update on what I’ve been up to these days

I haven’t been active for this past month as I was a bit preoccupied with my personal life. First of all, I’m in the process of career transition, moving from working in natural science field into software engineering. As a result of this, writing code is no longer just my hobby activity but has become my professional career as well. Over the course of years of my involvement in, I have come to realize that software development is something more than just what I want to do in my spare time, and something I want to devote my entire professional life to. So, this transition is a huge step in the right direction for me.

Unfortunately, this has kept me busy for the past month or so and I couldn’t spend much time on developing solver. But I’m hopeful that I will start being active again real soon (and no, I won’t be getting paid for working on, so, that part will still remain my hobby activity even after this career change). Right now, my priority is to have my solver code integrated into ooo-build, and prepare for possible future upstreaming of this feature. Since my CVS account is not set up yet, Michael was kind enough to do the uploading for me, and to take a look at my code and make a few suggestions for improvement with a patch.

After the integration into ooo-build is complete, here is the list of things I am planning to work on (not in this particular order):

  • Integration of bounded revised simplex – I’m convinced that certain types of models are best solved using this algorithm, while the existing revised simplex is still needed for all the other types.
  • Support for solution with negative decision variables – the simplex algorithm does not allow a solution with negative decision variables by design. But there is a simple technique you can use to work around this limitation; split each variable into two variables and solve the model, and perform subtraction afterwards.
  • Consider perhaps using an existing optimization library, such as lp_solve – while I still believe that writing and improving my own algorithms without external dependencies will be ideal in the long run, sometimes using an existing library may be worth looking into, especially when the authors of lp_solve have already spent a lot of time and effort on its development and improvement. Several people have already suggested lp_solve, so I should definitely look into it.
  • Options dialog – for algorithms selection, precision, positive variables etc.
  • Thread issues – still on the drawing board.