当前位置: 首页 > 后端技术 > Java

Java实现甘特图——最短工时算法

时间:2023-04-01 22:25:55 Java

该主题是最短工作时间的算法。p1、p2、p3、p4为jobs,分为10个jobs。数字操作使用BigDecimal操作来防止精度损失。CodepublicclassTest{//p1p2p3p4为站,数组中的值为作业所需时间staticBigDecimal[]p1={BigDecimal.valueOf(7.988652),BigDecimal.valueOf(8.770062),BigDecimal.valueOf(12.952448),BigDecimal.valueOf(11.160148),BigDecimal.valueOf(16.0201),BigDecimal.valueOf(9.87088),BigDecimal.valueOf(13.284036),BigDecimal.valueOf(19.07412),BigDecimal.valueOf(20.058414}value;)2staticBigDecimal[]p2={BigDecimal.valueOf(9.936646),BigDecimal.valueOf(13.722012),BigDecimal.valueOf(7.010982),BigDecimal.valueOf(16.496146),BigDecimal.valueOf(8.82748),Big7(534.valueOf)9,BigDecimal.valueOf(14.962134),BigDecimal.valueOf(20.094358),BigDecimal.valueOf(15.97263),BigDecimal.valueOf(12.03512)};staticBigDecimal[]p3={BigDecimal.valueOf(5.935868),BigDecimal.valueOf(5.935868),BigDecimal.valueOf(218.value0),BigDecimal.valueOf(9.04917),BigDecimal.valueOf(12.013664),BigDecimal.valueOf(18.114)384),BigDecimal.valueOf(17.928158),BigDecimal.valueOf(19.846022),BigDecimal.valueOf(14.148532),BigDecimal.valueOf(14.970352),BigDecimal.valueOf(7.041914)};staticBigDecimal[]p4={BigDecimal.valueOf(18.128398),BigDecimal.valueOf(11.24949),BigDecimal.valueOf(16.052406),BigDecimal.valueOf(19.087604),BigDecimal.valueOf(16.831394),BigDecimal.valueOf(18.942358),BigDecimal.valueOf(18.942358).valueOf(20.012922),BigDecimal.valueOf(13.883878),BigDecimal.valueOf(15.116388),BigDecimal.valueOf(8.949654)};staticBigDecimal[][]sum={p2,p3,p4};publicstaticBigDecimalsum(BigDecimal[]a,intn){return(n<1)?p1[0]:总和(a,n-1).add(a[n]);}publicstaticvoidmain(String[]args){//使用用于存储最长时间的数组BigDecimal[]end=newBigDecimal[p1.length];对于(inti=0;i0?end[i-1]:end[i]).add(ints[i]);}}}//取出数组中最大的数就是最短工作时间System.out.println("最短工作时间:"+Arrays.stream(end).max(BigDecimal::compareTo).get().toString());}}执行结果最短工时:184.778612