Elegir La Caja Optima


Objetivo: 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
Perfil MP  
Objetivo: 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...

Objetivo: 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: 103 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: 103 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: 103 veces

Perfil MP  
Objetivo: 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

Perfil MP  
Objetivo: 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

Objetivo: Re: Elegir La Caja Optima

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.1655s (PHP: 25% SQL: 75%)
Consultas SQL: 32 - Debug off - GZIP Activado