Merge pull request 'Adicionados flags para truncar saída' (#4) from dnk-general into master
This commit is contained in:
commit
d3871084e6
16
main.cpp
16
main.cpp
@ -15,8 +15,20 @@
|
|||||||
#define TEMP_MIN 0.01
|
#define TEMP_MIN 0.01
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int main()
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
char flags = 0;
|
||||||
|
for(int i = 1; i < argc; i++){
|
||||||
|
if(argv[i][0] == '-'){
|
||||||
|
int j = 1;
|
||||||
|
while(argv[i][j] != '\0'){
|
||||||
|
if(argv[i][j] == 'i') flags |= SIMULATED_ANNEALING_DISABLE_SHOWITRNUM;
|
||||||
|
else if(argv[i][j] == 'c') flags |= SIMULATED_ANNEALING_DISABLE_SHOWCRATES;
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int number_of_items = 0;
|
int number_of_items = 0;
|
||||||
int capacity = 0;
|
int capacity = 0;
|
||||||
std::cin >> number_of_items >> capacity;
|
std::cin >> number_of_items >> capacity;
|
||||||
@ -29,5 +41,5 @@ int main()
|
|||||||
sa::solution act = sa::solution::simulated_annealing(capacity, items,
|
sa::solution act = sa::solution::simulated_annealing(capacity, items,
|
||||||
ALPHA, TEMP, TEMP_MIN);
|
ALPHA, TEMP, TEMP_MIN);
|
||||||
|
|
||||||
act.print_sol();
|
act.print_sol(flags);
|
||||||
}
|
}
|
||||||
|
|||||||
8
run.bat
8
run.bat
@ -1,4 +1,4 @@
|
|||||||
:: Uso: [set EXEC="caminho/do/executavel.exe"] && [set TEST_FOLDER="caminho/dos/casetests"] && run.bat
|
:: Uso: [set EXEC="caminho/do/executavel.exe"] && [set TEST_FOLDER=caminho/dos/casetests] && [set ARGS=ic] && run.bat
|
||||||
@ECHO off
|
@ECHO off
|
||||||
|
|
||||||
if not defined EXEC (
|
if not defined EXEC (
|
||||||
@ -11,5 +11,9 @@ if not defined TEST_FOLDER (
|
|||||||
|
|
||||||
for %%g in (%TEST_FOLDER%/*) do (
|
for %%g in (%TEST_FOLDER%/*) do (
|
||||||
echo Arquivo de teste: %TEST_FOLDER%/%%g
|
echo Arquivo de teste: %TEST_FOLDER%/%%g
|
||||||
%EXEC% < %TEST_FOLDER%/%%g
|
if defined ARGS (
|
||||||
|
%EXEC% -%ARGS% < %TEST_FOLDER%/%%g
|
||||||
|
) else (
|
||||||
|
%EXEC% < %TEST_FOLDER%/%%g
|
||||||
|
)
|
||||||
)
|
)
|
||||||
40
sa.hpp
40
sa.hpp
@ -1,5 +1,7 @@
|
|||||||
#ifndef SIMULATED_ANNEALING_HEADER_12647_H
|
#ifndef SIMULATED_ANNEALING_HEADER_12647_H
|
||||||
#define SIMULATED_ANNEALING_HEADER_12647_H
|
#define SIMULATED_ANNEALING_HEADER_12647_H
|
||||||
|
#define SIMULATED_ANNEALING_DISABLE_SHOWCRATES 1
|
||||||
|
#define SIMULATED_ANNEALING_DISABLE_SHOWITRNUM 2
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
@ -105,28 +107,32 @@ class solution {
|
|||||||
std::swap(iteration, other.iteration);
|
std::swap(iteration, other.iteration);
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_sol() const {
|
void print_sol(char flags = 0) const {
|
||||||
std::cout << "Iteração da solução: " << iteration << '\n';
|
if(!(flags & SIMULATED_ANNEALING_DISABLE_SHOWITRNUM)){
|
||||||
std::cout << "Número de iterações calculadas: " << iterations << '\n';
|
std::cout << "Iteração da solução: " << iteration << '\n';
|
||||||
|
std::cout << "Número de iterações calculadas: " << iterations << '\n';
|
||||||
|
}
|
||||||
std::cout << "Número de caixas: " << fitness << '\n';
|
std::cout << "Número de caixas: " << fitness << '\n';
|
||||||
|
|
||||||
int box_now = 1;
|
if(!(flags & SIMULATED_ANNEALING_DISABLE_SHOWCRATES)){
|
||||||
long long now = 0;
|
int box_now = 1;
|
||||||
std::queue<long long> items_stored;
|
long long now = 0;
|
||||||
|
std::queue<long long> items_stored;
|
||||||
|
|
||||||
for (auto i : items) {
|
for (auto i : items) {
|
||||||
if (now + i > capacity) {
|
if (now + i > capacity) {
|
||||||
print_box(box_now, items_stored);
|
print_box(box_now, items_stored);
|
||||||
box_now++;
|
box_now++;
|
||||||
now = i;
|
now = i;
|
||||||
} else {
|
} else {
|
||||||
now += i;
|
now += i;
|
||||||
|
}
|
||||||
|
items_stored.push(i);
|
||||||
}
|
}
|
||||||
items_stored.push(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
print_box(box_now, items_stored);
|
print_box(box_now, items_stored);
|
||||||
std::cout << '\n';
|
std::cout << '\n';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void setiterations(int itr) {
|
void setiterations(int itr) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user