You are on page 1of 24

ESCOLA SUPERIOR NÁUTICA INFANTE D.

HENRIQUE

ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE


DEPARTAMENTO DE ENGENHARIA MARÍTIMA

Curso de Ingeniería
de Máquinas Marítimas

Programación
Trabajo Práctico

Autoría de:

Programación 0
ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE
Nombre: María Aguilar nº 11551

Contenido

Introducción.......................................................................2
Objetivos del trabajo..........................................................3
Presentación de la aplicación.............................................4
Manual del utilizador.......................................................4
Manual del programador.................................................6
Resultados........................................................................10
Mantenimiento de la aplicación.......................................15
Limitaciones de la aplicación...........................................16
Desenvolvimientos futuros...............................................16
Conclusion........................................................................17
Bibliografía.......................................................................17
Anexo...............................................................................18

Programación 1
ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE

Introducción
MATLAB es una herramienta de software matemático que ofrece un entorno de
desarrollo integrado que tiene su propio lenguaje de programación. Es muy usado en
universidades y centros de investigación y desarrollo.
Fue creado por el matemático y programador de computadoras Cleve Moler en 1984.
Las aplicaciones de MATLAB se desarrollan en un lenguaje de programación propio.
Este lenguaje es interpretado, y puede ejecutarse tanto en el entorno interactivo, como a
través de un archivo de script (archivos *.m). Este lenguaje permite operaciones de
vectores y matrices, funciones, cálculo lambda, y programación orientada a objetos.

En este informe están presentados los objetivos del programa creado en Matlab, así
como también el uso de dicho programa. Se presenta un manual del utilizador, donde
están las características necesarias para la utilización de la aplicación. También se
muestra el manual del programador donde están referidas las cuestiones técnicas
necesarias; esto se refiere a como la aplicación debe ser colocada en el computador y
esta funcione sin problemas. En esta sección se incluirán print screen del código, así
como esquemas o fluxograma para una mejor explicación del programa; esta
explicación también incluye una descripción de cada una de las variables usadas.

En una de las secciones del informe se presentarán los resultados obtenidos con la
aplicación y su respectiva explicación.

Se explicará el mantenimiento futuro de dicho programa el cual dependerá de las


necesidades que se darán al pasar del tiempo; de igual forma se presentan la limitación
del programa y sus desenvolvimientos futuros.

Por ultimo esta la conclusión, bibliografía y anexos.

Cada una de las secciones explicada detalladamente para una buena comprensión del
trabajo realizado.

Programación 2
ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE

Objetivos del trabajo


Objetivo general:

 Desarrollar un programa en Matlab que permita la


distribución de contenedores en el navío en función del
peso para que la carga quede uniformemente
distribuida.

Objetivos específicos:

 Dividir de manera correcta la carga en cada una de las posiciones del navío.
 Mantener el equilibrio el navío.

 Escribir un código sencillo y fácil para el utilizador.


 Realizar mejoras al programa.
 Adecuar el programa dependiendo de la carga del navío.
 Innovar de manera positiva el campo marítimo.
 Facilitar el trabajo a la hora de cargar un navío.
 Reducir los tiempos de trabajo.

Programación 3
ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE

Presentación de la aplicación
A continuación, se presentará un manual del utilizador y un manual del programador lo
cual facilitará el uso del programa.
Manual del utilizador

Para la utilización del programa se deben seguir los siguientes pasos:

 Compilar el programa
 Al compilarse saldrán dos opciones se debe escoger si desea los datos
numéricamente o gráficamente.
 Adicional a esto existe una gráfica que al escoger cualquiera de las dos opciones
siempre estará presente (figure 4)

Si la opción escogida es numéricamente el programa se presentará de la siguiente


forma:

Programación 4
ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE

Estas tres imagenes ya mostradas es lo que el utilizador vera si escoge ver los resultados
numericamente. Estos resultados seran explicados en la seccion de resultados.

[(Figure 4) Esta grafica representa la orientación del navío]

Si se escoge ver la información gráficamente se representará de la siguiente manera:

Programación 5
ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE

 En la primera grafica se muestran los contenedores en cada una de las posiciones


del navío.
 En la segunda se muestra la carga en cada posición.

 En la primera están los contenedores por línea.


 En la segunda están lo contenedores por columna.

 En la primera esta la carga por línea.


 En la segunda esta la carga por columna.

Manual del programador

Programación 6
ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE
Al realizar un programa en Matlab es necesario empezar con que es lo que queremos
plasmar en el código y que es lo que queremos que nos dé como resultado y también
buscar la manera más fácil de desglosar el código.

Este es un programa que facilita la manera de como colocar la carga en un navío para
que esta quede uniformemente distribuida.

 El programa empieza con un clc y un clear all los cuales siempre van en el
encabezado de los programas a realizar en Matlab son utilizados para el primero
borra los resultados de la ventana de comando y el segundo produce la
eliminación de las variables definidas en memoria.

 Se inicializan las variables a utilizar ya sean contadores, o para guardar valores.

 Se escoge la variable que utilizaremos para la condición del ciclo en este caso
fue (cargamax<250)

 Se coloca el ciclo que decidimos utilizar en este caso WHILE. La estructura del
bucle while es muy similar a la de C/C++/Java. Su sintaxis es la siguiente:

 WHILE
CONDICON

SENTENCIA

END

Los bucles de while son similares a los del bucle for. Los bucles while continúan hasta
que se satisface algún criterio.

 Dentro de este ciclo while usaremos el RANDPERM para generar números


enteros aleatorios en el intervalo de [1-20]. Nombramos a una variable
cualquiera RANDPERM y escogemos también una posición cualquiera.

 En el ciclo while están incluidas también las condicionales IF / ELSEIF. Que


son condiciones que hacen que el ciclo corra hasta cumplir la condición dada al
principio en este caso el ciclo para cuando la carga sea 250 toneladas ósea
cuando el barco este lleno sale del ciclo.

 Fprintf esta función nos va a permitir escribir por pantalla un resultado que no
sabemos y que desarrollamos a lo largo del programa, aunque también se
pueden escribir cosa que sepamos. El resultado puede ser tanto numérico como
texto.

Se usaron los comandos figure [(1), (2), (3), (4)] para mostrar las gráficas dos, en cada
una de las figuras.

Programación 7
ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE

Se usaron los bar que es utilizado para lo gráficos de barra y también etiquetas como por
ejemplo 
xlabel (‘Etiqueta eje “x”’); ylabel (‘’Etiqueta del eje” y”); title (‘Titulo de la gráfica’);
subplot (m, n, p)  divide la ventana gráfica y asigna la ventana donde se dibujará la
gráfica.
Bar3 es utilizado para la gráfica en 3D.

Se utilizó un input para preguntare al utilizador si deseaba ver los datos graficados o
numéricamente; el input se utiliza para las entradas de valores por teclado y que no
hemos definido al inicio del programa.
Y se utilizó nuevamente los condicionales if/else para la selección del utilizador y por
ultimo un Disp que agradecía al utilizador. Disp. Es para la salida de datos de manera
simple.

Las variables utilizadas y significado se definirán enseguida, sabiendo que cada una de
ellas fue inicializada en 0 porque el barco estaba descargado inicialmente:

a1, a2, a3, a4, a5 Representan cada una de las posiciones de la primera línea del
navío.

b1, b2, b3, b4, b5Representa cada una de las posiciones de la línea central del navío.

c1, c2, c3, c4, c5Representa cada una de las posiciones de la última línea del navío.

ca1, ca2, ca3, ca4, ca5 Representan los contadores cada una de las posiciones de la
primera línea del navío.

cb1, cb2, cb3, cb4, cb5 Representan los contadores cada una de las posiciones de la
línea central del navío.

cc1, cc2, cc3, cc4, cc5 Representan los contadores cada una de las posiciones de la
última línea del navío.

pt= [ ] Representa el peso total, guardando los valores.

cc= [ ]Representa los contadores, se guardan los contadores.

n Representa el número que sale del randperm.

([ca1 ca2 ca3 ca4 ca5; cb1 cb2 cb3 cb4 cb5; cc1 cc2 cc3 cc4 cc5])Representa los
Contenedores en cada posición.

([a1 a2 a3 a4 a5; b1 b2 b3 b4 b5; c1 c2 c3 c4 c5])Representa la carga en cada una de


las posiciones.

([ca1+ca2+ca3+ca4+ca5; cb1+cb2+cb3+cb4+cb5;
cc1+cc2+cc3+cc4+cc5])Representa los contenedores por línea.

([ca1+cb1+cc1; ca2+cb2+cc2; ca3+cb3+cc3; ca4+cb4+cc4;


ca5+cb5+cc5])Representa los contenedores por columna.

Programación 8
ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE

([a1+a2+a3+a4+a5; b1+b2+b3+b4+b5; c1+c2+c3+c4+c5]) Representa la carga del


navío por línea.

([a1+b1+c1; a2+b2+c2; a3+b3+c3; a4+b4+c4; a5+b5+c5]) Representa la carga del


