Jak w calc można napisać formułę aby otrzymać wynik najbliższy wzorcowi[SOLVED].
Jak w calc można napisać formułę aby otrzymać wynik najbliższy wzorcowi[SOLVED].
Potrzebuje napisać formułę w calc tak aby jak najmniej zmarnować materiału. Przykład - mam listwę 6m i potrzebuje uciąć listwy 994mm, 1194mm, 1394mm,po paru minutach policzyłem, że najmniej zmarnuję jak utnę 1 listwę 994mm, 3 listwy 1194mm i jedna 1394mm co da mi wynik 5970mm. Jak to napisać w arkuszu aby nie tracić cennego czasu np przy remoncie pokoju. Bardzo prosiłbym o przykłady, bo ja próbowałem i nic mi nie wychodziło. Za każdy pomysł dziękuję.
Ostatnio zmieniony sob sie 03, 2024 4:55 pm przez Iro, łącznie zmieniany 1 raz.
Pak. biu. AndrOpen Office 5.4.8, sys. oper. Android 14.
Re: Jak w calc można napisać formułę aby otrzymać wynik najbliższy wzorcowi.
Zagadnienie, jakie chcesz rozwiązać, to problem optymalizacji. Nie da się go zrealizować za pomocą jakichś prostych formuł. Nie oznacza to jednak, że nie można wykorzystać Calca.
Zanim to wyjaśnię, muszę uprzedzić, że opisane rozwiązanie zrealizowałem w Calcu LibreOffice, wersji Windowsowej wydanie 24.2.5. Ty w swojej stopce podajesz wersję AndrOpen Office 5.3.5 dla systemu Android, więc nie wiem, czy moja odpowiedź da się w nim zastosować.
Do rozwiązania twojego zagadnienia można zastosować narzędzie Solver (Narzędzia -> Solver...). Najogólniej mówiąc, narzędzie to pozwala ustalić wartości określonych komórek tak, aby wybrana formuła spełniała nasze oczekiwania.
Należy zatem najpierw zbudować arkusz, który "opisuje" twój problem. Znajdziesz go w załączonym pliku. Poniższa ilustracja go obrazuje. Listwa bazowa, to listwa, z której chcesz wycinać mniejsze odcinki.
Listwy od 1 do 4, to cztery różne wymagane długości oraz liczba wymaganych elementów (na razie po jednym).
Łączna długość listew, to suma iloczynów długości oraz ilości. Resztka zawiera formułę obliczającą pozostałą część listwy bazowej, po odcięciu od niej listw od 1 do 4. I to wynik tej formuły będzie optymalizowany. W tym przypadku chodzi o takie dobranie ilości listew (w komórkach D3:D6), aby wynik tej resztki był najmniejszy.
Teraz można przywołać narzędzie Solver. Komórka docelowa, to ta, której wynik chcemy optymalizować, w tym przypadku jest to C12, czyli resztka.
Optymalizujemy wynik pod kątem Minimum (resztka ma być najmniejsza).
Poprzez zmianę komórki — tu wskazujemy, które komórki mogą być zmieniane w celu uzyskania wyniku.
Warunki ograniczeń. W tym przypadku zaznaczamy, że komórka C12 musi mieć wartość nie mniejszą niż 0.
W tej sekcji można ustalić dodatkowe ograniczenia np., że listwa 2 ma wystąpić dwa razy.
Teraz trzeba jeszcze wybrać samego Solvera i jego parametry. Należy kliknąć przycisk "Opcje...". Wybrałem Solver liniowy LibreOffice, oraz widoczne opcje.
Po zatwierdzeniu OK i powrocie do poprzedniego okna można kliknąć przycisk "Rozwiąż". Narzędzie wyznaczyło ilości listew, przy których minimum wynosi 30. Zwróć uwagę, że są to inne ilości, jakie ty znalazłeś, ale spełniają warunki uzyskania minimalnej resztki.
Ustalenia Solvera są zapamiętane. Można go teraz zamknąć, wpisać jakieś nowe wartości dla listwy bazowej i listew pozostałych, ponownie wywołać solvera i od razu kliknąć "Rozwiąż".
Zanim to wyjaśnię, muszę uprzedzić, że opisane rozwiązanie zrealizowałem w Calcu LibreOffice, wersji Windowsowej wydanie 24.2.5. Ty w swojej stopce podajesz wersję AndrOpen Office 5.3.5 dla systemu Android, więc nie wiem, czy moja odpowiedź da się w nim zastosować.
Do rozwiązania twojego zagadnienia można zastosować narzędzie Solver (Narzędzia -> Solver...). Najogólniej mówiąc, narzędzie to pozwala ustalić wartości określonych komórek tak, aby wybrana formuła spełniała nasze oczekiwania.
Należy zatem najpierw zbudować arkusz, który "opisuje" twój problem. Znajdziesz go w załączonym pliku. Poniższa ilustracja go obrazuje. Listwa bazowa, to listwa, z której chcesz wycinać mniejsze odcinki.
Listwy od 1 do 4, to cztery różne wymagane długości oraz liczba wymaganych elementów (na razie po jednym).
Łączna długość listew, to suma iloczynów długości oraz ilości. Resztka zawiera formułę obliczającą pozostałą część listwy bazowej, po odcięciu od niej listw od 1 do 4. I to wynik tej formuły będzie optymalizowany. W tym przypadku chodzi o takie dobranie ilości listew (w komórkach D3:D6), aby wynik tej resztki był najmniejszy.
Teraz można przywołać narzędzie Solver. Komórka docelowa, to ta, której wynik chcemy optymalizować, w tym przypadku jest to C12, czyli resztka.
Optymalizujemy wynik pod kątem Minimum (resztka ma być najmniejsza).
Poprzez zmianę komórki — tu wskazujemy, które komórki mogą być zmieniane w celu uzyskania wyniku.
Warunki ograniczeń. W tym przypadku zaznaczamy, że komórka C12 musi mieć wartość nie mniejszą niż 0.
W tej sekcji można ustalić dodatkowe ograniczenia np., że listwa 2 ma wystąpić dwa razy.
Teraz trzeba jeszcze wybrać samego Solvera i jego parametry. Należy kliknąć przycisk "Opcje...". Wybrałem Solver liniowy LibreOffice, oraz widoczne opcje.
Po zatwierdzeniu OK i powrocie do poprzedniego okna można kliknąć przycisk "Rozwiąż". Narzędzie wyznaczyło ilości listew, przy których minimum wynosi 30. Zwróć uwagę, że są to inne ilości, jakie ty znalazłeś, ale spełniają warunki uzyskania minimalnej resztki.
Ustalenia Solvera są zapamiętane. Można go teraz zamknąć, wpisać jakieś nowe wartości dla listwy bazowej i listew pozostałych, ponownie wywołać solvera i od razu kliknąć "Rozwiąż".
- Załączniki
-
- Solver.ods
- (12.08 KiB) Pobrany 32 razy
AOO 4.1.15, LO 24.8.2 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Re: Jak w calc można napisać formułę aby otrzymać wynik najbliższy wzorcowi.
Dzięki za w/w przykład, w AndrOpen Office 5.4.4 jest funkcja solver. Jak mogę stworzyć makro do funkcji Solver wywoływanej przyciskiem? Czy trochę mógł byś zmodyfikować twój przykład . Chodzi mi o coś takiego. Mam kupione listwy 60szt po 6000mm i potrzebuje 42 po 1394mm, 42 po 1194mm, 30 po 994mm. Można to jakoś ogarnąć ile potrzebuje przynieść listw z garażu do cięcia i oczywiście jak najmniej mieć odpadu po ucięciu. No i rozbicie jak ciąć.
Pak. biu. AndrOpen Office 5.4.8, sys. oper. Android 14.
Re: Jak w calc można napisać formułę aby otrzymać wynik najbliższy wzorcowi.
Pytanie: po co tworzyć makro i przyciski wywołujący narzędzie Solver? Ono jest dostępne poprzez polecenie "Narzędzia -> Solver...". Jeśli rzeczywiście potrzebne jest baaardzo szybkie jego wywołanie, można sobie utworzyć skrót klawiaturowy (jak to zrobić można przeczytać tutaj viewtopic.php?p=26866#p26866) lub umieścić ikonkę Solvera w wybranym pasku narzędziowym.
Dodanie ikonki.
Na potrzeby tego postu przyjmijmy, że A, to listwa 994 mm, B - 1194 mm i C - 1394 mm
Przedstawiony wynik pierwszej optymalizacji mówi, że z jednej listwy bazowej możemy wyciąć 2 A, 1 B i 2 C.
Potrzebnych jest 30 A, 42 B i 42 C. 30 jest najmniejszą ilością. Aby otrzymać 30 A należy użyć 15 listew bazowych (powstanie przy tym 15 B i 30 C).
Można więc usunąć wymiar A z arkusza i ponownie rozwiązać problem.
Tym razem rozwiązanie poda, że najmniejsza resztka (także 30 mm) powstanie przy rozcięciu listwy bazowej na 5 listew B. Obecnie jest ich 15, więc do 42 brakuje 27 sztuk. To znaczy, że można wykorzystać 5 listew bazowych, wycinając 25 B.
Teraz już nie za bardzo jest co optymalizować. Z jednej listwy bazowej można wyciąć 4 C (resztka będzie wynosiła 424 mm), czyli aby otrzymać brakujące 12 sztuk, należy zużyć 3 listwy bazowe i z ostatniej wyciąć brakujące dwie listwy B.
Dodanie ikonki.
- Wywołać polecenie "Narzędzia -> Dostosuj... -> zakładka Paski narzędzi"
- Po prawej stronie w polu "Cel" wybrać pasek narzędzi.
- Poniżej w obszarze "przypisane polecenia" zaznaczyć to polecenie, po którym chcemy wstawić ikonkę wywołująca Solvera.
- Po lewej stronie wskazać kategorię, która zawiera potrzebne wywołanie. Jeśli kategorii nie znamy, można wybrać "Wszystkie polecenia". Wykaz poleceń jest uporządkowany alfabetycznie. Solver znajduje się w kategorii "Opcje".
- Zaznaczyć Solver, a następnie kliknąć czarną strzałkę skierowaną w prawo.
- Czarne strzałki po prawej stronie, za obszarem przypisanych poleceń, służą do przenoszenia zaznaczonego symbolu w górę lub dół wybranego paska poleceń.
- Usunięcie niepotrzebnego polecenia, to zaznaczenie go w obszarze przypisanych poleceń i kliknięcie strzałki w lewo. Polecenie może także zostać tylko wyłączone z pokazywania na pasku. Służy do tego małe pole wyboru znajdujące się przed nazwą polecenia.
Na potrzeby tego postu przyjmijmy, że A, to listwa 994 mm, B - 1194 mm i C - 1394 mm
Przedstawiony wynik pierwszej optymalizacji mówi, że z jednej listwy bazowej możemy wyciąć 2 A, 1 B i 2 C.
Potrzebnych jest 30 A, 42 B i 42 C. 30 jest najmniejszą ilością. Aby otrzymać 30 A należy użyć 15 listew bazowych (powstanie przy tym 15 B i 30 C).
Można więc usunąć wymiar A z arkusza i ponownie rozwiązać problem.
Tym razem rozwiązanie poda, że najmniejsza resztka (także 30 mm) powstanie przy rozcięciu listwy bazowej na 5 listew B. Obecnie jest ich 15, więc do 42 brakuje 27 sztuk. To znaczy, że można wykorzystać 5 listew bazowych, wycinając 25 B.
Teraz już nie za bardzo jest co optymalizować. Z jednej listwy bazowej można wyciąć 4 C (resztka będzie wynosiła 424 mm), czyli aby otrzymać brakujące 12 sztuk, należy zużyć 3 listwy bazowe i z ostatniej wyciąć brakujące dwie listwy B.
AOO 4.1.15, LO 24.8.2 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Re: Jak w calc można napisać formułę aby otrzymać wynik najbliższy wzorcowi.
Makro chciałem z tego powodu że używam częściej telefonu niż komputera. A telefon ma drobne literki więc jest trochę trudno odszukać tą funkcje w menu szybciej i sprawniej było by mi wywołać solver przez macro.
Pak. biu. AndrOpen Office 5.4.8, sys. oper. Android 14.
Re: Jak w calc można napisać formułę aby otrzymać wynik najbliższy wzorcowi.
OK. Nie musisz mieć makra. Możesz dodać ikonkę solvera do ikon na dolnej krawędzi aplikacji. Opis powyżej jest przydatny.
- W oknie "Paski narzędzi" wybierasz pasek narzędzi, "Standardowy", to dobry wybór, bo zawsze jest widoczny. Wybierasz "Dodaj".
- Otworzy się nowe okienko zawierające dwie części. Po lewej"Kategorie", po prawej "Polecenia". Jak napisałem, Solver jest w kategorii "Opcje". Zaznaczasz to polecenie i wybierasz "Dodaj" a następnie "Zamknij".
- Polecenie "Solver" zostanie dodane do paska zadań. Ono w tej aplikacji nie ma swojej ikonki, więc pojawi się jako tekst "Solver".
- Można je zaznaczyć i nacisnąć "Zmień", a w następnym menu "Zmień ikonę" i wybrać jakąś. Jednak dodane ikonki mają mały wymiar i nie zastępują opisu, ale pozycja jest widoczna.
- Załączniki
-
- Andr1.jpg (78.78 KiB) Przejrzano 696 razy
AOO 4.1.15, LO 24.8.2 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Re: Jak w calc można napisać formułę aby otrzymać wynik najbliższy wzorcowi.
Dzięki przycisk solvera do paska standardowy dodałem wcześniej. Wiem że wałkuje temat. Ale te paski u mnie na telefonie, jakoś dodają same i efekt jest taki że muszę przywracać je do domyśnych czasem. Dla tego chciałem użyć makra. Kiedyś pracowałem na pakiecie Microsoftu tam nie było takich problemów z nagrywaniem makra jak w pakiecie Openoffice dla tego chciałem poradzić się właśnie kogoś kto u was jest Specjalistą w dziedzinie makr jak to zrobic w przyszłości chciałbym dłużej popracować na tym pakiecie.
Pak. biu. AndrOpen Office 5.4.8, sys. oper. Android 14.
Re: Jak w calc można napisać formułę aby otrzymać wynik najbliższy wzorcowi.
Nie jestem specjalista od makr, ale...
Co do znikających dodanych ikon.
Sprawdź, czy podczas dodawania ikonki do paska masz w polu "Zapisz w" zaznaczone "AndrOpen Office Calc". Jeśli jest tam nazwa pliku, to pasek ten obowiązuje tylko z tym plikiem.
Nagrywanie makr jest analogiczne jak w MS. Wybierasz "Narzędzia -> Makra -> Zarejestruj makro" Wykonujesz czynności, jakie mają być zarejestrowane i kończysz rejestrację.
W następnym kroku musisz nadać swojemu makru nazwę oraz wybrać gdzie ma zostać zapisane. Do wyboru masz własny plik albo kontener "Moje makra". Zapisanie do własnego pliku oznacza, że makro można wywołać tylko z tego pliku. Zapisanie w "Moje makra" oznacza, że makro można wywołać w dowolnym momencie.
Przy nagrywaniu tego konkretnego makra, wywołującego Solvera, ostatnią czynnością, jaką trzeba zarejestrować jest zamknięcie okna dialogowego Solvera, gdyż inaczej nie można zakończyć rejestracji. Należy tak postąpić, bo nagrywanie makr nie rejestruje działań w oknie dialogowym Solvera.
Co do znikających dodanych ikon.
Sprawdź, czy podczas dodawania ikonki do paska masz w polu "Zapisz w" zaznaczone "AndrOpen Office Calc". Jeśli jest tam nazwa pliku, to pasek ten obowiązuje tylko z tym plikiem.
Nagrywanie makr jest analogiczne jak w MS. Wybierasz "Narzędzia -> Makra -> Zarejestruj makro" Wykonujesz czynności, jakie mają być zarejestrowane i kończysz rejestrację.
W następnym kroku musisz nadać swojemu makru nazwę oraz wybrać gdzie ma zostać zapisane. Do wyboru masz własny plik albo kontener "Moje makra". Zapisanie do własnego pliku oznacza, że makro można wywołać tylko z tego pliku. Zapisanie w "Moje makra" oznacza, że makro można wywołać w dowolnym momencie.
Przy nagrywaniu tego konkretnego makra, wywołującego Solvera, ostatnią czynnością, jaką trzeba zarejestrować jest zamknięcie okna dialogowego Solvera, gdyż inaczej nie można zakończyć rejestracji. Należy tak postąpić, bo nagrywanie makr nie rejestruje działań w oknie dialogowym Solvera.
Następnie należy przejść do edytora makr. Ostatnia linia makra, ta wywołująca Solvera jest poprzedzona tekstem Rem, trzeba ten tekst usunąć.Ograniczenia rejestratora makr
Następujące czynności nie są rejestrowane:
Otwieranie okien nie jest rejestrowane
Czynności przeprowadzone w innym oknie niż okno, w którym rejestrator został uruchomiony, nie są rejestrowane.
Przełączanie okien nie jest rejestrowane
Czynności niezwiązane z zawartością dokumentu nie są rejestrowane. Na przykład: zmiany dokonane w oknie dialogowym Opcje, Menedżerze makr, funkcji dostosowania.
Zaznaczenia są rejestrowane, jeśli zostały wykonane przy pomocy klawiatury (przemieszczanie kursora), a nie przy użyciu myszy.
Rejestrator makr działa tylko w programie Calc i Writer.
AOO 4.1.15, LO 24.8.2 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Re: Jak w calc można napisać formułę aby otrzymać wynik najbliższy wzorcowi.
Dzięki o to mi chodziło
Pak. biu. AndrOpen Office 5.4.8, sys. oper. Android 14.