包裹 分箱简单算法 算出临界值 分箱数量加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;
}
}
分享到:
相关推荐
标题中的"FDDCT.rar_包裹_相位展开_相位解包裹_解包裹算法_解相位"表明这个压缩包可能包含了一个用于处理包裹相位问题的软件或脚本,具体来说,是基于四向最小二乘解包裹算法的实现。这种算法旨在将包裹相位转换为...
3) 基于可靠度排序的非连续路径解包裹算法-仿真包裹相位.m(仿真包裹相位分析函数) 4) 基于可靠度排序的非连续路径解包裹算法-仿真包裹相位-GBK格式.m(防注释乱码) 5) 基于可靠度排序的非连续路径解包裹算法-实验包裹...
### 数据挖掘与数据分析应用案例:基于C语言的分箱与聚类算法进行数据预处理 #### 重要性及背景 数据预处理作为数据挖掘过程的一个关键环节,对于提高挖掘效果至关重要。原始数据往往存在各种问题,如不完整、冗余...
在本文中,我们将深入探讨“学习凸包(五):卷包裹算法——兼解POJ1113(JAVA)”这一主题。凸包是计算机图形学、算法和数据结构领域中的一个重要概念,它指的是在一组点集中,由这些点构成的最小外接多边形。在解决...
二维解包裹算法是数字信号处理领域中的一个重要技术,特别是在光学干涉计量、地震成像和雷达信号分析等应用中。Miguel的二维解包裹算法是一种鲁棒性强的算法,能够有效地处理数据中的噪声和不连续性,从而准确地恢复...
实现CART算法进行连续变量最优分箱的Python代码,首先要导入必要的库,读取数据集,并定义一些基础函数: 1. `calc_score_median`函数用于计算分割变量的中位数列表。 2. `choose_best_split`函数用于基于最优基尼不...
有监督:(1) 卡方分箱法(ChiMerge) (2) ID3、C4.5、CART等单变量决策树算法 (3) 信用评分建模的IV最大化分箱 等 本篇使用python,基于CART算法对连续变量进行最优分箱 由于CART是决策树分类算法,所以相当于是单...
质量引导解包裹算法可以在光栅法三维重建时由相对相位求取绝对相位。
2. **unwrapphase.m**:此脚本可能是对包裹相位进行解包裹的通用接口函数,它可能调用 LSunwrap.m 或其他解包裹算法,同时可能包含预处理和后处理步骤,如数据平滑、噪声过滤等,以提高解包裹结果的准确性。...
路径无关算法是一类重要的相位解包裹算法,其中最常用的是各种最小二乘算法。由于最小二乘算法无法限制误差在空间中传播,因此不能直接获得精确的解包裹相位,其应用受到了限制。分析最小二乘相位解包裹算法误差的...
当前很多文章尝试过最优分箱,python上也有cut等方法进行等宽分箱。为了方便日后输出结果以及分箱要求。做一个简单的轮子以供大家日后使用。很多能用其他轮子的地方也没有多余出力,也不托大会比别人写的好。空间...
2.领域:智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,更多内容可点击博主头像 3.内容:标题所示,对于介绍可点击主页搜索博客 4.适合人群:本科,硕士...
算法的扩展可以包括以下方面: 1. 添加分箱数约束,限制特征被分割成的区间数量,以避免过度分割。 2. 引入最小箱占比,确保每个箱内至少包含一定比例的样本。 3. 坏人率约束,特别是在信用评分或者欺诈检测等场景,...
本篇文章将深入探讨标题和描述中提到的一些核心算法,包括动态规划、分治算法、概率算法、模拟退火算法、搜索算法、贪婪算法、在线MATLAB应用、遗传算法以及组合算法。 1. **动态规划**:动态规划是一种解决具有...
"单卡车协同多无人机任务分配(包裹投递)算法"是针对这一需求提出的创新解决方案。该算法主要用于优化包裹投递过程,通过一辆卡车与多架无人机的协同工作,提高配送效率,减少运输时间和成本。 首先,我们需要理解...
在数据分析和挖掘领域,数据...在JAVA环境下,我们可以借助各种数据结构和算法来实现这些功能,提升数据分析的效率和准确性。对于数据挖掘爱好者和专业人员来说,熟练掌握这些技术对于提升项目质量和效率至关重要。
针对这一问题,研究人员提出了一系列解包裹算法,而基于FPGA(现场可编程门阵列)的实现方式因其高性能和灵活性受到了特别关注。 FPGA是一种可编程逻辑设备,它允许用户通过硬件描述语言来配置其内部逻辑功能。与...
解包裹算法的步骤通常包括: 1. 初始化:选择一个起始点,并记录它的相位值。 2. 遍历相位图:对于每个后续点,计算与前一点的相位差。 3. 如果相位差大于π,则减去2π;如果相位差小于-π,则加上2π。这一步确保...
本篇文章将详细探讨三种常见的内存分配算法:首次适应算法(First Fit)、最佳适应算法(Best Fit)以及循环首次适应算法(Circular First Fit),并结合源代码分析它们的工作原理。 1. 首次适应算法(First Fit) ...
模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+...