Optymalizacja Nieliniową metodą GRG niczym w Dodatku Solver do Excel w Javie

0

Cześć,

Mam pewne zadanie optymalizacyjne, którego przykład rozwiązania mam w arkuszu Excel z użyciem dodatku Solver.
2 komórki są zmieniane, podczas gdy inne, które od nich zależą mają nałożone pewne ograniczenia.

Screen :
user image

Potrzebuję by podobne obliczenia wykonywał mój program w Javie.
I może ktoś robił coś podobnego, użył jakiejś biblioteki ?

Myślałem nad Drools, ale one nadają się co najwyżej do zdefiniowania tych ograniczeń, ale nie optymalizacji.

Sprawdzałem też bazujący na Drools OptaPlanner, on by się może nadawał, chociaż nie wiem czy to nie za skomplikowane narzędzie, może jest coś prostszego ?

Próbowałem też użyć Choco-Solver ale nie znalazłem w nim analogicznego przykładu, moje próby napisania czegokolwiek nie wykazały powodzenia.

Z góry dzięki za pomoc.

0

Masz na zrzucie ekranu podpowiedź czego szukać w Google: java grg nonlinear.

1

google: constraint programming solver java
Na pierwszy rzut oka to: http://jacopguide.osolpro.com/guideJaCoP.html się może nadać

0

Metody Kuhna-Tuckera z ograniczeniami nierównościowymi

0
Shalom napisał(a):

google: constraint programming solver java
Na pierwszy rzut oka to: http://jacopguide.osolpro.com/guideJaCoP.html się może nadać

Przyznam, że nawet wydaje się to mieć ręce i nogi i używanie wygląda na dość intuicyjne.
Tylko nie rozumiem jeszcze jak to jest, że biblioteka używa algorytmu DFS, który defacto służy do przeszukiwania grafów do znajdywania minimum funkcji. Możesz polecić jakieś artykuły na ten temat bo nie bardzo mogę znaleźć. Nie wiem np jakie koszty ustawić w konstruktorze Optimize. Trochę nie do końca to rozumiem.

1

Constraint solver to nie jest szukanie minimum funkcji tylko szukanie w przestrzeni rozwiązań ewaluacji zmiennych które spełnia wymagania. Możemy więc wybrać sobie pierwszą zmienną tak żeby było cały czas możliwe do spełnienia, potem drugą, potem..., potem i-tą i nagle okazuje się że kolejnej zmiennej nie sposób juz wybrać bo sie których warunek wysypuje, więc cofamy się do i-1 zmiennej i zmieniamy jej wartość na kolejną i znów idziemy "w dół" próbując nadać wartość kolejnej zmiennej :) Czyli niejako robimy taki niby-DFS.

1

Idealnie byłoby, gdyby udało Ci się sprowadzić problem do programowania liniowego, wtedy bibliotek jest cała masa. Zerknij na OrTools, SCIP, Gurobi, Cplex, na swoich stronach twierdzą, że wspierają też programowanie nieliniowe, więc może się nadadzą.
Ewentualnie weź też dokładnie to, co jest w excelu. To się zwie Microsoft Solver Foundation, niby jest dla dotneta, ale może da się odpowiednio przez JNI użyć w javie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1