导航:首页 > 源码编译 > 港口装箱近似算法

港口装箱近似算法

发布时间:2023-03-18 03:19:33

A. C语言 动态规划 完全装箱问题

【问题】 装箱问题
问题描述:装箱问题可简述如下:设有编号为0、1、…、n-1的n种物品,体积分别为v0、v1、…、vn-1。将这n种物品装到容量都为V的若干箱子里。约定这n种物品的体积均不超过V,即对于0≤i<n,有0<vi≤V。不同的装箱方案所需要的箱子数目可能不同。装箱问题要求使装尽这n种物品的箱子数要少。
若考察将n种物品的集合分划成n个或小于n个物品的所有子集,最优解就可以找到。但所有可能划分的总数太大。对适当大的n,找出所有可能的划分要花费的时间是无法承受的。为此,对装箱问题采用非常简单的近似算法,即贪婪法。该算法依次将物品放到它第一个能放进去的箱子中,该算法虽不能保证找到最优解,但还是能找到非常好的解。不失一般性,设n件物品的体积是按从大到小排好序的,即有v0≥v1≥…≥vn-1。如不满足上述要求,只要先对这n件物品按它们的体积从大到小排序,然后按排序结果对物品重新编号即可。装箱算法简单描述册搭如下:
{ 输入箱子的容积;
输入物品种数n;
按体积从大到小顺序,输入各物品的体积;差喊
预置已用箱子链为空;
预置已用箱子计数器box_count为0;
for (i=0;i { 从已用的第一只箱子开始顺序寻找能放入物品i 的箱子j;
if (已用箱子都不能再放物品i)
{ 另用一个箱子,并将物品i放入该箱子;
box_count++;虚姿野
}
else
将物品i放入箱子j;
}
}
上述算法能求出需要的箱子数box_count,并能求出各箱子所装物品。下面的例子说明该算法不一定能找到最优解,设有6种物品,它们的体积分别为:60、45、35、20、20和20单位体积,箱子的容积为100个单位体积。按上述算法计算,需三只箱子,各箱子所装物品分别为:第一只箱子装物品1、3;第二只箱子装物品2、4、5;第三只箱子装物品6。而最优解为两只箱子,分别装物品1、4、5和2、3、6。

若每只箱子所装物品用链表来表示,链表首结点指针存于一个结构中,结构记录尚剩余的空间量和该箱子所装物品链表的首指针。另将全部箱子的信息也构成链表。以下是按以上算法编写的程序。
【程序】
# include
# include
typedef struct ele
{ int vno;
struct ele *link;
} ELE;
typedef struct hnode
{ int remainder;
ELE *head;
Struct hnode *next;
} HNODE;

void main()
{ int n, i, box_count, box_volume, *a;
HNODE *box_h, *box_t, *j;
ELE *p, *q;
Printf(“输入箱子容积\n”);
Scanf(“%d”,&box_volume);
Printf(“输入物品种数\n”);
Scanf(“%d”,&n);
A=(int *)malloc(sizeof(int)*n);
Printf(“请按体积从大到小顺序输入各物品的体积:”);
For (i=0;i Box_h=box_t=NULL;
Box_count=0;
For (i=0;i { p=(ELE *)malloc(sizeof(ELE));
p->vno=i;
for (j=box_h;j!=NULL;j=j->next)
if (j->remainder>=a[i]) break;
if (j==NULL)
{ j=(HNODE *)malloc(sizeof(HNODE));
j->remainder=box_volume-a[i];
j->head=NULL;
if (box_h==NULL) box_h=box_t=j;
else box_t=boix_t->next=j;
j->next=NULL;
box_count++;
}
else j->remainder-=a[i];
for (q=j->next;q!=NULL&&q->link!=NULL;q=q->link);
if (q==NULL)
{ p->link=j->head;
j->head=p;
}
else
{ p->link=NULL;
q->link=p;
}
}
printf(“共使用了%d只箱子”,box_count);
printf(“各箱子装物品情况如下:”);
for (j=box_h,i=1;j!=NULL;j=j->next,i++)
{ printf(“第%2d只箱子,还剩余容积%4d,所装物品有;\n”,I,j->remainder);
for (p=j->head;p!=NULL;p=p->link)
printf(“%4d”,p->vno+1);
printf(“\n”);
}
}

B. 急需集装箱装箱算法计算公式和方法

1)集装箱自重系数.即自重与载重之渗洞比,计算公式是:
集装丛岩枯箱枣雹自重系数=集装箱自重/集装箱载重量
(2)集装箱比容.指箱内容积与载重量之比,计算公式是:
集装箱比容(m3/t)=集装箱内部几何容积/集装箱载重量
(3)集装箱的比面.指集装箱底面积与载重量之比,计算公式是:
集装箱比面(m2/t)=集装箱底部面积/集装箱载重量
返回

C. 集装箱装箱量计算

20尺集装箱内径:5.89x2.34x2.38(长宽高)

40尺集装箱内径:12,03x2.34x2.38

用包装箱尺寸,去吻合集装箱的长宽高,一定要小于集装箱的长宽高。即可。

例:

高:1.140x2层=2.28m,小于集装箱的高。

宽:1.080x2排=2.160m,小于集装箱的宽。

长:0.5x11排=5.5m , 小于集装箱的长。

长宽高都可以保证装进去。

数量:2x2x11=44箱。

集装箱计算单位,简称:TEU,是英文Twenty Equivalent Unit的缩写, 又称20英尺换算单位,是计算集装箱箱数的换算单位。也称国际标准箱单位。通常用来表示船舶装载集装箱的能力,也是集装箱和港口吞吐量的重要统计、换算单位。

各国大部分集装箱运输,都采用20英尺和40英尺长的两种集装箱。为使集装箱箱数计算统一化,把20英尺集装箱作为一个计算单位,40尺集装箱作为两个计算单位,以利统一计算集装箱的营运量。

在统计集装箱数量时有的一个术语:自然箱,也称"实物箱"。自然箱是不进行换算的实物箱,即不论是40英尺集装箱,30英尺集装箱,20英尺集装箱或10英尺集装箱均作为一个集装箱统计。

(3)港口装箱近似算法扩展阅读:

集装箱内部的最大长、宽、高尺寸。高度为箱底板面至箱顶板最下面的距离,宽度为两内侧衬板之间的距离,长度为箱门内侧板量至端壁内衬板之间的距离。它决定集装箱内容积和箱内货物的最大尺寸。

国际上通常使用的干货柜(DRYCONTAINER)有:

1.外尺寸为20x8x8英尺6英寸,简称20尺货柜(内径:5898*2352*2390mm);

2.40x8x8英尺6英寸,简称40尺货柜(内径:12024*2352*2390mm);

及较多使用的40x8x9英尺6英寸,简称40尺高柜。

为11.8x2.34x2.68米.配货毛重一般为26吨,体积为68立方米。

45尺高柜:内容积为:13.58x2.34x2.68米,配货毛重一般为29吨,体积为86立方米。

20尺开顶柜:内容积为5.89x2.32x2.31米,配货毛重20吨,体积31.5立方米。

40尺开顶柜:内容积为12.01x2.33x2.15米,配货毛重30.4吨,体积65立方米。

20尺平底货柜:内容积5.85x2.23x2.15米,配货毛重23吨,体积28立方米。

40尺平底货柜:内容积12.05x2.12x1.96米,配货毛重36吨,体积50立方米。

D. C++实现装箱问题的FFD近似解和近似比

体积1.5是错的吧,没办法装箱啊

E. 港口货物吞吐量怎么计算

港口吞吐量的计算方法

(1)货物吞吐量以实际必须装卸全部船舶货物为依据,在办理交接手续后统一结算;

(2)由水路到达港口,经装卸又从水路驶离的转口货物,分别按进港和出港各计算一次吞吐量;

(3)牲畜、家禽无法预估实际重量的货物,按系数进行换算;

(4)由水路运进港口卸货,计算一次进港吞吐量;自本港装船运出港口的货物,计算一次出港吞吐量。

【拓展】
哪些情况不属于吞吐量:

(1)在港口内装船,凯蠢运至区域以外倒入海中的废弃物,不纳入

(2)港口范围内的轮渡、短途运输,以及为运输船舶装卸服务和各码头之间的驳运量,不纳入

(3)同孝御一船舶装运进港,未经装卸直接出港的货物(包括原驳船换拖),不纳入

(4)港口进行疏浚,运出港外的废弃泥沙,不纳入

(5)由同一船舶卸下,又装上同一船舶运出港口的同一批货物,或装船未运出,又卸回本港的货物,不纳入

影响港口集装箱吞吐量的因素

(1)世界经济

(2)港口外部环境

(3)码头供求关系

(4)港口自身条件

扩大港口集装箱吞吐量的方法

(1)港口取消不合理收费,降低价格

(2)改进集装箱操作,提升服务质量

(3)加强与船舶公司的合作,达到“双赢”

(4)加大重视力度,改善港口外部环境

(5)灵活运用港口价格是关键

集装箱装箱量的计算
20尺集装箱内径:5.89x2.34x2.38(长宽高)

40尺集装箱内径:12,03x2.34x2.38

用包装箱尺寸,去吻合集装箱的长宽高,一定要小于集装箱的长宽高。即可。

例:

高:1.140x2层=2.28m,小于集装箱的高。

宽:1.080x2排=2.160m,小于集装箱的宽。

长:0.5x11排=5.5m , 小于集装箱的长。

长宽高都可以保证装进去。

数量:2x2x11=44箱。

集装箱计算单位,简称:TEU,是英文Twenty Equivalent Unit的巧孙岩缩写, 又称20英尺换算单位,是计算集装箱箱数的换算单位。也称国际标准箱单位。通常用来表示船舶装载集装箱的能力,也是集装箱和港口吞吐量的重要统计、换算单位。

各国大部分集装箱运输,都采用20英尺和40英尺长的两种集装箱。为使集装箱箱数计算统一化,把20英尺集装箱作为一个计算单位,40尺集装箱作为两个计算单位,以利统一计算集装箱的营运量。

在统计集装箱数量时有的一个术语:自然箱,也称实物箱"。自然箱是不进行换算的实物箱,即不论是40英尺集装箱,30英尺集装箱,20英尺集装箱或10英尺集装箱均作为一个集装箱统计。"

F. 求程序:装箱问题的近似算法--NF ( Next Fit ) 算法。谢谢帮助!

看看这个思路怎么样,好像代码略多。
import java.util.Random;
import java.util.Scanner;
public class FillBox {
private Scanner scann;
private int objNum;
private int boxNum;
private int boxLength;
private Goods[] mGoods;
private Random random;
private Box[] mBox;
public FillBox(){
scann=new Scanner(System.in);
random=new Random();
objNum=getArgsFormConsol("请输入物品个数objNum:");
boxNum=getArgsFormConsol("请输箱子个数boxNum:");
boxLength=getArgsFormConsol("请输箱子长度(单位CM)boxLength:");
//设置物品数组
setGoodsArray(objNum,boxLength);
//设置箱子数组
setBoxAry(boxNum,boxLength);
//开始装箱子
doFillBox();
//物品的大小情况
showGoodsMessage();
//显示装箱情况
showBoxUse();
}
public static void main(String[] args){
new FillBox();
}
public int getArgsFormConsol(String pIntroction){
System.out.print(pIntroction);
int result=scann.nextInt();
System.out.println("***************\n");
return result;
}
public void setGoodsArray(int pNum,int pSize){
mGoods=new Goods[pNum];
for(int i=0;i<pNum;i++){
int goodSize=pSize/4+random.nextInt(pSize/3);
Goods goods=new Goods(i,goodSize);
mGoods[i]=goods;
}
}
public void setBoxAry(int pTolNum,int pSize){
mBox=new Box[pTolNum];
for(int i=0;i<pTolNum;i++){
Box aBox=new Box(i,pSize);
mBox[i]=aBox;
}
}
public void doFillBox(){//明迹族开支装箱子
int aBoxSpaceValue=boxLength;
int currentBoxId=0;
for(int i=0;i<mGoods.length;i++){
if(currentBoxId>=boxNum){
System.out.println("已经没有足够的可用的箱子了!"激弊);
break;
}
Goods aGod=mGoods[i];
if(mGoods[i].getGoodsLength()<=aBoxSpaceValue){
//装进这个箱子
mBox[currentBoxId].addGoods(aGod.getGoodsNum());
aBoxSpaceValue-=mGoods[i].getGoodsLength();
}else{
mBox[currentBoxId].setSpaceValue(aBoxSpaceValue);
aBoxSpaceValue=boxLength;//可用长度变长boxLength
currentBoxId++;
i--;//这个州消货物装不下了,换下一个箱子
}
}
}
public void showBoxUse(){
System.out.println("=====================\n下面是装箱详细情况:\n====================");
for(int i=0;i<boxNum;i++){
System.out.println("\n"+mBox[i].getShow()+"\n* * * * * * * * * * * * * * *");
}
}
public void showGoodsMessage(){
for(int i=0;i<objNum;i++){
System.out.println("boxID:"+mGoods[i].getGoodsNum()+", box长度:"+mGoods[i].getGoodsLength());
}
}
}

public class Goods {
private int goodsNum;
private int goodsLength;
public Goods(){
}
public Goods(int pNum,int pLength){
this.goodsNum=pNum;
this.goodsLength=pLength;
}
public int getGoodsNum() {
return goodsNum;
}
public void setGoodsNum(int goodsNum) {
this.goodsNum = goodsNum;
}
public int getGoodsLength() {
return goodsLength;
}
public void setGoodsLength(int goodsLength) {
this.goodsLength = goodsLength;
}
}

import java.util.Vector;
public class Box {
private int boxNum;
private int boxLength;
private Vector<Integer> containGoodsID;
private int spaceValue;
public Box(){
}
public Box(int pNum,int pLength){
this.boxNum=pNum;
this.boxLength=pLength;
containGoodsID=new Vector<Integer>();
spaceValue=boxLength;
}
public int getBoxNum() {
return boxNum;
}
public void setBoxNum(int boxNum) {
this.boxNum = boxNum;
}
public int getBoxLength() {
return boxLength;
}
public void setBoxLength(int boxLength) {
this.boxLength = boxLength;
}
public void addGoods(Integer pGoodsID){
containGoodsID.add(pGoodsID);
}
public void removieGoods(Integer pGoodsID){
containGoodsID.removeElement(pGoodsID);
}
public int getSpaceValue() {
return spaceValue;
}
public void setSpaceValue(int spaceValue) {
this.spaceValue = spaceValue;
}
public String getShow(){
StringBuffer sb=new StringBuffer("箱子编号:"+this.boxNum+" 长度:"+this.boxLength+" 可用空间:"+spaceValue+"\n本箱子装的货物编号:");
for(int i=0;i<containGoodsID.size();i++){
sb.append(containGoodsID.get(i)+", ");
}
return sb.toString();
}
}

可能修饰性的代码比较多,关键逻辑就看doFill()了

G. 集装箱海运费计算方式

1、拼箱费用的计算
LCL运费计算只要采用“W/M”方式,W表示重量吨,按商品的毛重1000kg=1重量吨;M表示尺码吨,1立方米=1尺码吨。“W/M”方式即在重量吨和尺纳敏码吨里二者选其大计费。
2、整箱运费的计算
整箱货物运费计算,一种是和拼箱一样,按照实际重量计算,另一种就是按照集装箱的类型按耐衫箱计算运费。在整箱托运集昌茄腔装箱并且集装箱为船公司所有时,承运人计算海运费有“集装箱最低利用率”和“集装箱最高利用率”的规定。

H. 集装箱最优装柜计算方法

20尺集装箱内径:5.89x2.34x2.38(长宽高)
40尺集装箱内径:12,03x2.34x2.38
用你的包装箱尺寸,去吻合集装箱的长宽高,一定要小于集装箱的长宽高。即可。
例:
高:1.140x2层=2.28m,小于集装箱的高。
宽:1.080x2排=2.160m,小于集装箱的宽。
长:0.5x11排=5.5m
,
小于集装箱的长。
长宽高都可以保证装进去。
数量:2x2x11=44箱。
提示:40尺集装箱长12.03m,理论装24排,但是实际上在长度方向,一定会涨箱,保证装不进去。(这是实际经验),只能按照23排计算。
40尺可装数量:2x2x23=92箱。
祝你好运!

I. 怎样计算集装箱的装柜量20GP,40HQ

20尺开顶柜:内容积为5.89x2.32x2.31米,配货毛重20吨,体积31.5立庆前让方米。

40尺开顶柜:内容积为12.01x2.33x2.15米,配货毛重30.4吨,体积65立方米。

20尺平底货柜:内容积5.85x2.23x2.15米,配货毛重23吨,体积28立方米。

40尺平底货柜:内容积12.05x2.12x1.96米,配货毛重36吨,体积50立方米。

国际上通常使用的干货柜(DRYCONTAINER)有:

1、外尺寸为20x8x8英尺6英寸,简称20尺货柜(内径:5898*2352*2390mm);

2、40x8x8英尺6英寸,简称40尺货柜(内径:12024*2352*2390mm);

及较多使用的40x8x9英尺6英寸,简称40尺高柜。

为11.8x2.34x2.68米.配货毛重一般为26吨,体积为68立方米。

计算单位

集装箱计算单位,简称:TEU,是英文Twenty Equivalent Unit的缩写, 又称20英尺换算单位,是计算集装箱箱数的换算单位。也称国际标准箱单位。通常用来表示船舶装载集装箱的能力,也是集装箱和港口吞吐量的重要统计、换算单位。

各国大部分集装箱运输,都采用20英尺和40英尺长的两种集装箱。为使集装箱箱数计算统一化,把20英尺集装箱作为一个计算单位,40尺集装箱作为两个计算单位,以利统一计算集装箱的营运量。

在统计集装箱数量时有的一个术语:自然箱,也称"实物箱"。自然箱是不进行换算的实物箱,即不论是40英尺集装箱,30英尺集装箱,20英尺集装箱或10英尺集装箱均作为一个集装箱统计。

(9)港口装箱近似算法扩展阅读

标准箱号构成基本概念:采用ISO6346(1995)标准。

标准集装箱箱号由11位编码组成,包括三个部分:

1、 第一部分由4位英文字母组成。前三位代码 (Owner Code) 主要说明箱主誉局、经营人,第四位代码说明集装箱的类型。列如CBHU 开头的标准集悔雹装箱是表明箱主和经营人为中远集运。

2、 第二部分由6位数字组成。是箱体注册码(Registration Code),用于一个集装箱箱体持有的唯一标识。

3、 第三部分为校验码(Check Digit)由前4位字母和6位数字经过校验规则运算得到,用于识别在校验时是否发生错误。即第11位数字。

根据校验规则箱号的每个字母和数字都有一个运算的对应值。箱号的前10位字母和数字的对应值从0到Z对应数值为10到38,11、22、33不能对11取模数,所以要除去

第N位的箱号对应值再分别乘以2的N-1次方 (N=1,2,3………..10)

例如:箱号为CBHU3202732的集装箱它的第1位代码为C,

它的代码值=代码的对应值×2的0次方 =13×1=13。

类推第2位代码为B

它的代码值=代码的对应值×2的1次方 =12×2=24

以此类推得到箱号前10位代码的代码值。

将前10位的代码值乘积累加后对11取模

箱号为CBHU3202732的集装箱前10位箱号的代码累加值=4061,取11的模后为2,就是这个箱号第11位的识别码的数值。

参考资料来源:网络-集装箱号

参考资料来源:网络-集装箱

J. 装箱问题的BFD算法

NP不完全问题只给0分是没人做的,给200分做恐没卖怕都很难呀.
我做过二维的NP排料问题,很麻烦的.三维的要更难了乎清!
祝岁察前你好运!

阅读全文

与港口装箱近似算法相关的资料

热点内容
橙app如何开启聊天 浏览:899
访问服务器公网地址 浏览:666
pdf打印底色去掉 浏览:463
java快递接口 浏览:397
哪个app可以教新爸爸 浏览:210
如何查看服务器系统版本信息 浏览:524
成都市土地出让金算法 浏览:702
钢筋加密标记 浏览:576
ps中扩展功能在文件夹的什么位置 浏览:904
双极压缩机为什么要先高压 浏览:527
苹果手机服务器填什么 浏览:832
android移动动画效果 浏览:691
电子和服务器是什么意思 浏览:691
phpurl中文乱码问题 浏览:893
程序员那么可爱大结局陆漓产子 浏览:538
java如何从云服务器读取本地文件 浏览:924
压缩空气软管制作方法 浏览:912
天河三号算法 浏览:925
php队列教程 浏览:634
洪水命令 浏览:531