navío por columna.

El peso fue distribuido de la siguiente forma:

A1=17 A2=17 A3=17 A4=17 A5=17


B1=16 B2=16 B3=16 B4=16 B5=16
C1=17 C2=17 C3=17 C4=17 C5=17

Para los if y elseif se usaron condiciones dependiendo del peso de cada posición se
explicarán una de cada línea del barco, ya que la lógica para todas las demás es la
misma:

Para el primer IF (a1<=17-n)


Sabiendo que todas las posiciones están en cero se resuelve la desigualdad a1=0 y luego
n pasa positivo al lado izquierdo y si se cumple que n<=17, donde 17 es el peso máximo
permitido en esa posición; entonces al cumplirse esta condición n se va a sumar hasta
llegar a 17 con la siguiente sentencia(a1=a1+n), y se contaran las veces que esta
condición fue usada por decirlo de esta manera o los contenedores usados para llenar
cada posición por la otra sentencia (ca1=ca1+1).

Para el primer ELSE IF (b1<=17-n)


Sabiendo que todas las posiciones están en cero se resuelve la desigualdad a1=0 y luego
n pasa positivo al lado izquierdo y si se cumple que n<=17, donde 17 es el peso máximo
permitido en esa posición; entonces al cumplirse esta condición n se va a sumar hasta
llegar a 17 con la siguiente sentencia(b1=b1+n), y se contaran las veces que esta
condición fue usada por decirlo de esta manera o los contenedores usados para llenar
cada posición por la otra sentencia (cb1=cb1+1).

Para el segundo ELSE IF (c1<=17-n)


Sabiendo que todas las posiciones están en cero se resuelve la desigualdad a1=0 y luego
n pasa positivo al lado izquierdo y si se cumple que n<=17, donde 17 es el peso máximo
permitido en esa posición; entonces al cumplirse esta condición n se va a sumar hasta
llegar a 17 con la siguiente sentencia(c1=c1+n), y se contaran las veces que esta
condición fue usada por decirlo de esta manera o los contenedores usados para llenar
cada posición por la otra sentencia (cc1=cc1+1).
Y así será el ciclo while hasta que se llene el barco y este termine.
Al final como se explicó al principio del manual están las gráficas que se realizaron con
BAR3, BAR, SUBPLOT. Y está el input que también fue explicado
Se usaron %d que representa un resultado numérico de valor entero; también \n que
representa el salto de línea.

Programación 9
ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE

Fluxograma

Resultados
Los resultados del programa se darán dependiendo la elección del utilizador.
Si el utilizador escoge la opción de ver los resultados numéricamente aparecerá lo
siguiente

Esta lista repressenta como dice su titulo los numeros de contenedores en cada una de
las posiciones en el navio esto quiere decir o significa con cuantos contenedores o

Programación 10
ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE

cuantoss contenedores fueron necesario para porder llenar una de la posiciones del
navio y todo dependera del numero que salga del randperm.

En esta se presenta el peso maximo en cada una de las posiciones del navio.

En la primera lista esta la sumatoria de todos los contenedores en cada una de las
lineas del navio.
En la segunda lista esta la sumatoria de todos los contenedores en cada una de las
columnas del navio.

Programación 11
ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE

En la dos listas las sumatorias de los contenedores se hacen con referencia a cada
posicion dentro del navio. Esta sumatoria en el codigo se hace con lo contadores de cada
una de la posiciones.

En la primera lista esta la sumatoria de toda las cargas por lineas.
En la segunda tambien esta la sumatoria de todas las cargas por columnas.
En los dos casos las sumatorias se realizan con las cargas de cada posicion ya sea por la
lineas o por las columnas.
Los resultado graficos son presentado de la siguiente manera:

Programación 12
ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE

En la grafica se muestra la carga total en cada posicion del navio, con vista de proa y
bombordo; como se ve claramente la linea del centro tiene una carga menor que la linea
superior e inferior.

Programación 13
ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE

En la primera grafica se muestra los contenedores necesarios en cada una de las
posiciones para poder llenarse.
En la segunda se muestra la carga en cada una de la posiciones del navio. En la #1 las
tonelada en cada una de las posiciones es de 17; #2 todas son de 16 toneladas; #3-17
toneladas.

En la primera grafica estan los contenedores por lineas.


En la ssegunda los contenedores por columna.

Programación 14
ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE

En la primera esta la carga por linea y tenemos que en la #1=85tons, #2=80tons,
#3=85tons.
En la segunda esta la carga por columna y tenemos que en la columna#1=50 tons,
columna#2=50 tons, columna#3=50 tons, columna#4=50 tons, columna#5=50 tons y
que al sumar todo nos da un total de 250 tons que es la carga maxima para el navio.

