Ajuda java simplex

Olá…
preciso fazer um programa em java usando o método simplex, mas não faço a mínima idéia de como
fazer.
Alguém poderia me ajudar???
Por favor!!!

Segue o meu probleminha… :lol:

Resolver z(max)= 5x1 + 2 x2
Restrições: x1 < = 3
x2 < = 4
x1 + 2x2 < = 9 x1 e x2 >=0

 Método Simplex

Passos:

  1. Transformar as inequações em equações, acrescentando as variáveis de folga
    Z - 5x1 - 2x2 = 0
    x1 + x3 = 3
    x2 + x4 = 4
    x1 + 2x2 + x5 = 9

  2. Montar o quadro

Primeira matriz

max z x1 x2 x3 x4 x5 Resultado
z 1 -5 -2 0 0 0 0
x3 0 1 0 1 0 0 3
x4 0 0 1 0 1 0 4
x5 0 1 2 0 0 1 9

    Resposta inicial:  z=0       x1 = 0   x2 = 0         x3  = 3         x4 = 4               x5 = 9        
  1. Na função principal (z) determinar a coluna com o menor valor negativo ( Se não tiver o processo está encerrado.
  2. Guarda a linha que terá o menor valor não negativo, do valor obtido da divisão de todas as linhas (Coluna resultado dividido pelo valor correspondente da linha na coluna determinada pelo passo anterior)
  3. A linha e a coluna escolhida determinará nessa posição o elemento pivô que de verá ficar valendo = a 1 (se precisar, divida a linha toda por um valor correspondente para que isso ocorra)
  4. Os demais elementos da coluna do elemento pivo (de todas as linhas inclusive da função principal, se tornarão iguais a zero) isto deverá ser feito através de combinação linear entre as linhas.
  5. Fazer trocas de variáveis soluções na primeira coluna
  6. Voltar ao passo 1

Exemplo de uma combinação linear:
Multiplicar a lina 3 da primeira matriz por (-1) e somar o resultado do produto com a linha 2 da mesma matriz.

2ª. matriz

max z x1 x2 x3 x4 x5 Resultado
z 1 0 -2 0 0 0 15
x1 0 1 0 1 0 0 3
x4 0 0 1 0 1 0 4
x5 0 0 2 -1 0 1 6

Resposta neste quadro: z=15 x1 = 3 x2 = 0 x3 = 0 x4 = 4 x5 = 6

matriz final

max z x1 x2 x3 x4 x5 Resultado
z 1 0 0 4 0 1 21
x1 0 1 0 1 0 0 3
x4 0 0 0 0.5 1 -0.5 1
x2 0 0 1 -0.5 0 0.5 3

Resposta final: z=21 x1 = 3 x2 = 3 x3 = 0 x4 = 1 x5 = 0

mat comp puc minas?

trabalho de escola???

De uma olhada nestes links.

http://www-b2.is.tokushima-u.ac.jp/%7Eikeda/suuri/simplex/Simplex.shtml

http://www-b2.is.tokushima-u.ac.jp/~ikeda/suuri/simplex/Simplex.java

http://www-fp.mcs.anl.gov/otc/Guide/CaseStudies/simplex/applet/source.html

http://www-fp.mcs.anl.gov/otc/Guide/CaseStudies/simplex/applet/SimplexTool.html

http://forum.imasters.uol.com.br/lofiversion/index.php/t188917.html

http://forum.imasters.uol.com.br/index.php?showtopic=188917&mode=linearplus

http://www.scribd.com/doc/2230067/Metodo-Simplex

http://www.forumweb.com.br/foruns/index.php?showtopic=21589&mode=linearplus

http://www.freecode.com.br/forum/lofiversion/index.php/t5858.html

Olá, eu consegui fazer(embora nao tenha certeza se está correto) a classe entrada e saida, agora to tendo muita dificuldade em fazer a classe consolidado que pelo que sei ela tem que chamar os métodos da saida e da entrada…após td isso tem que finalizar com a classe fluxo de caixa que contém o método main aonde acontece tudo ok! "O sistema deverá oferecer:
a) Consultas de lançamentos específicos (por tipo de conta ou data, com somatória
dos lançamentos selecionados);
b) Grupos de lançamentos por data e por tipo de conta;
c) Controles de totalização;
d) Gasto médio;
e) Acompanhamento de saldo (cálculo automático de saldo da conta diário, semanal
e mensal);
f) Resultado por período;
g) O cadastramento de saldo inicial (em reais) numa dada data inicial.
h) O cadastramento de lançamentos de movimentação financeira, compostos por
data, tipo de conta e valor.
i) Consulta do fluxo de lançamentos entre datas.
j) Consulta de resultados parciais (receitas ? despesas) entre datas. "

POr favor, me ajudem, hehehe…tenho que entregar esse projeto na quarta-feira(05/11)…vou postar o codigo que eu fiz…hun se quiser responder no meu e-mail: ferrer_mel@hotmail.com

import javax.swing.JOptionPane;

