Compare commits

..

No commits in common. "64d4d6c71c38d2c541ee0574258427bb6f2cc24b" and "41797a07b8706302e3c3d97acf840d519adc0a1f" have entirely different histories.

5 changed files with 11 additions and 30 deletions

View File

@ -8,10 +8,10 @@
#endif #endif
#ifndef ALPHA #ifndef ALPHA
#define ALPHA 0.9999 #define ALPHA 0.99
#endif #endif
int main() int main(int argc, char *argv[])
{ {
int number_of_items = 0; int number_of_items = 0;
int capacity = 0; int capacity = 0;
@ -23,7 +23,7 @@ int main()
} }
sa::solution act = sa::solution::simulated_annealing(capacity, items, sa::solution act = sa::solution::simulated_annealing(capacity, items,
TEMP, ALPHA); TEMP, ALPHA);
act.print_sol(); act.print_sol();
} }

14
run.bat
View File

@ -1,15 +1,5 @@
:: Uso: [set EXEC="caminho/do/executavel.exe"] && [set TEST_FOLDER="caminho/dos/casetests"] && run.bat
@ECHO off @ECHO off
if not defined EXEC ( for %%g in (test/*) do (
set EXEC="build/solucao.exe" "build/solucao.exe" < test/%%g
)
if not defined TEST_FOLDER (
set TEST_FOLDER=test
)
for %%g in (%TEST_FOLDER%/*) do (
echo Arquivo de teste: %TEST_FOLDER%/%%g
%EXEC% < %TEST_FOLDER%/%%g
) )

13
run.sh
View File

@ -2,15 +2,6 @@
IFS=$'\n' IFS=$'\n'
if [[ -z $EXEC ]]; then for file in $(find test -type f); do
EXEC="build/main.out" build/main.out < $file
fi
if [[ -z $TEST_FOLDER ]]; then
TEST_FOLDER="test"
fi
for file in $(find "$TEST_FOLDER" -type f); do
echo "Arquivo de teste: $file"
"$EXEC" < "$file"
done done

2
sa.cpp
View File

@ -2,7 +2,7 @@
#include <cmath> #include <cmath>
auto sa::solution::simulated_annealing(int capacity, const std::vector<long long> &items, auto sa::solution::simulated_annealing(int capacity, const std::vector<long long> &items,
const double alpha, double temp)->sa::solution const double alpha, double temp)->sa::solution
{ {
sa::solution best(items, capacity); sa::solution best(items, capacity);
best.randomize(); best.randomize();

6
sa.hpp
View File

@ -44,8 +44,8 @@ class solution {
solution() = default; solution() = default;
solution(const std::vector<long long> &items, int capacity): // Gera a solução inicial solution(const std::vector<long long> &items, int capacity): // Gera a solução inicial
items(items), gen(std::random_device()()), capacity(capacity), items(items), gen(std::random_device()()), capacity(capacity),
fitness(calculate_boxes()) {} fitness(calculate_boxes()) {}
void setneighbor() { // Gera um vizinho da solução void setneighbor() { // Gera um vizinho da solução
std::uniform_int_distribution<> dist(0, items.size() - 1); std::uniform_int_distribution<> dist(0, items.size() - 1);
@ -93,7 +93,7 @@ class solution {
} }
static auto simulated_annealing(int capacity, const std::vector<long long> &items, static auto simulated_annealing(int capacity, const std::vector<long long> &items,
double alpha, double temp)->solution; double alpha, double temp)->solution;
}; };
} // namespace sa } // namespace sa