BashScript: Alle Probleme optimieren

veröffentlicht in Consulting,Software Engineering am 25. Okt. 2009 Tags: , ,

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

Über Markus Schneider

Markus Schneider ist Experte für Shop- und ERP-Systeme. Er betreut mehrere eCommerce Kunden welche Magento oder Oxid eSales einsetzten. Dabei integriert er nicht nur CMS Systeme wie Joomla, TYPO3 oder WordPress in ihren Shop, sondern beschäftigt sich auch mit dem Einsatz von Warenwirtschaft und deren Prozesse, dabei greift er auf gesammelte Erfahrung von unterschiedlichen System von OpenERP, über Sage bis hin zu SAP zurück.