Mantenimiento de la aplicación
Un sistema de software producirá errores que serán detectados, casi con seguridad, por
los usuarios
del sistema y que no se descubrieron durante la fase de prueba. La corrección de estos
errores es parte del mantenimiento del software. Otro aspecto de la fase de
mantenimiento es la mejora del software añadiendo más características o modificando
partes existentes que se adapten mejor a los usuarios. Otras causas que obligarán a
revisar el sistema de software en la etapa de mantenimiento son las siguientes:
1) Cuando un nuevo hardware se introduce, el sistema puede ser modificado para
ejecutarlo en un nuevo entorno.
2) Si cambian las necesidades del usuario, suele ser menos caro y más rápido, modificar
el sistema existente que producir un sistema totalmente nuevo.

Por tal razón el mantenimiento del programa presentado dependerá como ya se dijo
antes más que todo por las necesidades que surjan departe del usuario.

Lo parámetros son:

 Nuevas características del navío.


 Nueva carga máxima.
 Nuevo número de posiciones
 Incremento o decremento del número de pórticos disponibles.

Estos parámetros mencionados obligaran a que se le proporcione mantenimiento al


programa, el tiempo dependerá de cuando esto suceda. Se modificará el código por uno
más fácil y corto utilizando otras funciones o ciclo.

Programación 15
ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE

Limitaciones de la aplicación
En esta sección se apuntarán y explicarán algunas limitaciones de nuestra aplicación:

 La carga máxima soportada por el programa era de 250 toneladas; esto quiere
decir que solo podrá ser usado para este tonelaje, ya que si no se modifica el
programa y solo se cambia el peso el programa no funcionara.

 El randperm solo nos dará numero aleatorios entre el 1-20; lo que significa que
si deseamos números mayores debemos cambiar el randperm.

 Las variables también están declaradas solo para el numero de posiciones del
barco en esta ocasión, si el programa se utilizara para un navío más grande se
deben usar más variables.

 Los contadores también están declarados para la cantidad de posiciones del


navío, y de igual manera deberán agregarse más en caso de usarse en otro navío
de más tamaño.

 Las gráficas son imprimidas dos en cada figura si se desea ver una en cada hoja
se deberán cambiar los subplot (m, n, p) y los comandos figure(x) para separar
cada gráfico y de esta manera apreciarlos como más guste.

En nuestro programa aparecen cada uno de los enunciados pedido en el trabajo.

Desenvolvimientos futuros
Para mejorar nuestro programa y brindar un mejor desenvolvimiento del mismo
podemos recomendar las siguientes mejoras:

 Utilizar funciones y de esta forma reducir el número de variables usadas y hacer


el código más corto.

 Modificar el código y utilizarlo con cargas más grande.

Programación 16
ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE

Conclusion
Como resultado de la aplicación, podemos concluir que, a nuestro parecer, el programa
funciono de manera apropiada y esperada. La distribución de la carga fue ubicada de la
manera adecuada lo cual permitió que el barco este en equilibrio, el cual era uno de los
objetivos del programa. Existieron diferentes tipos de dificultades a la hora de realizar el
programa como, por ejemplo, el código se hizo un poco extenso debido al número de
variables que se utilizaron y las condicionales, o sea los if y elseif. Al imprimir los
resultados el utilizador tendrá dos opciones la cual el escogerá la que más le agrade; en
la opción numérica están definidas claramente el número de contenedores y las cargas
en cada una de las posiciones; también contadores por columna y por línea; y de igual
forma la carga por columna y por línea. Están cuantificadas detalladamente también se
encuentran en forma de gráficas.

Para concluir podemos afirmar que el programa trabaja de manera correcta y eficaz y
que cumple el fin deseado.

Bibliografía
[1] Herrera, F., and Verdegay, J. L., (Eds.), Genetic Algorithms and Soft Computing,
Physica-Verlag, 1996.

[2] https://sites.google.com/site/herramientasbasicasdematlab/8-funciones-logicas-y-
estructuras-de-control/estructuras-de-repeticion-bucles/estructuras-de-repeticion-bucles-
2.

Programación 17
ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE

Anexo
Las imágenes presentadas a continuación es el código elaborado para el programa.

Programación 18
ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE

Programación 19
ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE

Programación 20
ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE

Programación 21
ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE

Programación 22
ESCOLA SUPERIOR NÁUTICA INFANTE D. HENRIQUE

Programación 23

You might also like