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 |