`

包裹分箱 算法

 
阅读更多






包裹 分箱简单算法  算出临界值 分箱数量加1
/**
     *预估分箱算法
     * @return
     */
 
  private Tuple2<BigDecimal,Integer>  calculateFareAndNums(List<BigDecimal> list,PxChannelPrice price){
        if(list==null||list.isEmpty()){
            Tuple2.of(BigDecimal.ZERO,0);
        }
        Collections.sort((List<BigDecimal>) list, new Comparator<BigDecimal>() {
            @Override
            public int compare(BigDecimal o1, BigDecimal o2) {
                return o2.compareTo(o1);
            }
        });
        BigDecimal taxSum = BigDecimal.ZERO;//税费
        BigDecimal taxLmt = new BigDecimal(50);//税费限制
        int  bagCnt = 0;//分包数量
        for (int i = 0;i<list.size();i++){
            BigDecimal decimal = list.get(i);

            if(decimal.compareTo(taxLmt)>-1){
                bagCnt++;
            }else {
                if(taxSum.add(decimal).compareTo(taxLmt)>-1){
                    bagCnt++;
                    taxSum = decimal;
                }else{
                    taxSum = taxSum.add(decimal);

                }
            }
        }
        if(taxSum.compareTo(BigDecimal.ZERO)==1){
            bagCnt++;
        }
        return Tuple2.of(new BigDecimal(bagCnt).multiply(price.getInitialWeightPrice()),bagCnt);
 }




public class Tuple2<V1, V2> {

    private final V1 v1;
    private final V2 v2;

    public Tuple2(V1 t1, V2 t2) {
        this.v1 = t1;
        this.v2 = t2;
    }

    public static <V1, V2> Tuple2<V1, V2> of(V1 v1, V2 v2) {
        return new Tuple2<>(v1, v2);
    }

    public V1 _1() {
        return v1;
    }

    public V2 _2() {
        return v2;
    }

    @Override
    public String toString() {
        return "(" + v1 + "," + v2 + ')';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o)
            return true;
        if (o == null || getClass() != o.getClass())
            return false;

        Tuple2<?, ?> tuple2 = (Tuple2<?, ?>) o;

        if (!v1.equals(tuple2.v1))
            return false;
        return v2.equals(tuple2.v2);

    }

    @Override
    public int hashCode() {
        int result = v1.hashCode();
        result = 31 * result + v2.hashCode();
        return result;
    }
}
分享到:
评论

相关推荐

    卡方分箱原理

    卡方分箱(ChiMerge)算法是解决这一问题的一个常用算法。它使用卡方统计量来决定哪些相邻区间应该合并,从而得到一个较小数量的离散区间,并确保合并后的区间在统计上显著。 卡方分箱算法的核心步骤包括: 1. ...

    FDDCT.rar_包裹_相位展开_相位解包裹_解包裹算法_解相位

    标题中的"FDDCT.rar_包裹_相位展开_相位解包裹_解包裹算法_解相位"表明这个压缩包可能包含了一个用于处理包裹相位问题的软件或脚本,具体来说,是基于四向最小二乘解包裹算法的实现。这种算法旨在将包裹相位转换为...

    最小二乘法解包裹

    2. **unwrapphase.m**:此脚本可能是对包裹相位进行解包裹的通用接口函数,它可能调用 LSunwrap.m 或其他解包裹算法,同时可能包含预处理和后处理步骤,如数据平滑、噪声过滤等,以提高解包裹结果的准确性。...

    单卡车协同多无人机任务分配(包裹投递)算法

    "单卡车协同多无人机任务分配(包裹投递)算法"是针对这一需求提出的创新解决方案。该算法主要用于优化包裹投递过程,通过一辆卡车与多架无人机的协同工作,提高配送效率,减少运输时间和成本。 首先,我们需要理解...

    基于有限差分的FFT与DCT的相位解包裹算法

    在IT领域,尤其是在信号处理和图像分析中,相位解包裹算法是一项重要的技术。它用于处理含有周期性误差的相位数据,例如由于量子噪声、采样限制或测量不精确导致的相位断裂。本文将深入探讨基于有限差分的快速傅里叶...

    Miguel的二维解包裹算法Matlab程序及C程序

    二维解包裹算法是数字信号处理领域中的一个重要技术,特别是在光学干涉计量、地震成像和雷达信号分析等应用中。Miguel的二维解包裹算法是一种鲁棒性强的算法,能够有效地处理数据中的噪声和不连续性,从而准确地恢复...

    python实现连续变量最优分箱详解--CART算法

    实现CART算法进行连续变量最优分箱的Python代码,首先要导入必要的库,读取数据集,并定义一些基础函数: 1. `calc_score_median`函数用于计算分割变量的中位数列表。 2. `choose_best_split`函数用于基于最优基尼不...

    最小二乘法解包裹相位

    解包裹算法的步骤通常包括: 1. 初始化:选择一个起始点,并记录它的相位值。 2. 遍历相位图:对于每个后续点,计算与前一点的相位差。 3. 如果相位差大于π,则减去2π;如果相位差小于-π,则加上2π。这一步确保...

    一种基于强度传输方程快速准确的相位解包裹算法

    而"一种基于强度传输方程快速准确的相位解包裹算法"则提出了一种新的解决方案,结合了强度传输方程(TIE,Transport of Intensity Equation)的概念,以提高解包裹的速度和准确性。 强度传输方程是光学成像理论中的...

    剪切散斑包裹相位图的正余弦滤波算法-实例演示

    在IT领域,尤其是在图像处理和信号分析中,剪切散斑包裹相位图的正余弦滤波算法是一种重要的技术。这种算法主要用于处理由剪切散斑干涉产生的数据,以提取其中的相位信息。剪切散斑干涉是光学测量中的一种方法,它...

    最小二乘相位解包裹算法

    最小二乘解包裹算法通常是引入离散余弦变换(DCT)求解离散泊松方程,得到最小二乘意义上的相位展开解,最后得到真实连续的展开相位。该算法运算速度快,并且稳健。 该算法可用于全息干涉,散斑干涉等任何实际使用中...

    精确最小二乘相位解包裹算法

    路径无关算法是一类重要的相位解包裹算法,其中最常用的是各种最小二乘算法。由于最小二乘算法无法限制误差在空间中传播,因此不能直接获得精确的解包裹相位,其应用受到了限制。分析最小二乘相位解包裹算法误差的...

    python的等深分箱实例

    当前很多文章尝试过最优分箱,python上也有cut等方法进行等宽分箱。为了方便日后输出结果以及分箱要求。做一个简单的轮子以供大家日后使用。很多能用其他轮子的地方也没有多余出力,也不托大会比别人写的好。空间...

    python实现二分类的卡方分箱示例

    算法的扩展可以包括以下方面: 1. 添加分箱数约束,限制特征被分割成的区间数量,以避免过度分割。 2. 引入最小箱占比,确保每个箱内至少包含一定比例的样本。 3. 坏人率约束,特别是在信用评分或者欺诈检测等场景,...

    基于FPGA的线阵干涉条纹相位解包裹算法实现.pdf

    针对这一问题,研究人员提出了一系列解包裹算法,而基于FPGA(现场可编程门阵列)的实现方式因其高性能和灵活性受到了特别关注。 FPGA是一种可编程逻辑设备,它允许用户通过硬件描述语言来配置其内部逻辑功能。与...

    基于加权最小二乘法的相位解包裹算法.zip

    关于该资源的详细情况可参考本人博客文章 ... 该资源演示了加权以及未加权最小二乘解包裹算法,提供了仿真包裹相位以及实验包裹相位图,通过残差点的获取来作为加权系数。资源适用于干涉检测领域。

    首次适应算法 最佳适应算法 循环首次适应算法 

    本篇文章将详细探讨三种常见的内存分配算法:首次适应算法(First Fit)、最佳适应算法(Best Fit)以及循环首次适应算法(Circular First Fit),并结合源代码分析它们的工作原理。 1. 首次适应算法(First Fit) ...

    模型算法大全(20+种常用算法模型+代码实现)

    模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+...

    磁盘调度算法(最短寻道时间优先算法(SSTF) 扫描算法(SCAN) 先来先服务算法(FCFS) 循环扫描算法(CSCAN)....)

    常见的磁盘调度算法有先来先服务算法(FCFS)、最短寻道时间优先算法(SSTF)、扫描算法(SCAN)和循环扫描算法(CSCAN)等。 先来先服务算法(FCFS) 先来先服务算法(FCFS)是一种最简单的磁盘调度算法。该算法...

    自适应分箱特征选择的快速网络入侵检测系统.docx

    【标签】:网络安全,入侵检测,特征选择,信息增益,分箱算法,机器学习,集成学习 正文: 随着信息技术的快速发展,网络安全问题日益严重,网络入侵检测系统的需求越来越迫切。传统的机器学习和深度学习算法虽然在识别...

Global site tag (gtag.js) - Google Analytics