Compare commits

...

5 Commits

Author SHA1 Message Date
1e7ad317b8 Receba Makefile 2024-10-15 23:48:57 -03:00
0a47e5ffcb Update pretty much everything so that it compiles
Also update the script so that it uses the correct executable
2024-10-15 23:19:06 -03:00
5f153a71d3 Create makefile 2024-10-15 22:56:17 -03:00
901e3a00ff Consertei? 2024-10-15 22:54:24 -03:00
87528c097e Comment the code 2024-10-15 20:33:43 -03:00
6 changed files with 67 additions and 4 deletions

1
.gitignore vendored
View File

@ -32,3 +32,4 @@
*.out
*.app
build

62
makefile Normal file
View File

@ -0,0 +1,62 @@
# Flag para alterar o padrão do compilador
standart = -std=c++17
# Flags para otimizar o arquivo executável
optimize_flags = -O3 -pipe -flto
# Flags para ativar todos os avisos do compilador
warnings = -Wall -Wextra -Werror -Wformat=2 -Wno-maybe-uninitialized \
-Wformat-overflow=2 -Wundef -Wconversion -Wwrite-strings
# Flags para depurar o código
sanitize = -fsanitize=address,undefined,pointer-compare,pointer-subtract
debug_flags = -ggdb3 -Og -DDEBUG -Wformat-truncation=2 $(sanitize)
ifeq ($(OS),Windows_NT)
CC := gcc
CXX := g++
else
CC := /usr/bin/gcc
CXX := /usr/bin/g++
endif
builddir := build
ifeq ($(OS),Windows_NT)
objectname = sabp.exe
makebuilddircmd = mkdir $(builddir)
else
objectname = sabp
makebuilddircmd = mkdir -p $(builddir)
endif
objectdir = $(builddir)/$(objectname)
.PHONY: all debug
all:set_flags $(objectdir)
debug:set_debug_flags $(objectdir)
$(objectdir):$(builddir) $(builddir)/random.o $(builddir)/sa.o src/main.cpp
$(CXX) $(CPPFLAGS) $(builddir)/random.o $(builddir)/sa.o src/main.cpp -o $(objectdir)
$(builddir)/random.o:src/random.cpp
$(CXX) $(CPPFLAGS) src/random.cpp -o $(builddir)/random.o -c
$(builddir)/sa.o:src/sa.cpp
$(CXX) $(CPPFLAGS) src/sa.cpp -o $(builddir)/sa.o -c
$(builddir):
$(makebuilddircmd)
set_flags:
$(eval override CPPFLAGS += $(warnings) $(optimize_flags) $(standart))
set_debug_flags:
$(eval override CPPFLAGS += $(warnings) $(sanitize) $(debug_flags))
clean:
ifeq ($(OS),Windows_NT)
RMDIR "$(builddir)" /S /Q
else
rm -rf $(builddir)
endif

View File

@ -3,7 +3,7 @@
setlocal enabledelayedexpansion
if not defined EXEC (
set EXEC="build\main.exe"
set EXEC="build\sabp.exe"
)
if not defined TEST_FOLDER (

2
run.sh
View File

@ -3,7 +3,7 @@
IFS=$'\n'
if [[ -z $EXEC ]]; then
EXEC="build/main.out"
EXEC="build/sabp"
fi
if [[ -z $TEST_FOLDER ]]; then

View File

@ -20,7 +20,7 @@ auto sa::solution::simulated_annealing(int capacity, const std::vector<long long
neighbor.setneighbor();
long long diff = neighbor.fitness - prev.fitness;
if (diff < 0 || rng::random_double<0, 1>() / temp < 0.8) {
if (diff < 0 || rng::random_double<0, 1>() / temp < 0.05) {
swap(prev, neighbor);
}

View File

@ -219,7 +219,7 @@ class solution {
sequence10.reserve(boxes.size());
sequence11.reserve(boxes.size());
for (size_t i = 0; i < choice; i++) {
for (size_t i = 0; i < (size_t)choice; i++) {
if (boxes[choice].swappable10(boxes[i], capacity)) {
sequence10.push_back((int)i);
}