#!/bin/bash

CANDIDATE=$1
INSTANCE_ID=$2
SEED=$3
INSTANCE=$4
RUNTIME_LIMIT=$5

BINSTANCE=$( basename "$INSTANCE" )

# All other parameters 
shift 5 || exit 1
CAND_PARAMS=$*


IFS=" "
i=0
MOD_PARAMS=""

for ELEMENT in $CAND_PARAMS
do
    mod=$(( $i % 2 ))
    if [ "$mod" -eq "0" ]; then
      MOD_PARAMS="${MOD_PARAMS} -${ELEMENT}"
    else      
      MOD_PARAMS="${MOD_PARAMS} '${ELEMENT}'"
    fi
    i=$(( $i + 1))
done

MYDIR=`mktemp -d`

STDOUT="c${CANDIDATE}-${INSTANCE_ID}.stdout"
STDERR="c${CANDIDATE}-${INSTANCE_ID}.stderr"

cd ${MYDIR}

ruby ~/algorithms/cplex/aclib/executable/cplex12.6_wrapper_aclib.rb --memoryLimit 1000 --runsolverLocation ~/algorithms/runsolver/runsolver --allowedMIPgap 0 --objFileLocation none ${INSTANCE} 0 ${RUNTIME_LIMIT} 2147483647 ${SEED} ${MOD_PARAMS} 1> ${STDOUT} 2> ${STDERR}

COST=$(cat ${STDOUT} | grep "Result for" | cut -d ':' -f2 | cut -d ',' -f2)
COST=$(echo $COST)
STATUS=$(cat  $STDOUT | grep "Result for" | cut -d ":" -f2 | cut -d "," -f1)
STATUS="$(echo -e "${STATUS}" | sed -e 's/^[[:space:]]*//')"
LENGTH=$(cat  $STDOUT | grep "Result for" | cut -d ":" -f2 | cut -d "," -f3)
BESTSOL=$(cat  $STDOUT | grep "Result for" | cut -d ":" -f2 | cut -d "," -f4)


if [ "$STATUS" = "CRASHED" ]; then
  COST=${RUNTIME_LIMIT}
fi

if [ -s "${STDERR}" ]; then
  if grep -q "Segmentation fault" "${STDERR}" ; then
    exit 1
  fi
fi

echo "${COST} ${COST}"

# We are done with our duty. Clean files and exit with 0 (no error).
rm -rf "${STDOUT}" "${STDERR}" 
cd ..
rm -rf "${MYDIR}"
exit 0
