Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.10 KB | None | 0 0
  1. package plecakowy;
  2.  
  3. /*
  4. Rozwiazanie decyzyjnego problemu plecakowego
  5. Metoda Monte-Carlo
  6. */
  7.  
  8.  
  9. import java.util.*;
  10.  
  11. class PlecakowyMonteCarlo
  12. {
  13.  
  14. static final int N = 6; // liczba przedmiotow
  15. static final int MAX_V = 10; // objetosc plecaka
  16.  
  17. final static int[] V = {2,6,3,3,1,2}; // objetości przedmiotów
  18. final static int[] W = {4,6,5,10,2,7}; // wartości przedmiotów
  19.  
  20. public static void main(String[] args)
  21. {
  22. String optKonfig = new String();
  23. int optV = -1;
  24. int optW = 0;
  25.  
  26. Random los = new Random();
  27.  
  28. for (int i = 0; i < 10; i++) //Bedzie 10 prob losowania
  29. {
  30. int[] ustaw = new int[N]; //Inicjujemy wstepne ustawienie przedmiotow
  31. for (int j = 0; j < N; j++) ustaw[j] = j;
  32.  
  33. for (int j = 0; j < N; j++) //tasowanie przedmiotow
  34. {
  35. int rndIndex = los.nextInt(N);
  36. if (rndIndex != j)
  37. {
  38. int pom = ustaw[j]; //Zamiana elementow
  39. ustaw[j] = ustaw[rndIndex];
  40. ustaw[rndIndex] = pom;
  41. }
  42. }
  43.  
  44.  
  45. String locKonfig = new String();
  46. int sumV = 0;
  47. int sumW = 0;
  48. int j = 0;
  49.  
  50. //Bierzemy przedmioty do plecaka od poczatku tablicy dopoki sie mieszcza
  51. while ((j < N) && (sumV + V[ustaw[j]] <= MAX_V))
  52. {
  53. sumV = sumV + V[ustaw[j]];
  54. sumW = sumW + W[ustaw[j]];
  55. locKonfig = locKonfig + " " + ustaw[j];
  56. j++;
  57. }
  58.  
  59. if (sumW > optW)
  60. {
  61. optW = sumW;
  62. optV = sumV;
  63. optKonfig = locKonfig;
  64. }
  65.  
  66. }
  67.  
  68. System.out.println("Calkowita objetość: " + optV);
  69. System.out.println("Calkowita wartosc: " + optW);
  70. System.out.println("Konfiguracja: " + optKonfig);
  71. System.out.println("Niewykorzystana objętość: " + (MAX_V - optV));
  72. }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement