Optymalizacja rozwiązania a. k. a. Projektowanie leków trochę inaczej

Dodaj zakładkę 
Autor: 
Trudność: 
3
Typ rozwiązania: 
Wektor
Dziedzina: 

Lek składa się z 9 składników:

  • Dwóch substancji aktywnych (a1 i a2),
  • Trzech substancji pomocnicznych (p1, p2, p3),
  • Dwóch substancji ułatwiających wchłanianie (w1, w2),
  • Substancji odpowiadającej za smak leku (s),
  • Substancji odpowiadającej za kolor tabletki (k).

Substancje te mają właściwości, które można opisać za pomocą liczb. Dane te można zmierzyć eksperymentalnie i wszystkie razem wpływają na skuteczność leku.
Janek na podstawie wstępnych analiz stworzył model opisujący skuteczność leku w zależności od wybranych substancji:

$ (\frac{a_{1}p_{1} +a_{2}p_{2}}{p_{3}})w_{1}w_{2}+s+k $

Następnie, przetestował wszystkie możliwe substancje, w każdej grupie składników, pod kątem skuteczności i zapisał wyniki (w formie gotowej do podstawienia do powyższego wzoru) w plikach o następującym formacie:

ID_SUBSTANCJI      WYNIK
1                                  0.94112
2                                  0.4521
3                                  0.62236
…                                …

Pozostało mu tylko wybrać optymalną kombinację substancji. Jest ich jednak trochę (565 573 496 278 855 282 348 032) za dużo, aby wszystkie sprawdzić w laboratorium. Janek napisał więc skrypt w Pythonie, który oblicza skuteczność leku na podstawie stworzonego wcześniej modelu. Program daje poprawny wynik dla małych zestawów danych, jednak dla bazy stworzonej przez Janka liczyłby się zdecydowanie za długo (dolne oszacowanie to milion lat). Janek (lek miał służyć także jemu) jest tym faktem załamany, bo nie chce mu się pisać programu od nowa, a pracował nad nim ponad dekadę.

Pobierz skrypt Janka oraz bazę danych skuteczności substancji i postaraj się mu pomóc (zoptymalizować rozwiązanie tak, aby uzyskać wynik w bardziej rozsądnym niż milion lat czasie).

Jako odpowiedź podaj ID_SUBSTANCJI optymalnej substancji dla wszystkich grup składników w poniższej kolejności, oddzielając kolejne wartości spacjami:

[a1, a2, p1, p2, p3, w1, w2, s, k]

ZałącznikWielkość
lek_na_lenia.zip57.58 KB
Nierozwiązane