Jak dodać nowy problem?

Poniżej przedstawiamy krótki samouczek dla wszystkich, którzy chcą dodać nowy problem do platformy OPTIL.io .

Daj nam znać o Twoim problemie

Wyślij nam e-mail z krótkim opisem problemu, zawierającym:

  • twoją nazwę użytkownika na platformie OPTIL.io ,
  • jedno do trzech zdań opisujących twój problem,
  • liczba instancji testowych, które chcesz opublikować,
  • limity czasowe i pamięciowe, jakie chcesz ustawić dla twoich rozwiązań,
  • wszelkie dodatkowe wymagania, na przykład dostępność bibliotek innych firm lub określonych języków programowania.

Zwykle można publikować jakiegokolwiek problem optymalizacyjny. Jednak możemy pomóc ci ulepszyć jego definicje, aby lepiej współgrała z platformą OPTIL.io .

Po otrzymaniu informacji o Twoim problemie zapewnimy Ci stanowisko autora, dzięki czemu możesz dodać definicję problemu za pomocą interfejsu administracyjnego.

Przygotuj definicje problemu

Opisz problem, który chcesz opublikować. Dla naszych użytkowników jest znacznie łatwiej, jeśli wszystkie problemy są opisane w podobny sposób, dlatego przygotowaliśmy szablon opisu problemu. Użyj tego szablonu! W szablonie możesz użyć formatu Markdown, aby zastosować formatowanie i LaTeX do formatowania formuł matematycznych. Jeśli jesteś nowicjuszem w Markdown, masz dobry tuturial . Dla każdego problemu powinieneś zdefiniować jego standardową nazwę oraz krótką, skróconą nazwę składającą się z kilku wielkich liter i cyfr. Skrócona nazwa jest używana w niektórych widokach, które nie pozwalają na wyświetlanie dłuższych nazw.

Wraz z opisem problemu można podać kod HTML przedstawiający autorów problemu i ich powiązania(?). Powiąznia zostaną przedstawione w opisie problemu w podpowiedzi widocznej po wskazaniu nazwisk autorów. Użyj następującego formatu, aby podać nazwiska autorów:

Szymon Wasik<sup>1,2</sup>, Maciej Antczak<sup>1</sup>

and the following for affiliations:

<sup>1</sup>Institute of Computing Science, Poznan University of Technology<br/><sup>2</sup>Institute of Bioorganic Chemistry, Polish Academy of Sciences

Jeśli chcesz dodać kilka zdjęć do opisu problemu, musisz najpierw je załadować. Z menu autorskiego wybierz Zdjęcia i prześlij pliki. Po przesłaniu zdjęć panel Obrazy przedstawia ścieżkę, która powinna być używana jako ścieżka do obrazu w opisie problemu.

Define submit interval (waiting period)

Dla każdego problemu można określić czas, który użytkownik musi odczekać, przed przesłaniem dwóch kolejnych rozwiązań problemu. Ustawienie takiego odstępu czasu jest dobrym pomysłem na problemy, które mają wiele instancji testowych z długimi limitami czasowymi. Możesz zdefiniować go w minutach , używając odpowiedniego pola w formularzu edycji. Jeśli nie chcesz ustawiać tego odstępu, pozostaw pole puste.

Przygotuj instancje testowe

Przygotuj instancje testowe opisujące przypadki testowe, które zostaną rozwiązane przez algorytmy optymalizacyjne użytkowników. Dla każdego problemu zalecamy przygotowanie 30 do 50 instancji, które powinny spełniać następujące warunki:p>

  1. Każda instancja powinna być zapisana w jednym, osobnym pliku.
  2. Instancje powinny być przedstawione w prostym formacie tekstowym, aby ułatwić ich używanie i analizowanie. Nie zalecamy używania formatu XML. Spójrz na kilka problemów opublikowanych w OPTIL.io , aby zobaczyć kilka przykładów.
  3. Dla każdego przypadku należy zdefiniować limit czasowy jego rozwiązania. Zalecamy limity od 10 do 600 sekund, jednak możliwe są również dłuższe limity. Po przekroczeniu limitu czasu rozwiązanie rozwiązujące to wystąpienie zostaje zabite (??) . Powinieneś również zdefiniować krótszy, miękki limit czasu, po którym rozwiązanie otrzyma sygnał SIGTERM systemu Linux. Użytkownicy rozwiązujący problem mogą użyć tego sygnału, aby wiedzieć, że jest to odpowiedni czas, aby zatrzymać obliczenia i zapisać wyniki. W tym celu powinien być krótszy o 3 do 10 sekund od twardego limitu.
  4. Dla każdej instancji należy zdefiniować limit pamięci. Zalecamy limity, które nie przekraczają 2 GB, jednak możliwe są również większe limity.
  5. Dla każdej instancji należy zdefiniować limit wyjściowy. Jest to maksymalna liczba bajtów, którą może przesłać użytkownik. Zwykle powinien być nieco większy niż możliwy rozmiar wyjścia programu. Służy do zabijania niewłaściwych rozwiązań, które wysyłają zbyt wiele danych, na przykład z powodu nieskończonej pętli.

