diff --git a/script/generate_collection.sh b/script/generate_collection.sh old mode 100755 new mode 100644 index 032690d503dcffcb62bc50ead85450ddf0a77176..d5190a2c18c098987857395cc48dcc9553f26847 --- a/script/generate_collection.sh +++ b/script/generate_collection.sh @@ -70,13 +70,14 @@ usage () { # ou de tous les paramètres. dir="collection" -nbjobsmin=10 -nbjobsmax=100 -nbjobsstep=10 -tmin=0.1 -tmax=0.5 -tstep=0.1 -nbinstances=10 +nbjobsmin=30 +nbjobsmax=50 +nbjobsstep=1 +tmin=1 +tmax=5 +tstep=1 +nbinstances=15 +#IMPORTANT: ces nombres ont ete changes car le script ne marche pas avec les float (jsp pk) # GESTION DE PARAMÈTRES DONNÉS PAR L'UTILISATEUR @@ -96,6 +97,42 @@ nbinstances=10 # N'oubliez pas à remettre les # dans les deux lignes ! # A FAIRE +while getopts ":d:j:t:i:h" opt; do + case ${opt} in + d ) + dir=$OPTARG + ;; + j ) + nbjobsmin=$(echo "$OPTARG" | cut -d: -f1) + nbjobsmax=$(echo "$OPTARG" | cut -d: -f2) + nbjobsstep=$(echo "$OPTARG" | cut -d: -f3) + ;; + t ) + tmin=$(echo "$OPTARG" | cut -d: -f1) + tmax=$(echo "$OPTARG" | cut -d: -f2) + tstep=$(echo "$OPTARG" | cut -d: -f3) + ;; + i ) + nbinstances=$OPTARG + ;; + h ) + usage + exit 0 + ;; + \? ) + echo "Option Invalide: $OPTARG" 1>&2 + usage + exit 1 + ;; + : ) + echo "Option Invalide: $OPTARG erreur" 1>&2 + usage + exit 1 + ;; + esac +done + +shift $((OPTIND -1)) # GÉNÉRATION DES INSTANCES ALÉATOIRES @@ -115,4 +152,16 @@ nbinstances=10 mkdir -p $dir -# A FAIRE \ No newline at end of file +for nbjobs in $(seq $nbjobsmin $nbjobsstep $nbjobsmax); do +if [ $nbjobs -gt $nbjobsmax ]; then + break + fi + for t in $(seq $tmin $tstep $tmax); do + for i in $(seq 1 $nbinstances); do + filename="${nbjobs}_${t}_${i}" + filepath="$dir/$filename" + i=1 + bash generate_instance.sh "$filepath" "$nbjobs" "$t" + done + done +done diff --git a/script/generate_instance.sh b/script/generate_instance.sh old mode 100755 new mode 100644 index 2109e71bfc7064e810df1fa48f16a2c8da78573f..b4caa5264cd56e777b5e7d9e1d0b0af6092b7821 --- a/script/generate_instance.sh +++ b/script/generate_instance.sh @@ -53,7 +53,14 @@ getParetoDistributionSample () { # le cas contraire. # Affectez les paramètres aux variables. -# A FAIRE +if [ "$#" -ne 3 ]; then +echo "Usage: $0 <filename> <nbTasks> <liberationParameter>" +exit 1 +fi + +filename="$1" +nb_tasks="$2" +liberation_parameter="$3" # GÉNÉRATION DE DURÉES OPÉRATOIRES ALÉATOIRES @@ -65,6 +72,8 @@ getParetoDistributionSample () { # fonction getParetoDistributionSample. # A FAIRE +proc_times=($(for i in $(seq 1 $nb_tasks); do getParetoDistributionSample; done)) + # GÉNÉRATION DE DATES DE LIBÉRATION ALÉATOIRES @@ -77,11 +86,28 @@ getParetoDistributionSample () { # correspond au troisième paramètre du script. # A FAIRE +# Calcul de la somme des durées opératoires +total_processing_time=$(echo ${proctimes[*]} | tr ' ' '\n' | paste -sd+ | bc) +# Génération des dates de libération de chaque tâche +release_dates=() +for i in $(seq 1 $nb_tasks); do + release_date=$(getNormalDistributionSample 0 $(echo "$total_processing_time * $liberation_parameter" | bc -l)) + release_dates+=($release_date) +done # ÉCRITURE DES DONNÉES GÉNÉRÉES AU FICHIER # # Format du fichier à créer (chaque ligne) : # job_id processing_time release_date -# A FAIRE \ No newline at end of file +# A FAIRE +#les nombres dans printf sont la pour creer des colonnes d une certaine taille +printf "#%-8s %-18s %-13s\n" "job_id" "processing_time" "release_date" > "$filename" + +for i in $(seq 1 $nb_tasks); do + printf "%-8d %-18d %-13d\n" "$i" "${processing_times[$i-1]}" "${release_dates[$i-1]}" >> "$filename" +done + +echo "Instance generee dans $filename" + diff --git a/script/run_experiments.sh b/script/run_experiments.sh old mode 100755 new mode 100644 index 58281d6c90ac98e8cbe18240660d43d18a546abd..369a80267900a20c4b6e7b8aefb263280befc48a --- a/script/run_experiments.sh +++ b/script/run_experiments.sh @@ -25,6 +25,15 @@ LC_NUMERIC=en_US.UTF-8 # Assurez vous que le premier paramètre correspond bien à un répertoire. # A FAIRE +if [ $# -ne 5 ]; then + echo "Usage: $0 directory generated_file_name m_min m_max m_step" + exit 1 +fi + +if [ ! -d "$1" ]; then + echo "Error: $1 is not a valid directory." + exit 1 +fi # Affectation des paramètres aux variables. @@ -48,4 +57,24 @@ m_step=$5 # Colonnes 5-12 : résultats obtenus par l'exécution du programme "./expe" # Les colonnes sont séparées par une espace. -# A FAIRE \ No newline at end of file +# A FAIRE +# en-tete pour la presentation colonnes +echo "Nombre de taches|t|Numero d'instance|Nombre de machines|Temp de traitement moyen|Ecart-type du temps de traitement|Temps de retard moyen|Ecart-type du temps de retard|Nombre moyen de taches en retard|Ecart-type du nombre de taches en retard|Nombre moyen de machines utilises|Ecart-type du nombre de machines utilisees" > $fname + + +for instance in $dir/*; do + + + for m in `seq $m_min $m_step $m_max`; do + + instance_name=`basename $instance` + + nb_jobs=`echo $instance_name | cut -d_ -f1` + t=`echo $instance_name | cut -d_ -f2` + + results=`./expe $instance $m` + echo "$nb_jobs $t ${instance_name%.*} $m $results" >> $fname + + done + +done