EMSOL Version 0.1.n Diary

Version 0.1.0: Created 21/12/96

Installed in
/home/jajhall/EMSOL/V0.1.0/*
13/01/97: Bugs fixed for SOS code to work. Version 0.1.1 created.

Version 0.1.1: Created 13/01/97

Installed in
/home/jajhall/EMSOL/V0.1.1/*
13/01/97: Dummy subroutines and copies of .INC files referring to ERGOL deleted. Version 0.1.2 created.

Version 0.1.2: Created 13/01/97

Installed in
/home/jajhall/EMSOL/V0.1.2/*
22/01/97: Compiler-directives replaced by KIMMs macro package. No other changes to code. Version 0.1.3 created.

Version 0.1.3: Created 22/01/97

Installed in
/home/jajhall/EMSOL/V0.1.3/*
22/01/97 Work at Mansionhouse Road on assembler versions of FTRAN, PRICE (both OK), BTRAN (linking but minor error suspected) and U_STRUC_STPST_ED_WT (not linking and much work to be done). PENTIUM macro introduced in order to switch in the appropriate subroutine timing facilities.

23/01/97 Unpacked files from 22/01/97 in preparation for release as Version 0.1.4

24/01/97 Updated HTML and Postscript documentation. Version 0.1.4 created.

Version 0.1.4: Created 24/01/97

Installed in
/home/jajhall/EMSOL/v0_1_4/*
Note change of style for version directory: Can't have V0.1.n on PC

24/01/97 Identified all "questionmarks" in code in preparation for general tidy up

03/02/97 Wrote PWL-LP converter: Converts a problem with 2 structurals and 3 PWL rows, each having 5 breakpoints (not centred on 0) into standard LP with 20 structurals and 3 fixed rows. Code can't handle PWL structurals and doesn't yet set the initial values of the primal activities for the new structurals from the row activity.

08-09/02/97 Added PWL row and column reference section and value to parameter list of ems_pwl.

10-11/02/97 PWL preprocessing re-written in terms of sections. Two-part solution of infeasible LP problem: 3-row, 2-column problem solved as infeasible then 6-section PWL penalties introduced using ems_pwl, and solved using ems_sslv by converting PWL to additional structurals. Hot start being added...

14/02/97 Hot start tested on 3-row, 2-column problem. Routine to recover PWL variables and routines for reporting PWL variables written but not debugged. Latter certainly has bugs. Version 0.1.5 created so that KIMM can test specification of PWL from modeller.

Version 0.1.5: Created 14/02/97

18/02/97 SLP linked and runs OK---with ~jajhall/LP/obj/*.o Edge Weight vector is not defined until rsmi has been called. Need dummy parameter if ml_da_msk_ed_wt=.false. and then only create edge weights in ems_repl_pwl_vr if ml_da_msk_ed_wt=.true. Tidy up these mods and Create Version 0.1.6

19/02/97 Appropriate initialisation of edge weights done. BP variables left as PWL---so converted to std LP---due to bug generated by SLP model.
narray(70) and narray(71) from ems_nget return the pointers to the internal current section number for PWL rows and columns---using the section numbering defined by the user when ems_pwl was originally called: needs to go into the DOCUMENTATION..

21/02/97 Fixed trivial bug which caused the solver to fail with BP variables. My noddy problem solves when there is one of the rows is a BP variable. I can also recognise when PWLs reduce to equalities and pick up the cost on the variable.
Conversion LP->-PWL now gets primal activities right and sets the status.
Noddy problem gets unbounded when BP variable is replace but works when BP is left in! Need to fix this before creating Version 0.1.6

23/02/97 Fixed bug when BP variables are replaced. Looked at H_Sym problem from SLP which has reset loop when BP variables are not replaced. This is due to degeneracy. If BP variables are replaced then the problem seems to solve OK (32-11-8-3-0 simplex iterations per major iteration). Dual activity errors when using update pricing but number of iterations unaffected by using/not using update pricing. Written code to get objective function value correct when usr_PWL variables can be converted to standard variables and when converting PWL to standard variables. Created Version 0.1.6

Version 0.1.6: Created 23/02/97

28/02/97 Fixed bug which caused reset loop with H_Sym problem from SLP. Changed the control variable 172 which controls replacement of PWL variables: it is now a bit-mask with the 1-bit for replacing BP variables and the 2-bit for PWL. BP variables are no lonver converted into PWL variables just in order to replace them! Replacement of BP and PWL variables is independent. Switched use of pwl_bt to bp_bt so that the hitherto illegal setting of alt_bt=0 bp_bt=1 can be used to mark a BP variable which has been converted. Objective function values still not right although H_Sym is OK---because its reference costs are zero?

01/03/97 Added option to ems_mset allowing output to be switched off for a range of message numbers. Supressed duplication of messages to error channel if the write channel is 6. Created Version 0.1.7.

Version 0.1.7: Created 01/03/97

02/03/97 Switched from storing (reference section, f(0)) to storing (x, f(x)) in order to fix the objective value.
I am already doing it when I form breakpoint variables after taking the dual of bounded variable---the objective value is defined to be zero at the breakpoint in order that the optimal primal and dual objective values are the same.
It also gets round the adding/subtracting large numbers which is required when a PWL cost is defined to penalise deviations from some non-zero fixed value (or bounds).
Thinking about parametrics: If the reference value f(0) is set so that the objective takes a certain value f = f(0) + c.r when x=r\ne0, what happens if the optimal value of x is r and the cost c is changed parametrically? Unless f(0) is modified then the objective will change even if x does not. Storing (x, f(x)) makes parametric adjustment of breakpoints harder---switch to ref section, f(0) in this case?
Completed storage of internal copies of user data in order to map between internal current section numbers and original user's section numbers.
repl/rcov_non_std_vr need revision after removing concept of reference section.

03/03/97 Re-wrote repl/rcov_non_std_vr to use (x, f(x))---routines much simpler. Objective function correct (again)! Repl/rcov extended to cover case of BP/PWL structurals---NOT TESTED AT ALL. Need to tidy up loops 10, 110 in repl/rcov to use number of columns in the model rather than number of columns (whic will eventually include artificial structurals).

04/03/97 Bug in ems_wr_mps_ml spotted: BOUNDS LB and UB should be LO and UP. Columns wihtout any entries are not written to the MPS file: It is better not to eliminate them---because of inconsistency in numbering when models are solved from the MPS file---so they are now written out as having just a zero entry in the cost row.
Patched bugs in ems_cz_1_c and ems_*_l1_cz_r in Version 0.1.7
Bug in ems_basi FOUND BUT NOT INVESTIGATED.

11/03/97 Fixed bugs in ems_*_l1_cz_r and ems_it_xit. Created Version 0.1.8.

Version 0.1.8: Created 11/03/97

12-14/03/97 Fixed bug in ems_g_lp_ph. Abuse of ems_basi with SLP_unbd highlighed bug in ems_*_l1_cz_r when final breakpoint has up gradient which is a (negative) perturbed zero (for STPST_ED). Comment left in appropriate place in ems_sed_l1_cz_r: REMEMBER TO re-create ems_dvx_l1_cz_r. Observed that when reading in from an MPS basis, the sos bits (etc) are not set so a list of the sos variables is needed in order to reproduce SLP behaviour.
16/03/97 Fixed bugs in ems_*_l1_cz_r and ems_basi. Created Version 0.1.9.

Version 0.1.9: Created 16/03/97

17/03/97 Tried to solve Netlib set using defaults on jensen: All solved except PILOT and PILOT87.
17-21/03/97 Visit from John Hall. Salford Compiler exposed a number of (potential) bugs relating to character handling, unassigned variables (local vars not saved). Started general tidy-up of code: removing print*, stop, write(*,) but not write(cn,) Many scruffy debugging routines placed in deb subdirectory: REMEMBER to re-write export_EMSOL.
24/03/97 Superiority over OSL for DCP1 established. Bug fixed in ems_wr_mps_ml (matrix was being written in scaled form).
25/03-14/4/97 EMSOL split into four modules: Considerable rationalisation of include files.
ekkbaso does not indicate basic logicals or structurals at lower bound. incorporated into ems_baso/ems_basi.
Corrected type in call to ems_lmdl
Added ems_rgda and subroutines to compute ranging data
Added switch to suppress execution of FORTRAN (internal) write statements

Task Stack
Last modified: