Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

Elegir La Caja Optima

Elegir La Caja Optima
Artículo
Responder citando    Descargar mensaje  
Mensaje Elegir La Caja Optima 
 
Hola, hice una función para elegir la caja optima para que me ayude a elegir las cajas que debo comprar para embalar objetos (de los cuales dispongo las dimensiones xyz)
Es bastante mejorable supongo, así que aquí se las dejo para que, si a alguien le interesa, la mejore o la use como esta.
Los problemas con los que me tope son:
> Elegir el menor valor float de una float[], las opciones .max y .min son para orden en la lista y no para su valor. Podria haber ordernado los datos pero como hay cuatro listas que comparten el mismo orden eso no era viable. Lo solucione pero dando un rodeo bastante largo.
> Orientar el objeto o la caja para que sea optimo el acople. no esta implementado en los tres ejes solo en x-y y es rudimentario.

Public Function BoxChooser(floXi As Float, floYi As Float, floZ As Float) As String
  '' Requiere como parametros de entrada las medidas x,y,z en metros [float]
  '' Y devuelve la caja que cuadre con dicha medidas.

  Dim flo3 As Float ' es el volumen de lo que hay que meter dentro de la caja
  Dim floX, floY As Float ' Dimensiones para intercambio x-y si es necesario

  Dim stxBoxes As New String[]
  Dim stxBoxesX As New Float[] ' Dimension en x de la caja en metros
  Dim stxBoxesY As New Float[] ' Dimension en y de la caja en metros
  Dim stxBoxesZ As New Float[] ' Dimension en z de la caja en metros
  Dim stxBoxes3 As New Float[] ' Volumen de la caja en metros cúbicos
  Dim stxBoxesV As New String[] ' Vendedor de la caja
  Dim floBoxX, floBoxY, floBoxZ, floBox3 As Float ' Dimensiones para los calculoas
  Dim strVendor As String
  Dim strModel As String
  Dim strBox As String ' Codigo de la caja
  Dim intR As Integer ' Uso para recursividad de matriz
  Dim stxWinner3 As New Float[] ' Lista de volumenes seleccionados
  Dim stxWinnerV As New String[] ' Lista de caja-vendedor seleccionados
  Dim strWinner As String
  Dim floWinner, floLoser, floRecursive As Float

  'Acomodar el orden de las medidas X-Y
  Select floXi < floYi
    Case True
      floX = floYi
      floY = floXi
    Case Else
      floX = floXi
      floY = floYi
  End Select

  flo3 = floX * floy * floZ ' Volumen input calculado

  stxBoxes.Clear
  stxBoxesX.Clear
  stxBoxesY.Clear
  stxBoxesZ.Clear
  stxBoxes3.Clear
  stxBoxesV.Clear

  'Cargar la lista de cajas disponibles estandard
  stxBoxes = Split(File.Load(User.Home &/ "boxes.txt"), "\n")

  For Each strBox In stxBoxes

    ' Valores directos
    floBoxX = CFloat(Split(strBox, "x")[0]) * 0.01
    floBoxY = CFloat(Split(strBox, "x")[1]) * 0.01
    floBoxZ = CFloat(Split(strBox, "x")[2]) * 0.01
    strVendor = Split(strBox, "x")[3]
    strModel = Split(strBox, "x")[0] & "x" & Split(strBox, "x")[1] & "x" & Split(strBox, "x")[2]
    ' Valores Calculados

    ' Descarte de volumenes menores de cajas que flo3
    floBox3 = floBoxX * floBoxY * floBoxZ

    If floBox3 >= flo3 Then
      stxBoxesX.Add(floBoxX)
      stxBoxesY.Add(floBoxY)
      stxBoxesZ.Add(floBoxZ)
      stxBoxes3.Add(floBox3)
      stxBoxesV.Add(strModel & "," & strVendor)
    Endif
  Next

  '' Hasta aca la parte de carga de los datos, de ahora en adelante viene el analisis
  For intR = 0 To stxBoxesX.Max
    If stxBoxesX[intR] >= floX Then
      If stxBoxesY[intR] >= floY Then
        If stxBoxesZ[intR] >= floZ Then
          stxWinner3.Add(stxBoxes3[intR])
          stxWinnerV.Add(stxBoxesV[intR])
        Endif
      Endif
    Endif
  Next

  'Primero obtengo el valor maximo
  floLoser = 0
  For intR = 0 To stxWinner3.Max
    If stxWinner3[intR] > floLoser Then
      floLoser = stxWinner3[intR]
    Endif
  Next

  floWinner = floLoser
  For intR = 0 To stxWinner3.Max
    If stxWinner3[intR] < floWinner Then
      floWinner = stxWinner3[intR]
      strWinner = stxWinnerV[intR]
    Endif
  Next

  Return strWinner

