BashScript: Alle Probleme optimieren
Wenn man mehrerer Probleminstanzen hat und diese gerne optimieren möchte, dann kann das schon viel Aufwand sein immer wieder per Konsole manuell auszuführen. Im Nachfolgenden findet sich ein kleines Bashscript welches Zimpl Dateien aus ein Verzeichnis liest, umwandelt und anschließend in Cplex optimiert. Dabei werden die Ergebnisse in en 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
0 Kommentare
