private void btnGenerarBeneficioActionPerformed(java.awt.event.ActionEvent evt) {
//GENERANDO UN VALOR ALEATORIO PARA EL BENEFICIO
//beneficio1:
try{
int num1= (int)spibenef1.getValue();
int num2= (int)spibenef2.getValue();
int num_generado = GenerarNumeros.generarNumeroAleatorio(num1,num2);
txtbeneficiogenerado1.setText(num_generado+"");
}catch (Exception e){
JOptionPane.showMessageDialog(this, e.getMessage(),"error", JOptionPane.ERROR_MESSAGE);
}
//beneficio 2:
try{
int num1= (int)spibenef1.getValue();
int num2= (int)spibenef2.getValue();
int num_generado = GenerarNumeros.generarNumeroAleatorio(num1,num2);
txtbeneficiogenerado2.setText(num_generado+"");
}catch (Exception e){
JOptionPane.showMessageDialog(this, e.getMessage(),"error", JOptionPane.ERROR_MESSAGE);
}
//beneficio3:
try{
int num1= (int)spibenef1.getValue();
int num2= (int)spibenef2.getValue();
int num_generado = GenerarNumeros.generarNumeroAleatorio(num1,num2);
txtbeneficiogenerado3.setText(num_generado+"");
}catch (Exception e){
JOptionPane.showMessageDialog(this, e.getMessage(),"error", JOptionPane.ERROR_MESSAGE);
}
//beneficio4:
try{
int num1= (int)spibenef1.getValue();
int num2= (int)spibenef2.getValue();
int num_generado = GenerarNumeros.generarNumeroAleatorio(num1,num2);
txtbeneficiogenerado4.setText(num_generado+"");
}catch (Exception e){
JOptionPane.showMessageDialog(this, e.getMessage(),"error", JOptionPane.ERROR_MESSAGE);
}
}
private void btnGenerarpesoActionPerformed(java.awt.event.ActionEvent evt) {
//GENERANDO NUMEROS ALEATORIOS PARA EL PESO:
//peso1:
try{
int num1= (int)spipeso1.getValue();
int num2= (int)spipeso2.getValue();
int num_generado = GenerarNumeros.generarNumeroAleatorio(num1,num2);
txtpesogenerado01.setText(num_generado+"");
}catch (Exception e){
JOptionPane.showMessageDialog(this, e.getMessage(),"error", JOptionPane.ERROR_MESSAGE);
}
//peso 2:
try{
int num1= (int)spipeso1.getValue();
int num2= (int)spipeso2.getValue();
int num_generado = GenerarNumeros.generarNumeroAleatorio(num1,num2);
txtpesogenerado02.setText(num_generado+"");
}catch (Exception e){
JOptionPane.showMessageDialog(this, e.getMessage(),"error", JOptionPane.ERROR_MESSAGE);
}
//peso3:
try{
int num1= (int)spipeso1.getValue();
int num2= (int)spipeso2.getValue();
int num_generado = GenerarNumeros.generarNumeroAleatorio(num1,num2);
txtpesogenerado03.setText(num_generado+"");
}catch (Exception e){
JOptionPane.showMessageDialog(this, e.getMessage(),"error", JOptionPane.ERROR_MESSAGE);
}
//peso4:
try{
int num1= (int)spipeso1.getValue();
int num2= (int)spipeso2.getValue();
int num_generado = GenerarNumeros.generarNumeroAleatorio(num1,num2);
txtpesogenerado04.setText(num_generado+"");
}catch (Exception e){
JOptionPane.showMessageDialog(this, e.getMessage(),"error", JOptionPane.ERROR_MESSAGE);
}
}
private void txtbeneficiogenerado4jTextField10ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void txtpesogenerado04jTextField8ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void txtpesogenerado01ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void jTextField84jTextField2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void jTextField83jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
// HERE BELOW IS WHERE I HAVE PROBLEMS
private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) {
int p = (int)Integer.parseFloat(txtpesogenerado01.getText());
int q = (int)Integer.parseFloat(txtpesogenerado02.getText());
float solucion[] = new float [p];// tipo unidimensional (vector);
Beneficio objetos[] = new Beneficio[p];
llenar(objetos); // ingresamos los valores
mostrar(objetos); //muestra los elementos ingresados
directa(objetos); // ordena de acuerdo a nuestra funcion seleccion
mostrar(objetos); // muestra los elementos ordenados
objetivo(solucion , objetos); // resuelve el problema
mostrar(solucion,objetos); // muestra la solucion
}
//funcion para llenar los vectores
public static void llenar(Beneficio vector [] ){
for(int i = 0 ; i < vector.length ;i++) {
int p1 = Integer.parseFloat(txtpesogenerado1.getText()+(i+1));
int p2 = Integer.parseFloat(txtpesogenerado2.getText()+(i+1));
int p3 = Integer.parseFloat(txtpesogenerado3.getText()+(i+1));
int p4 = Integer.parseFloat(txtpesogenerado4.getText()+(i+1));
int b1 = Integer.parseFloat(txtbeneficiogenerado1.getText()+(i+1));
int b2= Integer.parseFloat(txtbeneficiogenerado1.getText()+(i+1));
int b3 = Integer.parseFloat(txtbeneficiogenerado1.getText()+(i+1));
int b4 = Integer.parseFloat(txtbeneficiogenerado1.getText()+(i+1));
vector[i]= new Beneficio (b1,b2,b3,b4,p1,p2,p3,p4); // calcula el bxp
} }
//funcion para ordenar segun el beneficio por unidad
public static void directa(Beneficio [] vector )
{
int i,k,j;
double menor;
Beneficio aux = new Beneficio();
aux = vector[0];
for(i=0 ; i<vector.length;i++ )
{
menor=vector[i].getBxp();
k=i;
for(j=i+1 ; j<vector.length;j++ )
{
if(vector[j].getBxp()< menor) // ordena el valor por bxp
{
menor=vector[j].getBxp();
aux= vector[j];
k=j;
}
}
aux= vector[k];
vector[k]=vector[i];
vector[i]=aux;
}
}
public static void mostrar(Beneficio [] aux )
{ String beneficio="beneficio: ",peso = "peso" , valor="valor por unidad: " ;
for(int i=0 ; i<aux.length;i++)
{
beneficio+= aux[i].getBeneficio() + " , ";
peso += aux[i].getPeso() + " , ";
valor += (aux[i].getBeneficio() / aux[i].getPeso()) + " , ";
}
JOptionPane.showMessageDialog(null, peso + "\n" + beneficio + "\n" + valor );
}
public static void mostrar(float aux [] , Beneficio b [])
{ String solucion=" solucion: " ;
float suma = 0;
for(int i=0 ; i<aux.length;i++)
{
solucion += aux[i]+ "-------";
suma+= aux[i]*b[i].getBeneficio();
}
JOptionPane.showMessageDialog(null, solucion + "\n total beneficio: " + suma );
}
//funcion para seleccionar los objetos:
//MAX F.O:
public static void objetivo(float solucion[], Beneficio objetos[]) // envia un vector solucion ()
{
int m = Integer.parseInt(JOptionPane.showInputDialog("ingrese el tamaño de la mochila"));
float pesoactual= 0;
int i = solucion.length-1;// empieza a recorrerlo desde el final por haber ordenado de mayor a menor
while(pesoactual < m || i>= 0)
{
JOptionPane.showMessageDialog(null, " peso actual: "+ pesoactual + " peso objeto " + i + " :" + objetos[i].getPeso() + "\n ");
if( (pesoactual + objetos[i].getPeso()) < m ) //<--- el objeto que se tomará
{
solucion[i]= 1;
pesoactual+= objetos[i].getPeso();
JOptionPane.showMessageDialog(null, " peso actual: "+ pesoactual + " porcentaje tomado del objeto " + i + " :" + solucion[i]*100 + "\n ");
}
else
{
solucion[i]=(m-pesoactual)/objetos[i].getPeso();
pesoactual += ((m-pesoactual)/objetos[i].getPeso())* objetos[i].getPeso();
JOptionPane.showMessageDialog(null, " peso actual: "+ pesoactual + " porcentaje tomado del objeto " + i + " :" + solucion[i]*100 + "\n ");
//fraccionamos_/
}
i--;
}
}
}