Wenn man mehrere Probleminstanzen hat und diese gerne optimieren möchte, dann kann es schon viel Aufwand verbunden sein, dies  immer wieder per Konsole manuell auszuführen. Im nachfolgenden findet sich ein kleines Bashscript welches Zimpl Dateien aus einem Verzeichnis liest, umwandelt und anschließend in Cplex optimiert. Dabei werden die Ergebnisse in ein Logfile geschrieben und der optimale Wert aller Instanzen in einer Datei „result“ gesammelt. Natürlich werden alle anderen Datei im Verzeichnis ignoriert.

#!/bin/bash
# http://www.opensource.org/licenses/bsd-license.php
# M. Schneider, 2009, compserve24.de
 
if [ -n "$1" ]
then
  directory=$1      # If directory name given as a script argument...
else
  directory=$PWD    # Otherwise use current working directory.
fi  
 
for file in $directory *    # Filename globbing.
do
  if [ ${file##*.} == "zpl" ]; then    # only zpl file we need
	  BASENAME=${file##*/}
	  filename=${BASENAME%.*}     #  Strip ".zpl" suffix off filename
	  zimpl $file
	  echo -e "set logfile $filename.log \nread $filename.lp \noptimize \ndisplay solution variables - \nquit" > command
	  cplex < command > "$filename.solve"
	  VALUE=$(cat "$filename.solve" | grep "Integer optimal solution"| cut -c 43- )
	  echo "$filename: $VALUE" >>  result
  else
	echo $file "ignored" #do nothing
  fi
done
 
exit 0
Nach oben scrollen