Tabu Search
HappyCat
:
Griewank
:
Napisz program, który za pomocą wybranej modyfikacji przeszukiwania lokalnego znajdzie minimum funkcji.
In: Para liczb całkowitych
t
oddzielonych spacją.t
– maksymalna liczba sekund, która może wykonywać się program w tym uruchomieniu, – jeśli parametr ma wartość 0, to powinien minimalizować funkcję , w p.p. funkcję .Out: 5 liczb typu
double
oddzielonych spacją, z czego cztery pierwsze to , natomiast piąta to wartość odpowiedniej funkcji w punkcie .
Napisz program, który dla przedstawionej instancji problemu TSP znajdzie, z wykorzystaniem Tabu Search, cykl o możliwie najmniejszym koszcie, rozpoczynając z pierwszego miasta.
In: Dane wejściowe składać się będą z linii. W pierwszej linii będą umieszczone, oddzielone spacją liczby całkowite
t
i , gdziet
jest limitem czasu, jak w zadaniu 1, natomiast liczbą miast do odwiedzenia. W kolejnych liniach będą znajdowały się odległości pomiędzy miastami oddzielone co najmniej jedną spacją. Uwaga, odległość z miasta i do miasta i zawsze wynosi , natomiast nie należy zakładać, że mamy zadany problem Metric TSP, ani że odległości między wybranymi dwoma miastami są takie same w obu kierunkach. Przykładowe dane wejściowe można znaleźć tu i tutaj.Out: Na standardowym wyjściu znaleźć się powinien jedynie koszt pokonania cyklu. Ostatnią linią na standardowym wyjściu błędów powinien być –elementowy ciąg liczb całkowitych oddzielonych spacjami, oznaczający kolejno odwiedzane miasta, np.
1 5 4 3 2 6 1
.
Napisz program, który będzie symulował poruszanie się agenta po kracie (wycinek ). Celem jest dotarcie agenta do wyznaczonego punktu, przy założeniach, że w każdym kroku może poruszyć się o 1 w lewo, o 1 w prawo, o 1 w górę albo o 1 w dół. Program powinien za pomocą Tabu Search powinien generować kolejne sekwencje kroków, tak by dotarcie do celu zajęło jak najmniej rund. Jeśli agent dotrze do celu przed wykonaniem wszystkich kroków, liczymy liczbę wykonanych kroków, jeśli po wykonaniu całej wygenerowanej sekwencji kroków, agent nie dotarł do celu - kontynuuje z miejsca, w którym wylądował a długość wykonanej sekwencji wlicza się do bieżącego rozwiązania.
In: Dane wejściowe składać się będą z linii. W pierwszej linii będą umieszczone, oddzielone spacją liczby całkowite
t
, i , gdziet
jest limitem czasu, jak w zadaniu 1, natomiast i oznaczają wymiary kraty (odpowiednio liczba wierszy i kolumn w labiryncie, który będzie chciał opuścić agent). W kolejnych liniach będą znajdowały się cyfry tworzące labirynt. Między cyframi nie będzie spacji. Możliwe cyfry:
- 0 – standardowe, puste pole, po którym agent może się poruszać
- 1 – ściana, która nie może zostać pokonana (Uwaga: ściany będą znajdować się jedynie na obrzeżach, nie będzie ścian wewnątrz labiryntu).
- 5 – symbol agenta, oznaczający jego pozycję początkową (Uwaga: nie ma konieczności wizualizacji kolejnych kroków).
- 8 – symbol wyjścia, oznaczający pozycję celu, na który agent powinien dotrzeć (Uwaga: jest dokładnie jeden symbol 8 oraz znajduje się on na obrzeżu).
Uwaga: Agent nie zna swojej pozycji początkowej, ani pozycji celu. Można założyć, że agent potrafi rozpoznać rodzaj pola (cyfrę) swoich czterech sąsiadów oraz, że zna oraz . Przykładowe dane wejściowe można znaleźć tu i tutaj.
Out: Na standardowym wyjściu znaleźć się powinna jedynie łączna liczba kroków k od pozycji startowej do celu, wykonana w wybranym rozwiązaniu. Ostatnią linią na standardowym wyjściu błędów powinien być -elementowy ciąg znaków
U
,D
,R
,L
oznaczający kolejne wybrane kierunki w rozwiązaniu, gdzie litery kodują odpowiednio krok w górę, krok w dół, krok w prawo i krok w lewo.