`

包裹分箱 算法

 
阅读更多






包裹 分箱简单算法  算出临界值 分箱数量加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;
    }
}
分享到:
评论

相关推荐

    python 基于卡方值分箱算法的实现示例

    原理很简单,初始分20箱或更多,先确保每箱中都含有0,1标签,对不包含0,1标签的箱向前合并,计算各箱卡方值,对卡方值最小的箱向后合并,代码如下 import pandas as pd import numpy as np ...

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

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

    数据挖掘与数据分析应用案例 数据挖掘算法实践 基于C语言的使用分箱和聚类算法分别进行数据预处理.doc

    ### 数据挖掘与数据分析应用案例:基于C语言的分箱与聚类算法进行数据预处理 #### 重要性及背景 数据预处理作为数据挖掘过程的一个关键环节,对于提高挖掘效果至关重要。原始数据往往存在各种问题,如不完整、冗余...

    学习凸包(五):卷包裹算法--兼解POJ1113(JAVA)

    在本文中,我们将深入探讨“学习凸包(五):卷包裹算法——兼解POJ1113(JAVA)”这一主题。凸包是计算机图形学、算法和数据结构领域中的一个重要概念,它指的是在一组点集中,由这些点构成的最小外接多边形。在解决...

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

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

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

    有监督:(1) 卡方分箱法(ChiMerge) (2) ID3、C4.5、CART等单变量决策树算法 (3) 信用评分建模的IV最大化分箱 等 本篇使用python,基于CART算法对连续变量进行最优分箱 由于CART是决策树分类算法,所以相当于是单...

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

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

    最小二乘法解包裹

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

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

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

    python的等深分箱实例

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

    基于matlab实现相位质量引导解包裹算法+仿真结果和运行方法+仿真结果和运行方法.zip

    2.领域:智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,更多内容可点击博主头像 3.内容:标题所示,对于介绍可点击主页搜索博客 4.适合人群:本科,硕士...

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

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

    动态规划,分治算法,概率算法,模拟退火算法,搜索算法,贪婪算法,网上matlab,遗传算法,组合算法

    本篇文章将深入探讨标题和描述中提到的一些核心算法,包括动态规划、分治算法、概率算法、模拟退火算法、搜索算法、贪婪算法、在线MATLAB应用、遗传算法以及组合算法。 1. **动态规划**:动态规划是一种解决具有...

    JAVA数据预处理中的等宽和等频分箱操作

    在数据分析和挖掘领域,数据...在JAVA环境下,我们可以借助各种数据结构和算法来实现这些功能,提升数据分析的效率和准确性。对于数据挖掘爱好者和专业人员来说,熟练掌握这些技术对于提升项目质量和效率至关重要。

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

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

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

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

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

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

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

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

Global site tag (gtag.js) - Google Analytics