Method: shipping.designShippingNetwork

প্রদত্ত DesignShippingNetworkRequest থেকে লাইনার শিপিং নেটওয়ার্ক ডিজাইন এবং শিডিউলিং সমস্যা (LSNDSP) সমাধান করে।

LSNDSP একটি জটিল অপ্টিমাইজেশান সমস্যা যা একটি লাইনার শিপিং নেটওয়ার্কের সর্বোত্তম নকশা এবং সময়সূচী খুঁজে পেতে চায়। লক্ষ্য হল নেটওয়ার্ক পরিচালনার মোট খরচ কমিয়ে আনা, যখন পোর্টের মধ্যে যতটা সম্ভব পণ্যসম্ভারের চাহিদা মেটানো।

LSNDSP কে দুটি প্রধান উপসমস্যায় বিভক্ত করা যেতে পারে: নেটওয়ার্ক ডিজাইন এবং সময়সূচী। নেটওয়ার্ক ডিজাইনের উপ-সমস্যা নেটওয়ার্ক দ্বারা পরিবেশন করা পোর্টের সেট, প্রতিটি রুটে মোতায়েন করা জাহাজের সংখ্যা এবং জাহাজগুলি যে রুটগুলি নেবে তা নির্ধারণ করে। শিডিউলিং সাব-সমস্যা জাহাজগুলির জন্য পালতোলা সময়সূচী নির্ধারণ করে, বন্দরগুলির মধ্যে যাত্রা করতে যে সময় লাগে, কার্গো লোড এবং আনলোড করতে যে সময় লাগে এবং বন্দরের মধ্যে কার্গো পরিবহনের চাহিদা বিবেচনা করে।

সহজ কথায়, LSNDSP হল কোন পোর্টে পরিষেবা দিতে হবে, কতগুলি জাহাজ ব্যবহার করতে হবে এবং কীভাবে জাহাজের সময়সূচী নির্ধারণ করতে হবে তা নির্ধারণ করার সমস্যা যাতে কার্গো চাহিদা পূরণের জন্য সর্বাধিক আয়ের সময় নেটওয়ার্ক পরিচালনার খরচ কম হয়। LSNDSP-এর একটি চ্যালেঞ্জিং সাবকম্পোনেন্ট হল কার্গো রাউটিং, যা নির্ধারণ করে কোন চাহিদা পূরণ করতে হবে এবং কোন রুটগুলিকে কার্গোতে বরাদ্দ করতে হবে রাজস্ব সর্বাধিক করার জন্য।

HTTP অনুরোধ

POST https://optimization.googleapis.com/v1/shipping:designShippingNetwork

URL gRPC ট্রান্সকোডিং সিনট্যাক্স ব্যবহার করে।

শরীরের অনুরোধ

অনুরোধের অংশে নিম্নলিখিত কাঠামো সহ ডেটা রয়েছে:

JSON প্রতিনিধিত্ব
{
  "requestId": string,
  "solverParameters": {
    object (SolverParameters)
  },
  "ports": [
    {
      object (Port)
    }
  ],
  "legCandidates": [
    {
      object (LegCandidate)
    }
  ],
  "vesselClasses": [
    {
      object (VesselClass)
    }
  ],
  "commodityDemands": [
    {
      object (CommodityDemand)
    }
  ],
  "vesselServices": [
    {
      object (VesselService)
    }
  ]
}
ক্ষেত্র
requestId

string

সমস্যা বা অনুরোধ আইডি.

solverParameters

object ( SolverParameters )

সমাধানকারীর জন্য পরামিতি।

ports[]

object ( Port )

সম্ভাব্য বন্দরের তালিকা যা জাহাজ পরিষেবাগুলিতে ডাকা হবে। অনুরোধে শুধুমাত্র এই তালিকায় থাকা পোর্ট আইডি থাকতে হবে।

legCandidates[]

object ( LegCandidate )

