Giter Club home page Giter Club logo

jsten07 / cms_routing Goto Github PK

View Code? Open in Web Editor NEW
12.0 3.0 6.0 20.3 MB

Ship Routing Algorithms for Just-In-Time and Energy Efficient Voyages. By using a genetic algorithm we strive the lowest possible fuel consumption while at the same time keeping the scheduled deadlines. Two different specifications of the algorithm are available, one with a constant engine power, one with an over the route changeable engine power.

Jupyter Notebook 64.47% Python 0.67% HTML 34.86%
optimization genetic-algorithm cmems ship-routing pymoo skimage jupyter-notebook

cms_routing's Introduction

Ship Routing Algorithms for Just-In-Time and Energy Efficient Voyages – Comparing Simple and Advanced Implementations of a Genetic Algorithm

Rising fuel costs, the ever-increasing number of regulations and their tightening demonstrates the need to minimize fuel consumption in container shipping. With the development of an interactive Jupyter notebook, we want to meet this need. The developed script is intended to assist in planning fuel-saving routes and takes into account the engine power of the vessel, the condition of the weather and the sea, and also possible just-in-time deadlines.

For this purpose, the engine power is first modeled in order to be able to make statements about which speed is possible under which weather conditions. By using a genetic algorithm, a multi-objective optimization is then performed, aiming at the lowest possible fuel consumption while at the same time meeting the scheduled deadlines. Thereby the algorithm is tested in two different specifications. One with a constant and over the route not changeable engine power and the other with a changeable engine power. With the first specification, a temporal window can only be considered up to a certain degree due to the constant engine power. The second specification with the variable engine power, however, should allow the calculation of just-in-time routes. In order to be able to make statements about the two specifications, they are compared concerning applicability, constraints and performance.

You can find the both different specifications of the algorithm in the main path of this repository, or also in the Google Colab environment (simple algorithm, advanced algorithm). The two scripts can be run there interactively, or are downloadable as part of the repository to run locally. In addition to these scripts, there are some more files in the repository, which are the basis for the algorithm, and some more notebooks for preparation. The notebooks used to merge the data and create the model are also available as interactive Google Colab (model, mergeData).

This software was developed as part of the study project "Copernicus Marine Services for Energy optimized Cargo Ship routing" in the summerterm 2021 at ifgi at the University of Münster.

cms_routing's People

Contributors

jsten07 avatar njakuschona avatar pondib avatar tnier01 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

cms_routing's Issues

[question]:Parameters doubts

@PondiB @tnier01 @jsten07 @njakuschona

I would like to ask about what was said in this other issue #3 , the reason for these constants in "prediction.py " at advanced_scripts folder( line 188~197)

I would also like to know the reason for the fuelArray constants in "calculate_objectives.py " at advanced_scripts (line 6):

# Array of fuel cost per hour for the different engine powers [0.6, 0.7, 0.8]
fuelArray=[152*33200, 154*33200, 156*33200]

Thank you very much in advance, amazing work!

An error raised in predictNeededTime()

Hi, while testing colab notebook (simpleAlgorithm.ipynb), I am getting ValueError: start points must all be within the costs array. After some extensive debugging, I found out that in _normalize_indices() function indices and shape condition resulted in None returned. Which, subsequently, lead to this error. Could you help what is wrong? Filename - _mcp.pyx

some parameter in prediction.py

Hi, bro, I have some questions about some parameter in "prediction.py " at advanced_scripts folder.
From line 188~197:

timeGridE = SOG_E
constE = 70 / np.power(timeGridE, 3)
timeGridE80 = np.cbrt(80 / constE)
timeGridE60 = np.cbrt(60 / constE)
timeGridE = timeGridE[AOI[2]:AOI[3], AOI[0]:AOI[1]]
timeGridE80 = timeGridE80[AOI[2]:AOI[3], AOI[0]:AOI[1]]
timeGridE60 = timeGridE60[AOI[2]:AOI[3], AOI[0]:AOI[1]]
timeGridE = np.where(timeGridE < 0, 10000, (kmGridEW * 1000) / (timeGridE * 30.87))
timeGridE80 = np.where(timeGridE80 < 0, 10000, (kmGridEW * 1000) / (timeGridE80 * 30.87))
timeGridE60 = np.where(timeGridE60 < 0, 10000, (kmGridEW * 1000) / (timeGridE60 * 30.87))

Q1. What is 70 in "constE = 70 / np.power(timeGridE, 3) ", 80 in "timeGridE80 = np.cbrt(80 / constE)", and 60 in "timeGridE60 = np.cbrt(60 / constE)"?

Q2. What is 30.87 in "timeGridE = np.where(timeGridE < 0, 10000, (kmGridEW * 1000) / (timeGridE * 30.87))"?

Thanks a lot!

Can not download the TEST DATA

UN_CMEMS = input('Please input your CMEMS username: ')
PW_CMEMS = getpass('Please input your CMEMS password: ')
....
(ds_w, ds_p) = get_cmems(startTime, endTime, UN_CMEMS, PW_CMEMS)
....
path_date = date[0:4] + "/" + date[4:6]
url = 'nrt.cmems-du.eu'
path_w = 'Core/GLOBAL_ANALYSIS_FORECAST_WAV_001_027/global-analysis-forecast-wav-001-027/' + path_date
path_p = 'Core/GLOBAL_ANALYSIS_FORECAST_PHY_001_024/global-analysis-forecast-phy-001-024/' + path_date

with ftplib.FTP(url) as ftp:
    try:
...

When we download the data from FTP, it occurred an error !

FTP error: 530 Login incorrect.

So, could you give us your test data by Cloud Dirve ?
In our country, it's so hard to access the test data!

Thank you so much !
Thank you for your project !

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.