`
cm14k
  • 浏览: 31412 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

最优装载问题

阅读更多

问题描述:

有一批集装箱要装上一艘载重量为C的轮船,要求在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。

算法分析:

采用重量轻者先装的贪心选择策略,可产生最优装载问题的最优解。

 

算法实现:

OptinalLoading.java

/*
 * 最优装载
 * 有一批集装箱要装上一艘载重量为C的轮船。
 * 要求在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。
 * 算法分析:
 * 采用重量最轻者先装的贪心选择策略
 * 
 * date: 2010/12/12
 * auther:cm
 *
 */
import java.util.Arrays;
public class OptinalLoading 
{
	private double c;	//载重量
	private LContainer[] loadC;	//集装箱数组
	private int count;			//可装入总数

	public OptinalLoading(double c, double[] w)
	{
		this.c = c;
		this.loadC = new LContainer[w.length];
		for (int i = 0; i < w.length; i++)
		{
			loadC[i] = new LContainer(w[i], i);
		}
	}
	public void optinalLoading()
	{
		Arrays.sort(loadC);
		double max = c;
		double sum = 0.0;
		for (int i = 0; i < loadC.length&&loadC[i].getW()<=max; i++)
		{
			loadC[i].setLoadFlag(true);
			count++;
			sum += loadC[i].getW();
			max -= loadC[i].getW();
		}
	}
	public LContainer[] getLoadC()
	{
		return loadC;
	}
	public int getCount()
	{
		return count;
	}


	public static void main(String[] args) 
	{
		double c = 1000;
		double[] w = {800, 1000, 1001, 200, 100, 400, 600, 50};
		OptinalLoading opt = new OptinalLoading(c, w);
		opt.optinalLoading();
		int count = opt.getCount();
		LContainer[] cc = opt.getLoadC();

		System.out.println(count);
		for (int i = 0; i < cc.length; i++)
		{
			if (cc[i].getLoadFlag())
			{
				System.out.print(cc[i].getId() + " ");
			}
		}
	}
}

 

LContainer.java

//集装箱类
public class LContainer implements Comparable
{
	private int id;	//编号
	private double w; //重量
	private boolean loadFlag = false;	//是否装船标识

	public LContainer()
	{
	}
	public LContainer(double w, int id)
	{
		this.id = id;
		this.w = w;
	}


	public int compareTo(Object obj)
	{
		double ww = ((LContainer)obj).getW();
		if (this.w > ww)
		{
			return 1;
		}
		else if (this.w < ww)
		{
			return -1;
		}
		else
		{
			return 0;
		}

	}

	public void setId(int id)
	{
		this.id = id;
	}
	public int getId()
	{
		return id;
	}
	public void setW(double w)
	{
		this.w = w;
	}
	public double getW()
	{
		return w;
	}
	public void setLoadFlag(boolean loadFlag)
	{
		this.loadFlag = loadFlag;
	}
	public boolean getLoadFlag()
	{
		return loadFlag;
	}
}
 

 

 

 

分享到:
评论

相关推荐

    最优装载问题——回溯法

    最优装载问题——回溯法 最优装载问题——回溯法 最优装载问题——回溯法

    最优装载问题(贪心算法)c++

    ### 最优装载问题(贪心算法)c++ #### 问题背景与定义 最优装载问题是在计算机科学和运筹学中的一个经典问题。该问题描述了一种情况:假设有一艘轮船,其最大载重量为\( c \)吨,现在有一批集装箱需要装载到这艘...

    最优装载问题 c++

    最优装载问题,也被称为集装箱装载或货车装载问题,是一个经典的组合优化问题,广泛应用于物流、运输和资源分配等领域。在该问题中,我们需要在有限的空间内最大化装载物品的数量,同时确保不超出容器的容量限制。这...

    贪心法解决最优装载问题

    贪心法解决最优装载问题 输入 20 2000 125 89.5 142.8 65 298 100 150 86 88 42 55 16 129.6 238.6 45 110 217 168 180 80 输出 1888.9 18 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1

    分支限界法解决最优装载问题

    算法设计与分析用分支限界法解决最优装载问题,,,

    背包最优装载问题

    ### 背包最优装载问题 #### 一、问题背景及定义 背包最优装载问题(Knapsack Problem)是组合优化中的一个经典问题,在实际应用中有广泛的用途,比如物流配送、资源分配等领域。该问题的基本形式是:给定一系列...

    C++最优装载问题

    【标题】:“C++最优装载问题” 在计算机科学和编程领域,最优装载问题是一个经典的运筹学问题,它涉及到如何高效地安排有限空间内的物品装载,以达到最大的效益。在这个问题中,我们通常考虑一系列具有不同重量和...

    算法实验报告最优装载问题

    ### 最优装载问题 #### 贪心法解决最优装载问题 最优装载问题是一个经典的组合优化问题,在实际应用中有着广泛的应用场景,例如在物流、运输等行业中的资源分配问题。本报告通过一个具体的实例,利用贪心算法来...

    最优装载问题 算法分析与设计

    最优装载问题 解决最优装载 算法分析与设计

    动态规划(背包问题、最优装载问题等)

    计算机算法分析第四章,背包问题最优装载问题证明等的以及讲义

    最优装载 有一批集装箱要装上一艘载重量为c的轮船。其中集装箱i的重量为Wi。最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。

    ### 最优装载问题详解 #### 一、问题背景与定义 **最优装载问题**是一种经典的计算机科学中的优化问题。该问题通常涉及一个或多个约束条件下的最大化或最小化目标函数。在这个特定的情境中,我们需要考虑如何将一...

    最优装载问题 计算机算法 c/c++语言

    最优装载问题,也被称为集装箱装载或货车装载问题,是一个经典的组合优化问题,广泛存在于物流、运输和资源分配等领域。在计算机科学中,它通常被处理为一个求解最大化的二进制背包问题,目的是在有限的容量下,尽...

    最优装载问题(算法 代码)

    最优装载问题,也被称为集装箱装载或货物装载优化问题,是一个典型的组合优化问题,在物流、运输和计算机科学等领域有着广泛的应用。这个问题的目标是在有限的资源条件下,如何最大限度地装载货物,通常涉及将不同...

    分支限界法最优装载 C++

    C++实现的分支限界的最优装载问题 可以运行

    算法设计与分析 报告 一.rar_greedy_最优装载问题_算法设计与分析_贪心 算法_贪心算法

    《贪心算法在最优装载问题中的应用》 贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法策略。在解决实际问题时,贪心算法通常用于求解具有...

    3-4最优装载问题

    最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。 Input 输入的第一个为测试样例的个数T( T ),接下来有T个测试样例。每个测试样例的第一行是一个整数n( n )和一个非负数C( C )...

    贪心算法-最优装载问题

    基于贪心算法的最优装在你问题

    最优装载回溯法求解........

    最优装载问题,也被称为集装箱装载问题或装载问题,是一个经典的组合优化问题,广泛存在于物流、运输和仓储等领域。它的目标是在有限的载重和体积条件下,最大化地装载货物,使得运输效率达到最优。回溯法是一种解决...

    分支限界法实验最优装载问题.pdf

    【最优装载问题与分支限界法】 最优装载问题是一个经典的组合优化问题,旨在寻找最佳的装载方案,使得一组集装箱能够合理地分配到两艘载重量有限的轮船上,以达到最大的装载重量。在这个问题中,每艘轮船的载重量...

    贪心算法之最优装载问题.doc

    贪心算法之最优装载问题 贪心算法是解决最优装载问题的有效方法。最优装载问题是指在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。该问题可以分解成多个子问题,每个子问题的最优解可以通过贪心选择来...

Global site tag (gtag.js) - Google Analytics