public class Entrada
{
private double previsto[][];
private double realizado[][];

public Entrada()
{
	previsto = new double[7][20];
	realizado = new double[7][20];
}


public void inserirValoresPrevisto()
{
	for(int linha=0; linha<previsto.length; linha++)
	{
		for(int coluna=0; coluna<previsto[0].length; coluna++)
		{
			previsto[linha][coluna] = digitarValor();
		}
	}	
}


public void inserirValoresRealizado()
{
	for(int linha=0; linha<realizado.length; linha++)
	{
		for(int coluna=0; coluna<realizado[0].length; coluna++)
		{
			realizado[linha][coluna] = digitarValor();
		}
	}	
}


public double digitarValor()
{
	double v = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor previsto a ser armazenado"));
	return v;
}

	
public String totalValores_Previsto()
{
	String saida = "";
	
	for(int linha=0; linha<7; linha++)
	{
		for(int coluna=0;coluna<20;linha++)
		{
			saida+= " previsto["+linha+"]["+coluna+"]="+previsto[linha][coluna]+"\n";
		}
	}
	
	return saida;
}


		
public double totalValores_Realizado()
{
	double total = 0;
	
	for(int linha=0; linha<7; linha++)
	{
		for(int coluna=0;coluna<20;linha++)
		{
			total+= realizado[linha][coluna];
		}
	}
	
	return total; 
 }



public double totalConta_Previsto(int entrada)
{
	double total = 0;
	
	for( int i = 0; i < previsto[0].length; i++ )
	{
		total += previsto[entrada][ i ];
	}
	
	return total;
}

public double totalConta_Realizado(int entrada)
{
	double total = 0;
	
	for( int i = 0; i < realizado[0].length; i++ )
	{
		total += realizado[entrada][ i ];
	}
	
	return total;
}

public double somaPrevisto()
{
	double somaPrevisto = 0;
	
	for(int linha=0; linha<previsto.length; linha++)
	{
		for(int coluna=0; coluna<previsto[0].length; coluna++)
		{
				somaPrevisto+= previsto[linha][coluna];
		}
	}
	return somaPrevisto;
}


public double somaRealizado()
{
	double somaRealizado = 0;
	
	for(int linha=0; linha<realizado.length; linha++)
	{
		for(int coluna=0; coluna<realizado[0].length; coluna++)
		{
				somaRealizado += realizado[linha][coluna];
		}
	}
	return somaRealizado;
}

public double totalPorDiaPrevisto(int dia)
{
	double total = 0;
	
	for( int i = 0; i < previsto.length; i++ )
	{
		total += previsto[i][dia];
	}
	
	return total;
}

public double totalPorDiaRealizado(int dia) 
{
	double total = 0;
	
	for( int i=0; i<realizado.length; i++ )
	{
		total += realizado[ i ][ dia ];
	}
	
	return total;
}


public String gastoMedioPrevisto()
{
	double media,soma = 0;
	String saida = "";
	
	for(int contL = 0; contL<previsto.length; contL++)
	{
		for(int contC = 0; contC<previsto[0].length; contC++)
		{
			soma += previsto[contL][contC];
		}
		media = soma/previsto.length;
		saida = "média: "+media;			
	}
	
	return saida;

}


public String gastoMedioRealizado()
{
	double media,soma = 0;
	String saida = "";
	
	for(int contL = 0; contL<realizado.length; contL++)
	{
		for(int contC = 0; contC<realizado[0].length; contC++)
		{
			soma += realizado[contL][contC];
		}
		media = soma/realizado.length;
		saida = "média: "+media;			
	}	
	
	return saida;
}


public void setPrevisto(int linha,int coluna, double valor)
{
	if(linha<previsto.length && coluna<previsto[0].length && valor>0)
	{
		previsto[linha][coluna] = valor;
	}
	
	else
	{
		JOptionPane.showMessageDialog(null, "Valor Inválido");
	}
}


public void setRealizado(int linha,int coluna, double valor)
{
	if(linha<realizado.length && coluna<realizado[0].length &&valor > 0)
	{
		previsto[linha][coluna] = valor;
	}
	
	else
	{
		JOptionPane.showMessageDialog(null, "Valor Inválido");
	}
}

public double maiorVlr_Previsto()
{
	double maior = previsto[0][0];
	
	for(int iL=1; iL<previsto.length; iL++)
	{
		for(int iC=1; iC<previsto.length; iC++)
		{
			if(maior<previsto[iL][iC])
			{
				maior = previsto[iL][iC];
			}
		}
	}
	return maior;
}

public double menorVlr_Previsto()
{
	double menor = previsto[0][0];
	
	for(int iL=1; iL<previsto.length; iL++)
	{
		for(int iC=1; iC<previsto.length; iC++)
		{
			if(menor>previsto[iL][iC])
			{
				menor = previsto[iL][iC];
			}
		}
	}
	return menor;
}


public double maiorVlr_Realizado()
{
	double maior = realizado[0][0];
	
	for(int iL=1; iL<realizado.length; iL++)
	{
		for(int iC=1; iC<realizado.length; iC++)
		{
			if(maior<realizado[iL][iC])
			{
				maior = realizado[iL][iC];
			}
		}
	}
	return maior;
}

public double menorVlr_Realizado()
{
	double menor = realizado[0][0];
	
	for(int iL=1; iL<realizado.length; iL++)
	{
		for(int iC=1; iC<realizado.length; iC++)
		{
			if(menor>realizado[iL][iC])
			{
				menor = realizado[iL][iC];
			}
		}
	}
	return menor;
}
 
public double getPrevisto(int l, int c)
{
    return previsto[l][c];
}


public double getRealizado(int l, int c)
{
	return realizado[l][c];
}

}

//eu trokei alguns metodos de void para retornar a string, pq se o metodo for void na hora de vc chamar ele, ñ da!!

Utilize a tag CODE