Możesz dodawać instancje i edytować ich parametry za pomocą formularza Edytuj przykłady. Możesz także dodać wiele instancji jednocześnie, używając opcji Dodaj pakiet. Wszystkie wystąpienia powinny być spakowane w jednym archiwum zip. Może to być wygodne, jeśli masz wiele instancji i nie chcesz dodawać ich pojedynczo.

Dla każdego przypadku musisz zdefiniować plik wejściowy i wyjściowy. Plik wejściowy zostanie przekierowany na standardowe wejście rozwiązań użytkownika. Plik wyjściowy będzie dostępny dla programu oceniającego, który oceni rozwiązanie i może przechowywać pewne dodatkowe dane, na przykład optymalne rozwiązania. Jeśli nie potrzebujesz żadnych dodatkowych danych podczas procesu oceny, możesz dodać pusty plik wyjściowy.

Widoczność instancji

Istnieją dwa typy instancji, które można dodać - prywatne i publiczne instancje. Domyślnie wszystkie instancje sąpubliczne, i jest to zachowanie zalecane dla większości autorów problemów.

Możesz używać publicznych instancji razem z prywatnymi do organizowania konkursów z pewnymi instancjami ukrytymi przed uczestnikami. Uwaga: nie ma sensu w dodawaniu prywatnych instancji, jeśli nie planujesz zorganizować konkursu. Przepływ takiego konkursu jest następujący:

  1. Dodajesz obie, publiczne i prywatne instancje.
  2. Uczestnicy widzą wyniki tylko publicznych instancji.
  3. Widoczne są wyniki ocenienia dla obu, publicznych i prywatnych instancji. Żeby zobaczyć wyniki prywatnych instancji musisz zalogować się używając konta autora problemu, przejdź do opisu problemu i sprawdź the private standing tab (?).
  4. Po zakończeniu konkursu możesz kliknąć przycisk ujawnienia prywatnych instancji, aby ukryć instancje publiczne i wyświetlić ocenę na podstawie instancji prywatnych .
  5. Po ujawnieniu prywatnych instancji problem będzie oceniany tylko za pomocą instancji prywatnych i nie będzie już można zobaczyć sytuacji stojących w oparciu o instancje publiczne .

Przygotowanie sędziego

Sędzia to program, który ocenia wynik użytkownika i z podwójną precyzją podaje pojedynczą liczbę będącą wartością funkcji celowej. Sędzia powinien być napisany w dowolnym języku kompilacji. Dla wygody dołączamy szablon programu sędziowskiego zaimplementowanego w C ++. Powinieneś skompilować sędziego jako statyczny plik binarny Linuxa i dodać go za pomocą formularza Add judge.

Sędzia zostanie wykonany za pomocą następującego polecenia:

judge instance-input user-output instance-output usertime perftime

Znaczenie argumentów przekazanych sędziemu jest następujące:

  • instance-input - ścieżka do pliku wejściowego, który został dostarczony do przykładowego testu przez autora problemu,
  • user-output - ścieżka do pliku wyjściowego wygenerowanego przez program przesłany przez użytkownika,
  • instance-output - ścieżka do pliku wyjściowego, który został dostarczony do instancji testowej przez autora problemu,
  • usertime - czas pracy w milisekundach użyty przez użytkownika,
  • perftime - liczba wykonanych instrukcji CPU zmierzonych przy użyciu licznika wydajności Linuxa - o wiele bardziej stabilna miara niż czas pracy.

Uwaga - nie sprawdzaj, czy liczba argumentów jest równa 5, ponieważ dodatkowe statystyki mogą zostać dodane w przyszłości.

Zatwierdź problem

Po podaniu wszystkich informacji opisanych powyżej możesz wysłać problem do moderacji. Aby to zrobić, naciśnij przycisk przeglądania na liście problemów. Będziesz mieć możliwość dodania opcjonalnego komentarza opisującego twój problem. Po wysłaniu problemu do moderacji nie będziesz mógł go zmienić. Po moderacji opublikujemy Twój problem i zobaczysz go na liście przesłanych problemów. Nie zezwalamy jednak na modyfikację żadnego publicznie dostępnego problemu. Aby go zmodyfikować, musisz skontaktować się z nami i wyjaśnić, dlaczego chcesz to zmienić. Wtedy damy Ci taką możliwość.

Czy to jest darmowe?

TAK! Publikowanie problemów naOPTIL.io jest darmowe dla nie komercyjnego użytku. Jeśli chcesz go użyć do rozwiązania jakiegoś problemu przemysłowego, sponsorowania konkursu lub użyć go w inny komercyjny sposób, proszę skontaktuj się z nami.