저는 집의 트림 몰딩을 자르고 다양한 길이의 트림 조각을 가지고 있으며 가장 적은 양의 낭비를 위해 최적으로 그룹화하려고합니다. 기본적으로, 필자는 필요한 길이를 가능한 긴 길이로 최적 그룹화 (또는 팩)하려고합니다.최대 값의 벡터를 초과하지 않는 최적의 그룹으로 숫자를 결합하는 알고리즘?
나는이 문제에 접근하는 방법에 다소 혼란 스럽지만 현재는 손으로 직접하고있다. 그러나 실수로 인해 전체 작업을 다시해야한다. 나는 몇몇 Java를 알고 있지만, 최근에 R로 exlusively 작업을 해왔다. 그래서 나는이 시점에서 나의 가장 친숙한 언어이다. 이 접근 방법에 대한 제안이 있습니까?
trim_lengths <- c(44, 57, 86, 86, 40, 88, 88, 41, 40, 40,
62, 62, 54, 54, 55, 55, 63, 63, 75, 75, 100, 100)
avail_lengths <- c(120, 103, rep(100, 9), 98, rep(97, 4),
95, rep(88, 3), 85, 65)
while(length(trim_lengths) > 0) {
current_max <- max(trim_lengths)
current_min <- min(trim_lengths)
if(current_max + current_min > max(avail_lengths) {
find smallest value in avail_lengths that's greater than current_max
store current_max and optimal value from avail_lengths in list or vector
to indicate the pairing/grouping
}
else {
group <- c(current_max, current_min)
current_max <- trim_lengths minux elements in group
if <- sum(group) + current_max > max(avail_lengths) {
store group and corresponding avail_length element in list/vector
}
else{
basically, keep trying to group until solved
}
}
내가 이미 알고 : (올바른 구문에 대한 보이지 않는 난 그냥 아이디어를 스케치하고있어)
수동으로이 같은 알고리즘 뭔가를 통해 반복보다이 일을 더 나은 방법이 있나요 그것은 최적이 아닙니다.trim_lengths
벡터의 "outside in"을 확인하고 있습니다. 손으로 만든 페어링은 종종 작고 중간 수준의 값을 사용하기 쉬운 길이로 페어링하여 꽤 쉽게 볼 수 있습니다. 쌍을 이루는 것보다
어쨌든, 그것은 흥미로운 문제 였고 해결책이 있는지를 알기위한 참고 자료 나 분명한 제안이 있는지 궁금해했습니다. 일부 관련 질문에서 첫 번째 의견은 종종 "무엇을 시도 했습니까?"라고 물었습니다. 나는 진짜로 ... 나는 지금 당황하다. 내가 생각한 단 한가지는 조합을 무작위로 강제로 조합하여 낭비를 최소화하는 솔루션을 저장하는 것뿐이었습니다.
나는 이것을 벡터화 된 방법으로 해결하는 것에 대한 몇 가지 제안 - 어떤 종류의 행렬 연산 또는 문제의 선형 모델 표현을 좋아할 것입니다. 나는 그것에 대해서도 계속 생각할 것이다.
이것이 배낭 문제입니까? –
배낭 문제의 일반화입니다 : 차이점은 몇 가지 배낭 (사용 가능한 길이)이며, 모든 개체 (트림 길이)는 이어야한다는 차이점이 있습니다. 욕심 많은 알고리즘, 정수 프로그래밍, 가지 및 바운드 등 배낭과 동일한 방법을 시도 할 수 있습니다. 또한 1 차원 [포장 문제] (http : //en.wikipedia. org/wiki/Packing_problem). –
의견을 보내 주셔서 감사합니다. 예, 배낭 문제와 비슷하지만, @VincentZoonekynd는 여러 개의 배낭과 1 차원 (길이, 남은 부분 최소화, 무게가 아닌 사용되지 않는 용량 최소화 및 가치 극대화)에만 신경을 썼습니다. 포장 문제에 감사드립니다. K 문제를 살펴본 결과, 필자도 관련이 있다고 들리는 [빈 포장 문제] (https://en.wikipedia.org/wiki/Bin_packing_problem)를 보았습니다. – Hendy