我需要一个公式,该公式可以帮助我将多个包裹组合在一起。
我有一个像这样的包裹对象:
<app-header></app-header>
<router-outlet></router-outlet>
目标是将宗地合并为一个,因此在主脚本中,我将具有以下内容:
<?php
class Parcel {
function __construct($length,$width,$height,$weight) {
$this->length=$length;
$this->width=$width;
$this->height=$height;
$this->weight=$weight;
}
private $length;
private $width;
private $height;
private $weight;
public function getParcelDetails()
{
echo "length=".$this->length."<br>";
echo "width =".$this->width."<br>";
echo "height=".$this->height."<br>";
echo "weight=".$this->weight ."<br>";
}
public static function mergeParcels($parcels){
$new_parcel_length=0;
$new_parcel_width=0;
$new_parcel_height=0;
$new_parcel_weight=0;
foreach ($parcels as $key => $parcel) {
# What is the formula that can create a new parcel which is enable to contain the parcels $parcels ?
# The weight will be just additionned
$new_parcel_weight+=$parcel->$weight;
}
$new_parcel= new static($new_parcel_length,$new_parcel_width,$new_parcel_height,$new_parcel_weight);
return $new_parcel;
}
}
此图片可以演示问题: stack blitz sample
请注意,问题是当我有多个包裹而尺寸不相等时。
如果尺寸相等,我可以将它们彼此相加,但是当尺寸不相同时,我并没有真正的解决方案。
答案 0 :(得分:2)
您遇到的编程问题称为knapsack packing problem,是组合优化问题的子集。
动态编程可以解决小问题,启发式算法可以解决大问题。
请注意,大型组合求解器本身就是整个行业,需要多年的研发。