};
- Special Ordered Sets (SOS) implemented. Thanks Daniel.
- Changed a problem with the -n cf option due to a change in
the LP file format specification.
- Tabs are now allowed as separators after keywords (set, param, ...)
- Control characters (notably CR from DOS files) are now
ignored (treated as space) on input.
- Zimpl is now build as a library to simplify incorporation
into other programs.
2.03 2. Mar 2005 Release
- If -v=0 ist set, most warnings are now suppressed.
- Documentation improved.
- Applying union, minus, intersection, or symmetric
difference to two sets with tuples that have different component
types will now result in a useful error message.
- Fixed a bug that let unknown names evaluate to a member of a set.
Example: subto c1: forall * in I do w[k] <= 1;
did not result in an error.
- Fixed a bug that made it possible to put an undefined name in a set.
- There is now a difference between "to" and "..".
"to" tries to do exactly what is requested possibly resulting in
an empty set. ".." does as before its best to produce a range.
- Fixed Bug in print command appearing in connection with default clause.
- Fixed Bug in handling of set products.
- Decreased memory consumption of hash tables.
- Slightly faster string hashing.
- Improved error handling for wrong components in sets.
2.02 15. May 2004 Release
- New function ordinal ord(s,t,c) implemented.
While there is no specific order, all sets have one.
That is ord will evaluate to the c-th component of the t-th
tuple in set s. ord({1..10}*{"a","b"}, 3, 1) is something
between 1 and 10, possibly 3. But doing
do forall in {1..card(I)} do print ord(E,i,1);
will print every element in I if it is one dimensional.
- Improved detection of incorrect initialization of sets and params.
- Bug in mod function fixed. Before mod gave the wrong result,
if the two numbers had factors in common.
- New -m switch that will write a CPLEX MST file with MIP starting values.
- Complete new Set implementation.
- If verbose is >= 3, the local variable
stack is printed if an error occurs.
- Makefile changed to support Mac OS-X.
- New -V flag to show the version number.
-h now also prints the banner text.
- man page created
2.01 29. Oct 2003 Release
- min/max over a indexed set of numbers, will now issue a warning,
if the index set is empty.
- Preprocessing is now switched on with the -O (optimize) switch.
- Fixed a major bug that occured, if two number
were subtracted from a constraint like in x - 5 + 3 >= 1
- Documentation update. Many spelling errors removed.
do print and do check statements documented.
- vif and vabs implemented. See documentation for details.
- set implementation changed. Generated powersets
and subsets do not use a hash table anymore.
This should reduce memory consumption, but
might slow things down a little bit.
- xor implemented.
- Fixed bug in presolve that resulted in fixed
variables not removed.
- Missing linefeed in hum format fixed.
- Implemented "check" statement.
- Implemented the "do" statement. This changes the
syntax for print. It is now "do print".
Now "do forall in I do print i; " is possible.
- Error 163 now shows the location of the error.
(Always start of the line ;-)
- It is now possible to define non indexed parameters
on the command line. -Dpeng=12 is equivalent to
param peng := 12; in the Zimpl file.
- <,<=,>=,> for strings implemented.
- Function sqrt() implemented.
- Functions log(), ln(), exp() reactivated.
- Some error cases of parameter input
were not handled correctly.
- Table input for parameter implemented.
- if for contstraints and summands implemented.
- if for set expressions implemented.
- Self defined functions implemented.
2.00 17. Sep 2003 Release
- Function sgn(expr) implemented.
- Fixed a bug in the set range routine. Now ranges with
negative numbers are allowed.
- Fixed bugs with MPS format.
- New output format "hum" for -t parameter generates unmangled human readable,
maschine unreadble LP format output. This replaces the -m switch.
- Changed -v switch to -v0..3 and also the outputs that appear by default.
- It is now possible to omit the .zpl extension on the input files.
- Changed output routine, so that it should work
even with with braindead OS like Windoof.
Also allowed to use a different directory separator.
- Trailing text on the last line should now draw a message.
- Bug fixed, that resulted in an unreadable LP file
if the index set of the variable has negative numbers.
- Fixed bug, that cut extensions from basenames given by -o .
- Fixed internal bug with bool not function.
- We now get an error message instead of an abort()
if the initialisation list of an parameter is empty.
- New functions min/max that take a list of expression,
like min(2, 5, a[4], b[7] / 2); (a and b are parameters)
- Included zlib. It is now possible to read in .gz transparantly.
- New function exists() that looks if a set has
at least one member, e.g. exists( in I with i > 5 )
should be equivatent to card( { in I with i > 5 }) > 0
- Better diagnosis if a variable/parameter/set name is used a second time.
- It is now possible to have contraint/obective names
that are identical to variable/parameter/set names.
- Changed gererated numbers for long names to hex. This needs less space.
- Names are now 8 characters long for MPS output,
but 16 for LPF. This is accroding to the CPLEX 7.0
specification. Starting at 8.0 it is possible to
have 255 character long names, we want to stay
compatible with the older versions.
- Changed the syntax for set initialisation.
if an indexset is assigned it has to be included in
braces like set A := { in I with i > 5 }
- It is now possible to write { in A with a > 5 }
whenever a set is needed. This means also it is now
possible to nest indexsets, like in
{ in { *