সম্ভাব্য লেগ প্রার্থীদের তালিকা যা জাহাজ পরিষেবাগুলিতে যোগ করা হবে। অনুরোধে শুধুমাত্র লেগ প্রার্থীর আইডি থাকতে হবে যা এই তালিকায় আছে।

vesselClasses[]

object ( VesselClass )

জাহাজ পরিষেবা সঞ্চালনের জন্য জাহাজ ক্লাসের তালিকা। মনে রাখবেন যে একই শ্রেণীর সমস্ত জাহাজ সম্পূর্ণরূপে বিনিময়যোগ্য। অনুরোধে শুধুমাত্র এই তালিকায় থাকা জাহাজ শ্রেণীর আইডি থাকতে হবে।

commodityDemands[]

object ( CommodityDemand )

সম্ভাব্য পণ্যের তালিকা (অর্থাৎ কন্টেইনার) যা জাহাজ পরিষেবা দ্বারা পূরণ করা হবে।

vesselServices[]

object ( VesselService )

বৈধ জাহাজ পরিষেবাগুলির একটি নেটওয়ার্ক (সাধারণত নেটওয়ার্কের বর্তমান অবস্থা) অপ্টিমাইজেশনের জন্য একটি সূচনা পয়েন্ট হিসাবে ব্যবহার করার জন্য প্রদান করা যেতে পারে।

প্রতিক্রিয়া শরীর

প্রতিক্রিয়াটি অনুরোধে পাস করা LSNDSP উদাহরণের সমাধান ধারণ করে। এটিতে জাহাজ পরিষেবা এবং পণ্য চাহিদা পাথগুলির একটি বৈধ নেটওয়ার্ক রয়েছে৷ প্রতিটি পায়ের মধ্য দিয়ে যাওয়া মোট পণ্যের চাহিদা এই পায়ে পরিবেশনকারী জাহাজ শ্রেণীর ক্ষমতার বেশি হতে পারে না। মনে রাখবেন যে চাহিদা পূরণ না করে কোনো জাহাজ পরিষেবা না থাকা সবসময়ই লাইনার শিপিং নেটওয়ার্ক ডিজাইন এবং সময় নির্ধারণের সমস্যার একটি সম্ভাব্য সমাধান।

সফল হলে, প্রতিক্রিয়া বডিতে নিম্নলিখিত কাঠামোর সাথে ডেটা থাকে:

JSON প্রতিনিধিত্ব
{
  "requestId": string,
  "vesselServices": [
    {
      object (VesselService)
    }
  ],
  "commodityDemandPaths": [
    {
      object (CommodityDemandPath)
    }
  ]
}
ক্ষেত্র
requestId

string

অনুরোধের আইডি যেটির সাথে এই প্রতিক্রিয়া যুক্ত।

vesselServices[]

object ( VesselService )

জাহাজ পরিষেবা নেটওয়ার্ক. প্রতিটি জাহাজের শ্রেণীর জন্য, ব্যবহৃত জাহাজের মোট সংখ্যা এই শ্রেণীর জন্য উপলব্ধ জাহাজের সংখ্যা অতিক্রম করতে পারে না।

commodityDemandPaths[]

object ( CommodityDemandPath )

সমস্ত পণ্য চাহিদা পথের তালিকা যার মাধ্যমে ইতিবাচক পণ্য চাহিদা পাঠানো হয়। নোট করুন যে কিছু পণ্য চাহিদা আইডি অন্তর্ভুক্ত নাও হতে পারে যদি কোনো চাহিদা পাঠানো না হয়। বিকল্পভাবে, একটি পণ্য চাহিদা আংশিকভাবে পূরণ করা যেতে পারে. প্রতিটি পণ্যের চাহিদার জন্য, মোট পরিপূর্ণ পরিমাণ মোট চাহিদার বেশি হতে পারে না। অবশেষে, কমোডিটি ডিমান্ডপাথগুলি ভেসেল সার্ভিসের উপর নির্ভর করে (কমোডিটি ডিমান্ডপাথের সংজ্ঞা দেখুন)।

