Advertisement
Guest User

Untitled

a guest
May 30th, 2015
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.85 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Scanner;
  3. import java.util.Set;
  4. import java.util.concurrent.ConcurrentHashMap;
  5. import java.io.BufferedReader;
  6. import java.io.BufferedWriter;
  7. import java.io.FileWriter;
  8. import java.io.IOException;
  9.  
  10. public class Strategia1 {
  11.     int max;
  12.     int zakres;
  13.     int p;
  14.     int ilozap = 0;
  15.     int migracja = 0;
  16.     int s ;
  17.     int r = 0;
  18.     int iloscodwolan = 0;
  19.     ConcurrentHashMap<Integer, Integer> zlecenia = new ConcurrentHashMap<Integer, Integer>();
  20.     ConcurrentHashMap<Integer, Integer> procobc = new ConcurrentHashMap<Integer, Integer>();
  21.     ConcurrentHashMap<Integer, Integer> przypisane = new ConcurrentHashMap<Integer, Integer>();
  22.     Scanner sc = new Scanner(System.in);
  23.  
  24.     public void Generowanie() throws IOException {
  25.         int czas;
  26.         int obc;
  27.         System.out.println("Podaj maksymalny czas wykonania się procesu");
  28.         int a = sc.nextInt();
  29.         System.out.println("Podaj maksymalne obciążenie  dla jednego procesu");
  30.         int b = sc.nextInt();
  31.         System.out.println("Podaj ilość procesów");
  32.         int i = 0;
  33.         int c = sc.nextInt();
  34.         System.out.println("Podaj ilość procesorów");
  35.         int d = sc.nextInt();
  36.         System.out.println("Podaj maksymalne obciążenie dla procesora");
  37.         max = sc.nextInt();
  38.         System.out.println("Podaj maksymalną ilośc zapytań");
  39.         zakres = sc.nextInt();
  40.         System.out.println("Podaj progową wartość obciążenia ");
  41.         p = sc.nextInt();
  42.         System.out.println("Podaj minimalną wartość obciążenia (r z zadania) ");
  43.         r = sc.nextInt();
  44.         do {
  45.             if (b < c) {
  46.                 System.out.println("Potrzebujesz więcej kluczy niż zgłoszeń");
  47.             }
  48.             czas = (int) (Math.random() * a);
  49.             obc = (int) (Math.random() * b);
  50.             if (!zlecenia.containsKey(obc)) {
  51.                 zlecenia.put(obc, czas);
  52.                 i++;
  53.             }
  54.             for (int z = 0; z < d; z++) {
  55.                 procobc.put(z, 0);
  56.             }
  57.         } while (i < c);
  58.         Wypisz();
  59.         System.out.println("Lista zleceń" + zlecenia);
  60.         System.out.println("Procesory" + procobc);
  61.     }
  62.  
  63.     public void Wypisz() throws IOException {
  64.         Set keys = zlecenia.keySet();
  65.         FileWriter f = new FileWriter("C:/Users/Jarema/Desktop/PWR/angie.txt");
  66.         BufferedWriter abba = new BufferedWriter(f);
  67.         for (Object o : keys) {
  68.             abba.write((int) o + ";" + zlecenia.get(o) + ";"
  69.                     + (procobc.size() - 1) + ";" + p + ";" + max + ";" + r + ";");
  70.             abba.newLine();
  71.         }
  72.         abba.write("Koniec");
  73.         abba.close();
  74.     }
  75.    
  76.     public void WypiszDane() throws IOException {
  77.         FileWriter f = new FileWriter("C:/Users/Jarema/Desktop/PWR/Dane.txt");
  78.         BufferedWriter abba = new BufferedWriter(f);
  79.             abba.write(ilozap+ ";" + migracja + ";"
  80.                     + s);
  81.             abba.newLine();
  82.         abba.write("Koniec");
  83.         abba.close();
  84.     }
  85.  
  86.     public void Strat1() throws IOException {
  87.         s = OdchŚred();
  88.         int calka = 0;
  89.         int kontrolka = 0; // ilośc zapytań na dany proces
  90.         Set keys = zlecenia.keySet();
  91.         Object x = 1;
  92.         System.out.println(max);
  93.         do {
  94.             for (Object o : keys) {
  95.                 if ((int) (Math.random() * 10) > 5) {
  96.                     boolean przydzielony = false;
  97.                     if (!przypisane.containsKey(o)) {
  98.                         do {
  99.  
  100.                             kontrolka++;
  101.                             ilozap++;
  102.                             int z = (int) (Math.random() * procobc.size());
  103.  
  104.                             if ((procobc.get(z) + (int) o) < max) {
  105.  
  106.                                 migracja++;
  107.                                 System.out.println("Procesowi " + o
  108.                                         + " przydzielono miejsce na " + z);
  109.                                 procobc.put((int) z, procobc.get(z)
  110.                                         + (int) zlecenia.get(o));
  111.                                 przypisane.put((Integer) o, z);
  112.                                 przydzielony = true;
  113.                                 calka++;
  114.                             }
  115.                             if (kontrolka > zakres && procobc.get(z) < max) {
  116.  
  117.                                 System.out
  118.                                         .println("Procesowi "
  119.                                                 + o
  120.                                                 + " przydzielono miejsce na "
  121.                                                 + x
  122.                                                 + " Albowiem limit zapytań przekroczonym był");
  123.                                 procobc.put((int) z, procobc.get(z)
  124.                                         + (int) zlecenia.get(o));
  125.                                 przypisane.put((Integer) o, z);
  126.                                 przydzielony = true;
  127.                                 calka++;
  128.                             }
  129.  
  130.                             if (kontrolka >= procobc.size()) {
  131.                                 System.out.println("Procesowi " + o
  132.                                         + " przydzielono miejsce na " + x
  133.                                         + " z powodu zapchania reszty");
  134.                                 procobc.put((int) z, procobc.get(z) + (int) o);
  135.                                 przypisane.put((Integer) o, z);
  136.                                 przydzielony = true;
  137.                                 calka++;
  138.                             }
  139.                             if (Przeciążone()){
  140.                                 break;
  141.                             }
  142.                         } while (przydzielony == false);
  143.                     }
  144.  
  145.                     kontrolka = 0;
  146.                 }
  147.  
  148.                 if ((int) o <= calka && przypisane.get(o) != null) {
  149.                     System.out.println("Proces " + o + " Dotarł do końca ");
  150.                     int a = procobc.get(przypisane.get(o)) - zlecenia.get(o);
  151.                     procobc.put(przypisane.get(o), a);
  152.                     if (!przypisane.contains(o)) {
  153.                         procobc.put(przypisane.get(o), 0);
  154.                     }
  155.                     zlecenia.remove(o);
  156.                     przypisane.remove(o);
  157.                 }
  158.  
  159.                 System.out.println("Lista zleceń" + zlecenia);
  160.                 System.out.println("Procesory" + procobc);
  161.                 System.out.println("Przypisania " + przypisane);
  162.             }
  163.             calka++;
  164.         } while (ToJużJestKoniec() == false);
  165.         System.out
  166.                 .println("Podsumowanie : Odchylenie wartości od tej z podpunktu A wynosi 0,zapytania o obciążenie "
  167.                         + ilozap);
  168.         System.out.println("Ilość migracji " + migracja
  169.                 + " a średnie obciążenie procesora to  " + s);
  170.         WypiszDane();
  171.     }
  172.     public boolean Przeciążone(){
  173.         Set keys = procobc.keySet();
  174.         for (Object o : keys) {
  175.             if (procobc.get(o) < max) {
  176.                 return false;
  177.             }
  178.         }
  179.         return true;
  180.     }
  181.     public int DajZapytania(){
  182.         return ilozap;
  183.     }
  184.     public int DajMigracje(){
  185.         return migracja;
  186.     }
  187.     public int DajSrednia(){
  188.         return s;
  189.     }
  190.  
  191.    
  192.     public int Obciazenie() {
  193.         Set keys = zlecenia.keySet();
  194.         int suma = 0;
  195.         for (Object o : keys) {
  196.             suma += zlecenia.get(o);
  197.         }
  198.         return suma;
  199.     }
  200.  
  201.     public int OdchŚred() {
  202.         return (Obciazenie() / procobc.size());
  203.     }
  204.  
  205.     public boolean ToJużJestKoniec() {
  206.         Set keys = zlecenia.keySet();
  207.         for (Object o : keys) {
  208.             if (zlecenia.get(o) > 0) {
  209.                 return false;
  210.             }
  211.         }
  212.         return true;
  213.     }
  214.  
  215.     public void DajPorównanie() throws IOException{
  216.         Strat1();
  217.         Strategia2 q = new Strategia2();
  218.         q.Ska();
  219.         Strategia3 w = new Strategia3();
  220.         w.Ska();
  221.         System.out
  222.         .println("Podsumowanie 1: Odchylenie wartości od tej z podpunktu A wynosi 0,zapytania o obciążenie "
  223.                 + DajZapytania());
  224. System.out.println("Ilość migracji " + DajMigracje()
  225.         + " a średnie obciążenie procesora to  " + DajSrednia());
  226.  
  227. System.out.println("Podsumowanie 2: zapytania o obciążenie " + q.DajZapytania()
  228.         + " (zmiana " + (ilozap - q.DajZapytania()) + " względem A)");
  229. System.out.println("Ilość migracji " +q.DajMigracje()
  230.         + (" zmiana " + (migracja - q.DajMigracje()) + " względem A")
  231.         + " a średnie obciążenie procesora to  " + w.DajSrednia()
  232.         + (" zmiana " + (s - q.DajSrednia() + " względem A")));
  233.  
  234. System.out.println("Podsumowanie 3: zapytania o obciążenie " + q.DajZapytania()
  235.         + " (zmiana " + (ilozap - w.DajZapytania()) + " względem A)");
  236. System.out.println("Ilość migracji " +w.DajMigracje()
  237.         + (" zmiana " + (migracja - w.DajMigracje()) + " względem A")
  238.         + " a średnie obciążenie procesora to  " + w.DajSrednia()
  239.         + (" zmiana " + (s - w.DajSrednia()) + " względem A"));
  240.     }
  241.    
  242.     public void menu() throws IOException {
  243.         boolean check = false;
  244.         while (check == false) {
  245.             System.out.println("[1] Podaj dane");
  246.             System.out.println("[2] Strategia 1");
  247.             System.out.println("[3] Strategia 2");
  248.             System.out.println("[4] Strategia 3");
  249.             System.out.println("[5] Porównanie");
  250.             int a = sc.nextInt();
  251.             switch (a) {
  252.             case 1:
  253.                 Generowanie();
  254.                 break;
  255.             case 2:
  256.                 Strat1();
  257.                 break;
  258.             case 3:
  259.                 Strategia2 c = new Strategia2();
  260.                 c.Ska();
  261.                 break;
  262.             case 4:
  263.                 Strategia3 d = new Strategia3();
  264.                 d.Ska();
  265.                 break;
  266.             case 5:
  267.                 DajPorównanie();
  268.                 break;
  269.             }
  270.         }
  271.     }
  272.  
  273.     public static void main(String[] args) throws IOException {
  274.         Strategia1 a = new Strategia1();
  275.         a.menu();
  276.     }
  277. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement