• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Nie potrafię rozszyfrować z kodu programu jak wprowadzać do niego zmienne.

Object Storage Arubacloud
0 głosów
161 wizyt
pytanie zadane 14 kwietnia 2019 w C i C++ przez linq Początkujący (420 p.)

Znalazłem na github program do rozwiązywania problemów programowania liniowego metodą dualnego simplexu. Chcę sprawdzić, czy ten program działa poprawnie, ale nie potrafię rozszyfrować w jaki sposób wprowadzać do niego zmienne krok po kroku aby uzyskać rozwiązanie.

Czy ktoś byłby w stanie rozszyfrować co po kolei mam wprowadzać, aby otrzymać poprawne rozwiązanie?

Oto link do programu: https://github.com/Ayush-iitkgp/Linear-Programming/blob/master/Dual%20Simplex%20Method.cpp

A to zadanie, którę chcę rozwiązać:

2 odpowiedzi

0 głosów
odpowiedź 14 kwietnia 2019 przez Hiskiel Pasjonat (22,830 p.)
Jak uruchomisz program, to Ci poda co masz podać.
komentarz 14 kwietnia 2019 przez mrspock1 Mądrala (6,420 p.)
Czy masz na myśli to, że znasz dobrze algorytm tylko program nie opisuje dokładnie tego jak działa?
0 głosów
odpowiedź 14 kwietnia 2019 przez linq Początkujący (420 p.)

Znam zasadę działania metody dualnego simplexu. Wiem w jaki sposób wyznacza rozwiązanie optymalne. Mój problem tkwi w tym, że podając dane wejściowe, program liczy kompletnie nie tak jak powinien. Przypuszczam, że popełniam błąd przy wprowadzaniu danych. Opiszę jak je wprowadzam:

1. Na początku program daje mi wybór czy liczę minimum czy maximum. Ja chcę policzyć minimum więc wciskam "1" i enter.

2. Program daje mi komendę "Enter no. of variables:". Moje zmienne to x1 oraz x2, a więc jest ich 2. Wciskam "2".

3. Program daje komendę "Enter no. of constraints:".  Mam trzy równania ograniczające, a więc wpisuję "3".

4. Program daje komendę "Enter coefficients of objective function:" Moja funkcja celu (czyli to min x0=1x1+1x2) ma dwa współczynniki, każdy z nich ma wartość 1. Wpisuję więc "1", daję enter. Następnie podaję drugi współczynnik czyli znowu "1" i enter.

5. I w tym punkcie zaczyna się problem. Muszę jakoś wpisać te 3 równania ograniczające. Odpowiada za to z pewnością poniższy kod:

void Tablaeu(double **A,double *Z,int m,int n) {
	cout<<"Enter Constraints: ";
	char sign,g='>';
	for(int i=0;i<m;i++) {
		for(int j=0;j<n;j++) cin>>A[i][j];
		cin>>sign;
		cin>>A[i][n];
		if(sign==g) {
			for(int j=0;j<=n;j++) A[i][j]*=-1;
		}
	}
	for(int i=0;i<n;i++) A[m][i]=-1*Z[i];
	A[m][n]=0;
}

Próbowałem na różne sposoby, ale wystarczy, że wpiszę znak ">=" i już przy wpisywaniu pierwszego ograniczenia program podaje wynik. Jeśli ktoś ma pomysł jak wpisać poprawnie te ograniczenia to będę wdzięczny za podpowiedź. 

Podobne pytania

0 głosów
0 odpowiedzi 207 wizyt
pytanie zadane 9 czerwca 2019 w Matematyka, fizyka, logika przez mrspock1 Mądrala (6,420 p.)
0 głosów
2 odpowiedzi 965 wizyt
pytanie zadane 27 marca 2018 w C i C++ przez janusz1 Początkujący (330 p.)

92,539 zapytań

141,382 odpowiedzi

319,476 komentarzy

61,928 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...