End

 


pd: El archivo de texto boxews.txt contiene información dimensional de las cajas posibles mas el vendedor:

20x14x10xVendedor-1
20x15x20xVendedor-1
20x20x20xVendedor-1
30x30x30xVendedor-1
35x25x25xVendedor-1
40x35x40xVendedor-1
40x40x40xVendedor-1
45x45x60xVendedor-2
50x30x30xVendedor-1
50x50x50xVendedor-1
60x40x40xVendedor-1
80x60x50xVendedor-1

Saludos.



 
última edición por tincho el Jueves, 02 Junio 2016, 20:39; editado 2 veces 
tincho - Ver perfil del usuario Enviar mensaje privado  
tincho [ Jueves, 02 Junio 2016, 17:11 ]
 


Elegir La Caja Optima
Comentarios
Responder citando    Descargar mensaje  
Mensaje Re: Elegir La Caja Optima 
 
Tincho:

  'Acomodar el orden de las medidas X-Y
  Select floXi <floYi> floLoser Then
      floLoser = stxWinner3[intR]
    Endif
  Next
 


Esta parte del código me da error...



 
jsbsan - Ver perfil del usuario Enviar mensaje privado  
jsbsan [ Jueves, 02 Junio 2016, 19:36 ]
Responder citando    Descargar mensaje  
Mensaje Re: Elegir La Caja Optima 
 
jsbsan escribió:  
Tincho:

  'Acomodar el orden de las medidas X-Y
  Select floXi <floYi> floLoser Then
      floLoser = stxWinner3[intR]
    Endif
  Next
 


Esta parte del código me da error...


ok, si esta mal, pero no se por que en el foro con las etiquetas "code" no queda bien, algo va mal con eso o hay algo que estoy naciendo mal , pero no se que puede ser    (lo edite tres veces), porque en el modificador de code esta gambas.
Bueno de todas maneras subo un txt con el codigo.

Saludos.

boxchooser.txt
Descripción: código de la función que en el editor web del foro no aparece correctamente 
Descargar
Nombre del archivo: boxchooser.txt
Tamaño: 2.99 KB
Descargado: 108 veces
boxchooser.txt
Descripción: código de la función que en el editor web del foro no aparece correctamente 
Descargar
Nombre del archivo: boxchooser.txt
Tamaño: 2.99 KB
Descargado: 108 veces
boxchooser.txt
Descripción: código de la función que en el editor web del foro no aparece correctamente 
Descargar
Nombre del archivo: boxchooser.txt
Tamaño: 2.99 KB
Descargado: 108 veces




 
tincho - Ver perfil del usuario Enviar mensaje privado  
tincho [ Jueves, 02 Junio 2016, 20:47 ]
Responder citando    Descargar mensaje  
Mensaje Re: Elegir La Caja Optima 
 
tincho escribió:  

ok, si esta mal, pero no se por que en el foro con las etiquetas "code" no queda bien, algo va mal con eso o hay algo que estoy haciendo mal , pero no se que puede ser    (lo edite tres veces), porque en el modificador de code esta gambas.
Saludos.


El problema es el símbolo < y > porque se interpreta como una etiqueta html. Hay que desactivar HTML en el mensaje para que salga bien, usando los checkboxes que hay más abajo al crear o editar los mensajes. Ya lo he corregido en el mensaje inicial.

Saludos



 
jguardon - Ver perfil del usuario Enviar mensaje privado  
jguardon [ Jueves, 02 Junio 2016, 23:07 ]
Responder citando    Descargar mensaje  
Mensaje Re: Elegir La Caja Optima 
 
En metros, pues si que son grandes las cajas. ¿ Cómo es que no usaste centímetros ?.
Debe ser para algo grande, a mi me valdría con unas buenas cajas resistentes de 2m por 50 o 60. Por ahora.
Es para un negocio que me voy a proponer, con página web y todo.

 suegras

Saludos



 
Shell - Ver perfil del usuario Enviar mensaje privado  
Shell [ Viernes, 03 Junio 2016, 08:10 ]
Responder citando    Descargar mensaje  
Mensaje Re: Elegir La Caja Optima 
 
    



 
shordi - Ver perfil del usuario Enviar mensaje privado  
shordi [ Viernes, 03 Junio 2016, 08:57 ]
Mostrar mensajes anteriores:    
 
Publicar nuevo tema  Responder al tema  Página 1 de 1
 
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 



 

cron