Advertisement
Guest User

Untitled

a guest
May 25th, 2017
483
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AIMMS 8.54 KB | None | 0 0
  1. public void solve() throws IloException {
  2.         cplex = new IloCplex();
  3.         cplex.setOut(null);
  4.  
  5.         //zmienna przedstawiajace produkcje przez dana fabryke
  6.         IloNumVar[] produkcje = new IloNumVar[2];
  7.         //zmiene przedstawiajace stan magazynow
  8.         IloNumVar[] magazyny = new IloNumVar[2];
  9.         //zmienna przedstawiajaca koszt dostarczenia do klienta
  10.         IloNumVar[] koszt_do_klientow = new IloNumVar[2];
  11.  
  12.  
  13.         List<IloConstraint> constraints = new ArrayList<IloConstraint>();
  14.  
  15.         //INICJALZACJA ZMIENNYCH
  16.         IloIntVar ilosc_z_F1_do_M1 = cplex.intVar(0, Integer.MAX_VALUE);
  17.  
  18.         IloIntVar ilosc_z_F1_do_K1 = cplex.intVar(0, Integer.MAX_VALUE);
  19.         IloIntVar ilosc_z_F1_do_K2 = cplex.intVar(0, Integer.MAX_VALUE);
  20.  
  21.         IloIntVar ilosc_z_F2_do_M2 = cplex.intVar(0, Integer.MAX_VALUE);
  22.  
  23.         IloIntVar ilosc_z_F2_do_K1 = cplex.intVar(0, Integer.MAX_VALUE);
  24.         IloIntVar ilosc_z_M2_do_K1 = cplex.intVar(0, Integer.MAX_VALUE);
  25.  
  26.  
  27.         //  IloNumVar ilosc_z_F1_do_K2 = cplex.numVar(0, Double.MAX_VALUE);
  28.         IloIntVar ilosc_z_M2_do_K2 = cplex.intVar(0, Integer.MAX_VALUE);
  29.  
  30.         IloIntVar ilosc_z_M1_do_K2 = cplex.intVar(0, Integer.MAX_VALUE);
  31.  
  32.         IloIntVar produkcja_F1 = cplex.intVar(0, Integer.MAX_VALUE);
  33.         IloIntVar produkcja_F2 = cplex.intVar(0, Integer.MAX_VALUE);
  34.         constraints.add(cplex.addGe(150, produkcja_F1));
  35.         constraints.add(cplex.addGe(200, produkcja_F2));
  36.  
  37.  
  38.         double koszt_z_M2_K1;
  39.         double koszt_z_M2_do_K2;
  40.         double koszt_z_M1_do_K2;
  41.         double koszt_z_F1_do_K1;
  42.         double koszt_z_F1_do_K2;
  43.         double koszt_z_F2_do_K1;
  44.  
  45.         IloIntVar f = cplex.boolVar();
  46. //
  47. //        IloIntVar flagi_dod2 = cplex.boolVar();
  48.  
  49.         double M1_MAX = 110;
  50.  
  51.         double M2_MAX = 150;
  52.  
  53. //        IloNumVar koszt_z_M1_do_K2 = cplex.numVar(0, Double.MAX_VALUE);
  54. //        IloNumVar koszt_z_M2_K1 = cplex.numVar(0, Double.MAX_VALUE);
  55. //        IloNumVar koszt_z_M2_do_K2 = cplex.numVar(0, Double.MAX_VALUE);
  56. //        IloNumVar koszt_z_F1_do_K1 = cplex.numVar(0, Double.MAX_VALUE);
  57. //        IloNumVar koszt_z_F1_do_K2 = cplex.numVar(0, Double.MAX_VALUE);
  58. //        IloNumVar koszt_z_F2_do_K1 = cplex.numVar(0, Double.MAX_VALUE);
  59.  
  60.         IloNumVar koszt_do_K1 = cplex.numVar(0, Double.MAX_VALUE);
  61.         IloNumVar koszt_do_K2 = cplex.numVar(0, Double.MAX_VALUE);
  62.         IloNumVar koszt = cplex.numVar(0, Double.MAX_VALUE);
  63.  
  64.         //ograniczenia na ilosci produkcyjne
  65.         IloNumVar ilosc_K1 = cplex.numVar(0, Integer.MAX_VALUE);
  66.         constraints.add(cplex.addEq(130, ilosc_K1));
  67.         IloNumVar ilosc_K2 = cplex.numVar(0, Integer.MAX_VALUE);
  68.         constraints.add(cplex.addEq(90, ilosc_K2));
  69.         //KONIEC
  70.  
  71.  
  72.         //NADAWANIE WARTOSCI
  73.         koszt_z_F1_do_K1 = 0.8;
  74.         koszt_z_F2_do_K1 = 1.8;
  75.         koszt_z_M2_K1 = 1.2;
  76.         koszt_z_F1_do_K2 = 1.8;
  77.         koszt_z_M1_do_K2 = 0.9;
  78.         koszt_z_M2_do_K2 = 1.6;
  79.  
  80.  
  81.         //KONIEC
  82.         //NADAWANIE KONSTREJNOW
  83.  
  84.         //ograniczenia na magazyny
  85.         constraints.add(cplex.addGe(M1_MAX, ilosc_z_F1_do_M1));
  86.         constraints.add(cplex.addGe(M2_MAX, ilosc_z_F2_do_M2));
  87.  
  88.         // produkcja_F1 = ilosc_z_F1_do_M1+ilosc_z_F1_do_K2  + ilosc_z_F1_do_K1;
  89.         //ograniczenie na dostarczenie zF1
  90.         constraints.add(cplex.addGe(produkcja_F1, cplex.sum(cplex.sum(ilosc_z_F1_do_M1, ilosc_z_F1_do_K2), ilosc_z_F1_do_K1)));
  91.  
  92.         //produkcja_F2 = ilosc_z_F2_do_M2+ilosc_z_F2_do_K1 ;
  93.         //ograniczenie na dostarczenie zF1
  94.         constraints.add(cplex.addGe(produkcja_F2, cplex.sum(ilosc_z_F2_do_M2, ilosc_z_F2_do_K1)));
  95.  
  96. //        ilosc_K1 = ilosc_z_M2_do_K1 + ilosc_z_F1_do_K1+ilosc_z_F2_do_K1;
  97.         //ograniczenie na zapotrzebowanie k1
  98.         constraints.add(cplex.addEq(ilosc_K1, cplex.sum(cplex.sum(ilosc_z_M2_do_K1, ilosc_z_F1_do_K1), ilosc_z_F2_do_K1)));
  99.  
  100.         // ilosc_K2 = ilosc_z_F1_do_K2 + ilosc_z_M1_do_K2 + ilosc_z_M2_do_K2;
  101.         //ograniczenie na zapotrzebowanie k2
  102.         constraints.add(cplex.addEq(ilosc_K2, cplex.sum(cplex.sum(ilosc_z_F1_do_K2, ilosc_z_M1_do_K2), ilosc_z_M2_do_K2)));
  103.  
  104.         //  koszt_do_K1 = ilosc_z_M2_do_K1 * koszt_z_M2_K1 + ilosc_z_F1_do_K1*koszt_z_F1_do_K1 + ilosc_z_F2_do_K1*koszt_z_F1_do_K1;
  105.         constraints.add(
  106.                 cplex.addEq(
  107.                         koszt_do_K1,
  108.                         cplex.sum(
  109.                                 cplex.sum(
  110.                                         cplex.prod(ilosc_z_M2_do_K1, koszt_z_M2_K1),
  111.                                         cplex.prod(ilosc_z_F1_do_K1, koszt_z_F1_do_K1)),
  112.                                 cplex.prod(ilosc_z_F2_do_K1, koszt_z_F2_do_K1))));
  113.         // koszt_do_K2 = ilosc_z_F1_do_K2 * koszt_z_F1_K2 + ilosc_z_M1_do_K2*koszt_z_M1_do_K2 + ilosc_z_M2_do_K2*koszt_z_M2_do_K2;
  114.         constraints.add(cplex.addEq(
  115.                 koszt_do_K2,
  116.                 cplex.sum(
  117.                         cplex.sum(
  118.                                 cplex.prod(ilosc_z_F1_do_K2, koszt_z_F1_do_K2),
  119.                                 cplex.prod(ilosc_z_M1_do_K2, koszt_z_M1_do_K2)),
  120.                         cplex.prod(ilosc_z_M2_do_K2, koszt_z_M2_do_K2))));
  121.  
  122.  
  123. //        koszt_M1 = ilosc_z_F1_do_M1*0.5;//+ dziwnyIF;
  124. //        constraints.add(cplex.addEq(koszt_M1,cplex.prod(ilosc_z_F1_do_K1,0.5)));
  125. //        koszt_M2 = ilosc_z_F1_do_M2+0.3;//+dziwnyIf;
  126. //        constraints.add(cplex.addEq(koszt_M2,cplex.prod(ilosc_z_F2_do_M2,0.3)));
  127. //        koszt = koszt_do_K1 + koszt_do_K2 -koszt_M1-koszt_M2;
  128.         IloNumVar koszt1 = cplex.intVar(0, 10);
  129.         IloNumVar koszt2 = cplex.intVar(0, 10);
  130.  
  131.         constraints.add(cplex.addEq(
  132.                 koszt,
  133.                 cplex.diff(
  134.                         cplex.sum(koszt_do_K1, koszt_do_K2),
  135.                         cplex.sum(
  136.                                 cplex.prod(ilosc_z_F1_do_M1, 0.5),
  137.                                 cplex.prod(ilosc_z_F2_do_M2, 0.3)))));
  138.  
  139.  
  140.         IloIntVar dupa = cplex.intVar(0, Integer.MAX_VALUE);
  141.         IloIntVar dupa1 = cplex.intVar(0, Integer.MAX_VALUE);
  142.  
  143.  
  144.         cplex.add(cplex.ifThen(cplex.ge(ilosc_z_F1_do_M1,88), (cplex.eq(koszt1,10))));
  145.         cplex.add(cplex.ifThen(cplex.le(ilosc_z_F1_do_M1,88), (cplex.eq(koszt1,0))));
  146.         constraints.add(cplex.addEq(dupa, cplex.sum(koszt,koszt1)));
  147.         //  boolean d= constraints.add(cplex.ifThen(cplex.ge(ilosc_z_F1_do_M1,60), (cplex.eq(a,10))));
  148.         cplex.add(cplex.ifThen(cplex.ge(ilosc_z_F2_do_M2,120), (cplex.eq(koszt2,10))));
  149.         cplex.add(cplex.ifThen(cplex.le(ilosc_z_F2_do_M2,120), (cplex.eq(koszt2,0))));
  150.         constraints.add(cplex.addEq(dupa1, cplex.sum(dupa,koszt2)));
  151.  
  152.         //ogRANICZENIA NA ilosc z fabryk do k
  153.         constraints.add(cplex.addEq(ilosc_z_F1_do_M1, ilosc_z_M1_do_K2));
  154.  
  155.         constraints.add(cplex.addEq(ilosc_z_F2_do_M2, cplex.sum(ilosc_z_M2_do_K1, ilosc_z_M2_do_K2)));
  156.  
  157.         //constraints.add(cplex.ifThen(cplex.le(ilosc_z_F1_do_M1,160), cplex.eq(a,0)));
  158. //        constraints.add(cplex.addGe(ilosc_z_F1_do_M1, cplex.prod(cplex.diff(1.0,flagi_dod1),-LIMIT)));
  159. //        constraints.add(cplex.addLe(ilosc_z_F1_do_M1, cplex.prod(flagi_dod1,LIMIT)));
  160.         //KONIEC
  161.         cplex.addMinimize(dupa1);
  162.  
  163.         cplex.setParam(IloCplex.Param.Simplex.Display, 0);
  164.  
  165.         if (cplex.solve()) {
  166.  
  167.             System.out.println("koszt calkowity " + cplex.getValue(koszt));
  168.             System.out.println("ilosc_z_F1_do_K1 " + cplex.getValue(ilosc_z_F1_do_K1));
  169.             System.out.println("ilosc_z_F1_do_M1 " + cplex.getValue(ilosc_z_F1_do_M1));
  170.             System.out.println("ilosc_z_F1_do_K2 " + cplex.getValue(ilosc_z_F1_do_K2));
  171.             System.out.println("ilosc_z_F2_do_K1 " + cplex.getValue(ilosc_z_F2_do_K1));
  172.             System.out.println("ilosc_z_F2_do_M2 " + cplex.getValue(ilosc_z_F2_do_M2));
  173.             System.out.println("ilosc_z_M1_do_K2 " + cplex.getValue(ilosc_z_M1_do_K2));
  174.             System.out.println("ilosc_z_M2_do_K2  " + cplex.getValue(ilosc_z_M2_do_K2));
  175.             System.out.println("ilosc_z_M2_do_K1 " + cplex.getValue(ilosc_z_M2_do_K1));
  176.  
  177.             System.out.println("ilosc_K2  " + cplex.getValue(ilosc_K2));
  178.             System.out.println("ilosc_K1 " + cplex.getValue(ilosc_K1));
  179.  
  180.             System.out.println("dupa1 " + cplex.getValue(dupa1));
  181.             //System.out.println(d);
  182.  
  183.             ;
  184.         }
  185.         else{
  186.             System.out.println("Coś nie poszło!");
  187.             System.out.println("Przyczyna: " + cplex.getCplexStatus().toString());
  188.         }
  189.         cplex.end();
  190.  
  191.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement