没有合适的资源?快使用搜索试试~ 我知道了~
首页装载问题-分支限界算法-java实现
资源详情
资源评论
资源推荐

/*
* 装载问题-采用分支限界法完成-FIFO方式
* Time:2013-1-6
* 下标从1开始,
* 采用的FIFO的方式,采用remain剪枝的操作,并且采用了string保存了最佳的路径
*/
package com.book.java;
import java.util.*;
public class Project45_FIFOBBloading_2 {
public static int weight[]={0,10,40,40};; //用来表示集装箱中对应的重量
public static int n; //表示数组的个数
public static int bestw; //表示最接近的容量
public static int c; //表示最大的容量
public static Queue<Node45> que;
public static int remain;//用来剪枝的操作的时候使用
public static String bestx;//用来保存最佳的路劲
public static void main(String[] args) {
n=weight.length-1;//初始化个数
c=45; //初始化最大的重量
que=new LinkedList<Node45>(); //初始化FIFO队列
remain=0; //初始化剩余质量,用在剪枝函数
for(int i=1;i<=n;i++)
{
remain=remain+weight[i];
}
fifobbLoading(1);
//输出
System.out.println("最接近最大重量 "+c+" 的重量为:"+bestw);
System.out.println("最佳的路径为"+bestx);
}
public static void fifobbLoading(int num)
{
remain=remain-weight[1];//在第一层进行判断的操作
if(weight[num]<=c) //用于是否需要剪去右枝节
{
Node45 temp=new Node45(weight[num],"1");//初始化右节点
que.offer(temp);
bestw=bestw+weight[num]; //修改最优质量
}
if(remain>=bestw)//用于是否需要剪去左枝节
{
Node45 temp=new Node45(0,"0");//初始化左节点
que.offer(temp);
}
int size=que.size();//初始化在第一层运行结束后队列中的个数
while(num!=n) //判断是否达到最后一层
{
// System.out.println("============================");
// System.out.println("num=="+num);


















seuzhuyunjie
- 粉丝: 2
- 资源: 19
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制

评论3