I am a full-time consultant and provide services related to the design, implementation and deployment of mathematical programming, optimization and data-science applications. I also teach courses and workshops. Usually I cannot blog about projects I am doing, but there are many technical notes I'd like to share. Not in the least so I have an easy way to search and find them again myself. You can reach me at erwin@amsterdamoptimization.com.
Thursday, October 2, 2008
Bug in GAMS/Xpress link
**** SOLVER STATUS 4 TERMINATED BY SOLVER
**** MODEL STATUS 8 INTEGER SOLUTION
**** OBJECTIVE VALUE 134400.0000
RESOURCE USAGE, LIMIT 30.379 1000.000
ITERATION COUNT, LIMIT 5515 10000
The listing files does not convey any messages indicating the reason for stopping. We have observed this before, but this bug has not been fixed as of now. If a solver stops it is important to say why. Just simple-mindedly reporting "terminated by solver" makes it very difficult to fix whatever the reason is for the termination of the job.
Note: the log file did not help me either with information why the solve was stopped.
trnsport in Microsoft Solver Foundation



Wednesday, October 1, 2008
Tool to compare text files
I highly recommend Beyond Compare from http://www.scootersoftware.com/
Handling data sources in GAMS
> handle this most conveniently in GAMS.
I usually handle this is a separate GAMS model that imports from all these data sources using tools like MDB2GMS, SQL2GMS and store the data in a GDX file. Then your main GAMS model can read this GDX file. This has several advantages: your main model can focus on the optimization model itself, and will not be cluttered by all data handling and conversion code. In addition the intermediate GDX file is convenient as it now is a single self-contained file. This makes it easy to share with others, to use in other related models, to be inspected in the IDE etc. An additional advantage is that the GDX file functions as a snapshot. Even if later on databases are changing, you have a (hopefully consistent) snapshot of all input data, that allows you to run the model against a stable data set.
Attached are sheets illustrating this concept for some very large models.

Tuesday, September 30, 2008
Example MSFCli.exe
C:\projects\test>"c:\Program Files (x86)\Microsoft Solver Foundation\1.0.6.4960\Bin\MSFCli.exe" +type mps +verbose +log indus89.mps
===== Processing .\indus89.mps =====
Algorithm: Primal
CostingExact: SteepestEdge
CostingDouble: SteepestEdge
Variables: 6570 -> 6366 + 2363
Rows: 2727 -> 2564
NonZeros: 39490
Eliminated Slack Variables: 201
Phase 1 double Pivots: 4639
Phase 2 double Pivots: 1864
double Factorings: 138
Rational Factorings: 1
Degenerate pivots: 1367 (21.02 %)
{
x1 -> 114873.65553186,
x2 -> 1522.85610775999,
x3 -> 3460.00034188404,
x4 -> 479.152767198711,
x5 -> 22532.3511432455,
x6 -> 2490.55460455224,
....
x6530 -> 1,
x6550 -> 1,
x6570 -> 1
}
Zero variables: 3949
Positive variables: 2621
Negative variables: 0
Objective value: 'obj' Min Optimal -114873.65553186
===== Finished .\indus89.mps: 00:00:05.8776890 Optimal =====
The solver seems to feature some kind of rational arithmetic.
Not sure if this is related, but the Microsoft solver finds a correct solution to the Neumaier model http://www.gams.com/modlib/libhtml/badmip.htm.
Microsoft Solver Foundation
- Simplex solver (LP,MIP)
- Interior Point solver (LP,QP)
- Constraint solver (CSP)
- Unconstrained non-linear solver (NLP)
Can be used as library via any .NET language, or input can be specified as MPS and a simple equation oriented format called OML. In addition, Excel bindings are available.
http://code.msdn.microsoft.com/solverfoundation
After downloading, documentation and samples are available in My Documents\Microsoft Solver Foundation.
Monday, September 29, 2008
GBD feasibility cut
>
>I am trying to do a comparison between the performance
>of GBD and OA in the case of convex and nonconvex minlp
>problems.
>
>I am using the GBD-code from the script for MINLP methods
>that you have written and posted on your page, and comparing
>it with DICOPT-OA. My application is on transportation
>network design problem. The theory as highlighted in Floudas
>1995 about the difference between the two methods seems to
>match for the most part in my problem. However, I am facing
>infeasibilities in the sub-problem.
>
>Your GBD code on the portfolio optimization generates support
>functions only from the feasible primal. Can you give me an
>idea (if that is not much of a hassle for you) how a
>feasibility primal subproblem can be implemented in your
>GBD code to generate additional supports (from the infeasible
>subproblems), or if you have provided an example of such a
>case somewhere else I’d be grateful if you can direct me to that?
>
>I do find your webpage and the relevant files very useful when
>testing theoretical concepts through implementation in GAMS.
>
>Many thanks in advance for your time!
You can add feasibility cuts by forming a feasibility subproblem.
I do something like that for the dual subproblem in http://amsterdamoptimization.com/pdf/benders.pdf
A straightforward discussion can be found in Ullmann's Modeling and Simulation By Fritz Ullmann page 113, and 116.
Of course it may be possibly to bypass the problem by formulating an elastic version such that the subproblems are always feasible.
Conditional generation
> Did you have time to look at my "corrected" constraints? I'm really sorry for
> having written an error ...
> The correct conditions are now written:
>------------------------------------------
> if s=1 then t > b
> if s=-1 then t < -b
> if s=0 then -b <= t <= b
> where:
> variables: t real in [-1,1] b real in [0,1]
> parameter: s integer in {-1,0,1}
> ------------------------------------------
>I just can't see how to write these conditions as linear constraints in AMPL ...
>Thanx again for your help or any advice which could guide me towards the solution ...
param s = 1;
var t >= -1, <= 1;
var b >= 0, <= 1;
minimize obj: b; subject to
e1{1..1:s=1}: t >= b;
e2{1..1:s=-1}: t <= -b;
e3{1..1:s=0}: -b <= t;
e4{1..1:s=0}: t <= b;
Conditional generation of equations is an important feature in formulating real-world models. You may want to consider hiring a consultant with experience in AMPL modeling. That would speed up the implementation considerably.
Wednesday, September 24, 2008
GAMS Command Prompt
Thursday, September 18, 2008
$load x=x.l not allowed (GAMS bug)
execute_load 'merged.gdx',x=x.l;
$gdxin merged.gdx
$load x=x.l
GDXIN C:\projects\china\input\merged.gdx
5925 $load x=x.l
**** $490
**** LINE 19 INPUT C:\projects\china\input\report.gms
**** 490 Cannot load/unload this suffix