সলভার প্যারামিটার

প্যারামিটার যা LSNDSP-এর একটি একক সমাধান নিয়ন্ত্রণ করে।

JSON প্রতিনিধিত্ব
{
  "timeLimit": string
}
ক্ষেত্র
timeLimit

string ( Duration format)

সমস্যার সমাধানকারীর সর্বোচ্চ সময় ব্যয় করা উচিত। এই মানটি একটি কঠিন সীমা নয় এবং এটি যোগাযোগের ওভারহেডের জন্য অ্যাকাউন্ট করে না। সমস্যা সমাধানের প্রত্যাশিত বিলম্ব এই মানটিকে সামান্য অতিক্রম করতে পারে।

নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল, ' s ' দিয়ে শেষ হয়৷ উদাহরণ: "3.5s"

বন্দর

পোর্ট, যেমন একটি টার্মিনাল বা পোর্টের সব টার্মিনাল।

JSON প্রতিনিধিত্ব
{
  "id": string,
  "minimumPortStayDuration": {
    object (Duration)
  },
  "minimumTransshipmentDuration": {
    object (Duration)
  },
  "transshipmentCost": number,
  "vesselClassCosts": {
    string: {
      object (VesselCost)
    },
    ...
  }
}
ক্ষেত্র
id

string

এই পোর্টে অনন্য আইডি বরাদ্দ করা হয়েছে।

minimumPortStayDuration

object ( Duration )

একটি পোর্ট কলের জন্য থাকার ন্যূনতম সময়কাল। বেশিরভাগ গবেষণায় ধ্রুবক ধরে নেওয়া হয় কারণ পোর্টগুলি সাধারণত উচ্চ চলাচলের সংখ্যা সহ বড় জাহাজগুলিতে আরও ক্রেন বরাদ্দ করে, কারণ তারা আরও জায়গা নেয়।

minimumTransshipmentDuration

object ( Duration )

একটি প্রদত্ত বন্দরে একটি ট্রান্সশিপমেন্টের ন্যূনতম সময়কাল, একটি কন্টেইনার আনলোড করার সময়কাল সহ এবং এটি অন্য জাহাজে পুনরায় লোড করা।

transshipmentCost

number

একটি ধারক ট্রান্সশিপিং খরচ. এটি সাধারণত লোডিং এবং ডিসচার্জের যোগফলের চেয়ে কম হবে কারণ ট্রান্সশিপিংয়ের জন্য বন্দরে কাস্টমস কাগজপত্রের প্রয়োজন হয় না।

vesselClassCosts

map (key: string, value: object ( VesselCost ))

জাহাজ শ্রেণীর আইডি দ্বারা ম্যাপ করা এই পোর্টে কল করার সময় খরচ হয়। একটি জাহাজের শ্রেণী শুধুমাত্র এই বন্দরটিকে কল করতে পারে যদি এই মানচিত্রে একটি এন্ট্রি থাকে৷

"key": value জোড়া। উদাহরণ: { "name": "wrench", "mass": "1.3kg", "count": "3" }

সময়কাল

একটি সময়কাল (বন্দর থাকার/ট্রান্সশিপমেন্ট, ডিমান্ড ট্রানজিট) একটি ঘন্টার গ্রানুলিটির উপর সংজ্ঞায়িত করা হয়।

JSON প্রতিনিধিত্ব
{
  "hours": string
}
ক্ষেত্র
hours

string ( int64 format)

সময়কাল সংজ্ঞায়িত ঘন্টার সংখ্যা।

ভেসেলকোস্ট

এই বন্দরে কল করার এবং থাকার জন্য জাহাজের খরচকে থাকার সময়কালের একটি রৈখিক ফাংশন হিসাবে সংজ্ঞায়িত করা হয় ( fixedCost + hourlyCost * ঘন্টা)।

JSON প্রতিনিধিত্ব
{
  "fixedCost": number,
  "hourlyCost": number
}
ক্ষেত্র
fixedCost

number

এই পোর্টে কল করার জন্য নির্দিষ্ট খরচ।

hourlyCost

number

এই বন্দরে থাকার জন্য ঘন্টায় খরচ।

লেগ প্রার্থী

ভেসেল সার্ভিস লেগ প্রার্থী। একই দুটি বন্দরের মধ্যে একাধিক লেগ প্রার্থী থাকতে পারে, যেমন বিভিন্ন সমুদ্র পথ এবং/অথবা জাহাজের গতির প্রতিনিধিত্ব করে। যাইহোক, একটি নির্দিষ্ট সময়কালের সাথে দুটি বন্দরের মধ্যে শুধুমাত্র এক পা প্রার্থী হতে পারে।

JSON প্রতিনিধিত্ব
{
  "id": string,
  "departurePortId": string,
  "arrivalPortId": string,
  "duration": {
    object (Duration)
  },
  "vesselClassCosts": {
    string: number,
    ...
  }
}
ক্ষেত্র
id

string

এই লেগ প্রার্থীকে অনন্য আইডি বরাদ্দ করা হয়েছে।

departurePortId

string

প্রস্থান পোর্টের আইডি।

arrivalPortId

string

আগমন পোর্টের আইডি।

duration

object ( Duration )

পায়ের সময়কাল।

vesselClassCosts

map (key: string, value: number)

একটি নির্দিষ্ট জাহাজ ক্লাস এই লেগ প্রার্থী বরাদ্দ করার জন্য খরচ. এর মধ্যে ভেসেল অপারেটিং খরচ, বাঙ্কার খরচ, চার্টার খরচ অন্তর্ভুক্ত থাকতে পারে। একটি জাহাজ ক্লাস শুধুমাত্র এই লেগ প্রার্থী যদিও পালতোলা করতে পারে যদি এই মানচিত্রে একটি এন্ট্রি থাকে।

"key": value জোড়া। উদাহরণ: { "name": "wrench", "mass": "1.3kg", "count": "3" }

ভেসেলক্লাস

ভেসেল ক্লাস, অর্থাত্, একই বৈশিষ্ট্যগুলি ভাগ করে নেওয়া জাহাজের একটি গ্রুপ। একই শ্রেণীর দুটি জাহাজের মধ্যে পার্থক্য করার কোন উপায় নেই।

JSON প্রতিনিধিত্ব
{
  "id": string,
  "containerCapacity": string,
  "vesselCount": string
}
ক্ষেত্র
id

string

এই জাহাজ ক্লাসে অনন্য আইডি বরাদ্দ করা হয়েছে।

containerCapacity

string ( int64 format)

জাহাজ শ্রেণীর ক্ষমতা (পাত্রে)।

vesselCount

string ( int64 format)

এই জাহাজ শ্রেণীর জাহাজের সংখ্যা।

কমোডিটি ডিমান্ড

পণ্যের চাহিদা, অর্থাত্, একজন শিপার দ্বারা পূরণ করা সম্ভাব্য চাহিদা।

JSON প্রতিনিধিত্ব
{
  "id": string,
  "originPortId": string,
  "destinationPortId": string,
  "containerCount": string,
  "freightRate": number,
  "maximumTransitDuration": {
    object (Duration)
  }
}
ক্ষেত্র
id

string

এই পণ্য চাহিদা বরাদ্দ অনন্য আইডি.

originPortId

string

অরিজিন পোর্টের আইডি।

destinationPortId

string

গন্তব্য পোর্টের আইডি।

containerCount

string ( int64 format)

সর্বোচ্চ সংখ্যক কন্টেইনার পূরণ করতে হবে।

freightRate

number

কনটেইনার প্রতি মালবাহী হার (যা অপূর্ণ চাহিদার জন্য জরিমানা অন্তর্ভুক্ত করতে পারে)। এটি উৎপত্তিস্থল এবং গন্তব্যে প্রতি কন্টেইনার লোডিং এবং ডিসচার্জ করার খরচ অপসারণ করা উচিত।

maximumTransitDuration

object ( Duration )

সর্বাধিক ট্রানজিট সময়কাল (যদি সেট করা হয়, কঠোরভাবে ইতিবাচক হওয়া উচিত)। ট্রানজিট সময়টি সেই সময় থেকে সংজ্ঞায়িত করা হয় যখন এই চাহিদা পূরণকারী প্রথম জাহাজটি মূল বন্দর ছেড়ে যায় যখন এই চাহিদা পূরণকারী শেষ জাহাজটি গন্তব্য বন্দরে পৌঁছায়।

ভেসেল সার্ভিস

জাহাজ পরিষেবা যা পণ্য চাহিদা পূরণ করতে ব্যবহার করা যেতে পারে। গুরুত্বপূর্ণ: একটি বর্তমান অনুমান হল পরিষেবাগুলি সাপ্তাহিক ফ্রিকোয়েন্সিতে এবং বন্দরে থাকার সময় এক সপ্তাহের বেশি হতে পারে না৷ ভেসেল সার্ভিস পায়ের নিচের ক্রমটি বিবেচনা করুন: ভেসেল সার্ভিস লেগস { legCandidateId: "0->1" originDepartureTime {} destinationArrivalTime { day: 3 hourOfDay: 12 } } vesselServiceLegs { legCandidate} or:"0->1} পৌঁছানোর সময় { দিন: 7 ঘন্টাদিন: 12 } } এই পা দুটি পোর্টের মধ্য দিয়ে যাওয়া এক সপ্তাহের পরিষেবা লাইনকে সংজ্ঞায়িত করে এবং উভয় পোর্টে থাকার সময় 12 ঘন্টা।

JSON প্রতিনিধিত্ব
{
  "vesselClassId": string,
  "vesselServiceLegs": [
    {
      object (VesselServiceLeg)
    }
  ]
}
ক্ষেত্র
vesselClassId

string

ভেসেল ক্লাস আইডি পরিষেবা সম্পাদন করছে।

vesselServiceLegs[]

object ( VesselServiceLeg )

একটি বৈধ জাহাজ পরিষেবার জন্য, নিম্নলিখিত বৈশিষ্ট্যগুলি ধারণ করে: 1. এটি খালি হতে পারে না৷ 2. পরপর পায়ের গন্তব্য পোর্টআইডি এবং অরিজিনপোর্টআইডি অবশ্যই মিলবে (শেষ এবং প্রথম পায়ের জন্য)।

ভেসেল সার্ভিস লেগ

একটি জাহাজ পরিষেবার একক পা।

JSON প্রতিনিধিত্ব
{
  "legCandidateId": string,
  "originDepartureTime": {
    object (ScheduleTime)
  },
  "destinationArrivalTime": {
    object (ScheduleTime)
  }
}
ক্ষেত্র
legCandidateId

string

নির্ধারিত লেগ প্রার্থী আইডি।

originDepartureTime

object ( ScheduleTime )

সাপ্তাহিক সময়সূচীতে মূল বন্দরে প্রস্থানের সময়।

destinationArrivalTime

object ( ScheduleTime )

সাপ্তাহিক সময়সূচীতে গন্তব্য বন্দরে পৌঁছানোর সময়।

সময়সূচী

একটি সময়সূচী সময় (জাহাজ/চাহিদা প্রস্থান/আগমন) একটি নির্দিষ্ট ঘন্টায় একটি সাপ্তাহিক ফ্রিকোয়েন্সিতে সংজ্ঞায়িত করা হয়।

JSON প্রতিনিধিত্ব
{
  "day": string,
  "hourOfDay": integer
}
ক্ষেত্র
day

string ( int64 format)

সূচি অনুযায়ী দিন। দিন 0 হল প্রথম সম্ভাব্য দিন।

hourOfDay

integer

নির্ধারিত সময়ের দিনের ঘন্টা 0 থেকে 23 এর মধ্যে একটি পূর্ণসংখ্যা হওয়া উচিত।

