Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void simplex :: resolver (){
- int menores = 2;
- while(menores != 0){
- int entra = 0;
- fracao nula;
- for (size_t i =1; i < n+m; i++){
- if (linhaFO[entra]<nula && linhaFO[i]<nula){
- if (linhaFO[entra] > linhaFO[i]) entra = i;
- }
- else if (linhaFO[entra]>nula && linhaFO[i]<nula){
- entra = i;
- }
- }
- int escolhidos =0;
- int sai =0;
- for (size_t i =0; i<m; i++){
- int escolhido;
- while (escolhidos = 0){
- if (quadro[i][entra] > nula) {
- sai = i;
- escolhidos ++;
- }
- }
- }
- for (size_t i =0; i<m; i++){
- if (quadro [i][entra] >nula){
- //cout << "quadro [i][entra] = " << quadro [i][entra] << endl;
- if (valores[sai]/quadro[sai][entra] > valores[i]/quadro [i][entra]) sai = i;
- //cout << "valores / quadro = " << valores[sai]/quadro[sai][entra] << " e valores[i]/quadro [i][entra] = " << valores[i]/quadro [i][entra] << endl;
- }
- }
- fracao pivot;
- pivot = quadro[sai][entra];
- //cout << " sai = " << sai + 1 << endl;
- //cout << " entra = " << entra + 1 << endl;
- //cout << "o pivot e " << pivot << "!!!!! " << endl;
- VB [sai] = entra + 1;
- for (size_t i =0; i<m; i++){
- //cout << " VB [i] = " << VB[i] << endl;
- }
- Z = Z - ((valores[sai]*linhaFO[entra])/pivot);
- //cout << " Z = " << Z << endl ;
- for (size_t i = 0; i < m+n; i++){
- if (int (i) != entra){
- //cout << "linhaFO [i]" << linhaFO[i] << " - quadro[sai][i] " << quadro[sai][i] << " * linhaFO[entra]" << linhaFO[entra] << " / PIVOT " << pivot<< endl;
- linhaFO[i] = linhaFO [i] - ((quadro[sai][i]*linhaFO[entra])/pivot);
- }
- }
- linhaFO[entra]=nula;
- //cout << "linhaFO[entra]" << linhaFO[entra];
- for (size_t i = 0; i < m+n; i++){
- //cout << "linhaFO[i] = "<< linhaFO[i] << endl ;
- }
- for (size_t i = 0; i < m; i++){
- if (int (i) != sai){
- valores [i] = valores [i] - ((quadro[i][entra]*valores[sai])/pivot);
- //cout << "valores [i] = " << valores[i] << endl;
- }
- }
- for (size_t i = 0; i < m; i++){
- for (size_t j=0; j < n+m; j++){
- if (int(i)!= sai && int(j)!= entra) {
- quadro [i][j] = quadro [i][j] - ((quadro[i][entra]*quadro[sai][j])/pivot);
- }
- }
- }
- for (size_t i = 0; i < m; i++){
- if (int (i) != sai) quadro [i][entra] = nula;
- }
- for (size_t i= 0; i < m+n; i++){
- quadro [sai][i] = quadro[sai][i]/pivot;
- }
- for (size_t i = 0; i < m; i++){
- for (size_t j=0; j < n+m; j++){
- cout << "quadro[" << i+1 << "][" << j+1 << "] = " << quadro[i][j] << endl;
- }
- }
- for (size_t i= 0; i < m+n; i++){
- //cout << "quadro [sai][i]/pivot = " << quadro [sai][i] << endl;
- }
- valores[sai] = valores[sai]/pivot;
- //cout << "valores [sai] = " << valores [sai] << endl;
- //fracao nula;
- menores=0;
- for (size_t i =0; i < n+m; i++){
- if (linhaFO [i] < nula) menores++;
- }
- cout << "menores = " << menores << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement