3 차원 배낭 문제를 해결하고 싶습니다.Java에서 bruteforce를 사용하여 3D 배낭 해결
다른 너비, 높이, 길이 및 값을 가진 여러 상자가 있습니다. 나는 지정된 공간이 있고 그 공간에 상자를 넣어 최적의 이익을 얻을 것입니다. 나는 bruteforce를 사용하여 그것을하고 싶다.
저는 Java로 프로그래밍하고 있습니다.
public void solveBruteforce(double freeX, double freeY, double freeZ) {
for(int i = 0; i < numOfBoxes; i++) {
for(int j = 0; j < BoxObject.numOfVariations; j++) {
if(possible to place box) {
place(box);
add(value);
solveBruteforce(newX, newY, newZ);
}
}
}
remove(box);
remove(value);
}
하지만 각 줄은 y 및 z 다른 무료 X를 가지고 문제를 얻을 것이다 : 는 그래서, 재귀와 함께 할 것을 시도했다.
다른 방법으로 누군가 나를 찾을 수 있습니까?
우선, 귀하의 답변에 감사드립니다. 나는 탐욕스러운 알고리즘을 알고 있지만, 당신이 점유 나무에 관해 무엇을 말하고 있는지 이해하지 못합니다. 그것을하는 또 다른 방법이 있습니까? 또는 주어진 길이, 높이 및 너비로 3 또는 4 개의 상자로 문제의 크기를 줄입니까? – Nando
@ user1110725 Octree는 매번 점유 할 때마다 모든 포인트를 저장하는 것을 막습니다. 단지 로그 (점) 만 확인해야합니다. 흠, x, y, z 만 지정하여 완전히 정의 할 수있는 3 ~ 4 개의 상자를 원한다면 최대 3 개의면 크기를 가지며, 평행선과 축 레이아웃 만 허용하는 경우 각각에 대해 6 가지 회전이 가능합니다. 상자. 공간이 * 많은 * 위치 선택 항목이있는 상자보다 훨씬 크기 때문에 * 더 쉽습니다. 각 상자의 모든 케이스를 회전시켜야합니다. 그리고 (4 상자라면) 24 개의 주문을 살펴보십시오. 또한, 구글 "최적의 박스 포장". –