কমোডিটি ডিমান্ডপথ

একটি প্রদত্ত পণ্য চাহিদা একটি ভগ্নাংশ যে বিভিন্ন সেবা এবং পোর্ট গ্রহণ করা হয়. নীচে ব্যবহৃত সূচকগুলি প্রতিক্রিয়াতে জাহাজ পরিষেবার ক্রম এবং পৃথক জাহাজ পরিষেবাগুলিতে পরিষেবা পায়ের ক্রম অনুসারে।

JSON প্রতিনিধিত্ব
{
  "commodityDemandId": string,
  "containerCount": string,
  "vesselServiceLegIds": [
    {
      object (VesselServiceLegId)
    }
  ]
}
ক্ষেত্র
commodityDemandId

string

পণ্য চাহিদা আইডি পূরণ.

containerCount

string ( int64 format)

এই পথ দিয়ে যাওয়া কন্টেইনার সংখ্যা। প্রতিটি পণ্যের চাহিদার জন্য, মোট পরিপূর্ণ পরিমাণ মোট চাহিদার বেশি হতে পারে না।

vesselServiceLegIds[]

object ( VesselServiceLegId )

এই পথ দিয়ে নেওয়া জাহাজ পরিষেবা লেগ আইডিগুলির তালিকা৷ একটি বৈধ পণ্য চাহিদা পথের জন্য, নিম্নলিখিত বৈশিষ্ট্যগুলি ধারণ করে: 1. প্রথম লেগের প্রস্থান পোর্টআইডি অবশ্যই পণ্যের চাহিদার মূল পোর্টআইডির সাথে মিলবে৷ 2. শেষ পায়ের গন্তব্য পোর্টআইডি অবশ্যই পণ্যের চাহিদার গন্তব্য পোর্টআইডির সাথে মিলবে৷ 3. পরপর পায়ের আগমন পোর্টআইডি এবং প্রস্থান পোর্টআইডি অবশ্যই মিলবে৷ 4. এই পণ্যের চাহিদার জন্য প্রদান করা হলে, সর্বাধিক ট্রানজিট সময় পথের মোট সময়কালের চেয়ে বেশি বা সমান হওয়া উচিত।

ভেসেল সার্ভিস লেগআইডি

একক জাহাজ পরিষেবা লেগ একটি পণ্য চাহিদা পাথ ব্যবহৃত. উদাহরণস্বরূপ, বিবেচনা করুন যে দুটি জাহাজ পরিষেবা রয়েছে৷ প্রথমটি তিনটি পা দিয়ে তৈরি (0, 1 এবং 2 সূচক) এবং দ্বিতীয়টি (0 এবং 1 সূচক)। এ ছাড়া প্রথম সার্ভিসের প্রথম লেগ দ্বিতীয় সার্ভিসের দ্বিতীয় লেগ প্রস্থান বন্দরে আসে। নিম্নোক্ত তিনটি ভেসেল সার্ভিস লেগ আইডি সমন্বিত একটি কমোডিটি পাথ: {vesselServiceIndex: 0, vesselServiceLegIndex: 2} {vesselServiceIndex: 0, vesselServiceLegIndex: 0} {vesselServiceIndex: 1, vesselServiceLegIndex-এর থেকে প্রথমেই ধারণ করা হয়েছে: Index2} জাহাজ পরিষেবা (উল্লেখ্য যে 2 এবং 0 পরপর যেহেতু প্রতিটি পরিষেবা একটি চক্র), তারপর একটি একক পায়ের জন্য জাহাজ পরিষেবা 1 এ স্থানান্তর করা হয়।

JSON প্রতিনিধিত্ব
{
  "vesselServiceIndex": integer,
  "vesselServiceLegIndex": integer
}
ক্ষেত্র
vesselServiceIndex

integer

জাহাজ পরিষেবার সূচক।

vesselServiceLegIndex

integer

জাহাজ পরিষেবা থেকে পায়ের সূচক vesselServiceIndex দ্বারা সূচিত করা হয়।