GitHub găzduiește peste 50 de milioane de dezvoltatori care lucrează împreună pentru a găzdui și a revizui codul, pentru a gestiona proiecte și pentru a construi software împreună.

hakankhakank

GitHub este locul în care lumea construiește software

Milioane de dezvoltatori și companii își construiesc, livrează și își întrețin software-ul pe GitHub - cea mai mare și mai avansată platformă de dezvoltare din lume.

hakank/jsr_331/Diet.java /

  • Mergeți la fișierul T
  • Mergeți la linia L
  • Mergeți la definiția R
  • Copiați calea
pachet org.jcp.jsr331.hakan;
/ **
*
* Problema dietei în JSR331.
*
* Problemă de la http://www.mcs.vuw.ac.nz/courses/OPRE251/2006T1/Labs/lab09.pdf
* " "
* Dieta mea necesită ca toate alimentele pe care le consum să provină din unul dintre cele patru .basic
* grupe alimentare. (tort de ciocolată, înghețată, băutură răcoritoare și cheesecake).
* Fiecare felie (mare) de tort de ciocolată costă 50c,
* fiecare lingură de înghețată cu ciocolată costă 20c,
* fiecare sticlă de cola costă 30c,
* și fiecare bucată de tort de brânză cu ananas costă 80c.
*
* În fiecare zi, trebuie să inger cel puțin 500 de calorii,
* 6 oz de ciocolată,
* 10 oz de zahăr,
* și 8 oz de grăsime.
* Conținutul nutrițional pe unitate de fiecare aliment este prezentat în tabelul de mai jos.
*
* Formulează un model de programare liniar care poate fi folosit pentru a-mi satisface zilnic
* necesitate nutrițională la cost minim.
* Tipul de calorii Ciocolată Zahăr Grăsime
* Mancare (uncii) (uncii) (uncii)
* Tort de ciocolată (1 felie) 400 3 2 2
* Înghețată de ciocolată (1 lingură) 200 2 2 4
* Cola (1 sticlă) 150 0 4 1
* Tort de brânză cu ananas (1 bucată) 500 0 4 5
*
* " "
*
* Comparați cu următoarele modele:
* - Choco: http://www.hakank.org/choco/Diet.java
* - Cometă: http://www.hakank.org/comet/diet.co
* - ECLiPSE: http://www.hakank.org/eclipse/diet.ecl
* - Gecode/R: http://www.hakank.org/gecode_r/diet.rb
* - Gecode: http://www.hakank.org/gecode/diet.cpp
* - Google CP Solver: http://www.hakank.org/google_or_tools/diet1.py
* - JaCoP: http://www.hakank.org/JaCoP/Diet.java
* - MiniZinc: http://www.hakank.org/minizinc/diet1.mzn
* - SICStus: http://www.hakank.org/sicstus/diet1.pl
* - Tailor/Essence ': http://www.hakank.org/tailor/diet1.eprime
* - Zinc: http://www.hakank.org/minizinc/diet1.zinc
*
* Model de Hakan Kjellerstrand (hakank @ bonetmail.com)
* Vezi și http://www.hakank.org/jsr_331/
*
* /
import javax.constraints. *;
clasa publică Dieta
Var [] x;
int n; // numărul de ingrediente
int m; // numărul de tipuri de alimente
String [] food = < " Chocolate Cake ", " Chocolate ice cream ", " Cola ", " Pineapple cheesecake " >;
String [] ingrediente = < " Calories ", " Chocolate ", " Sugar ", " Fat " >;
Problema p = ProblemFactory. newProblem ("Dieta");
public static main main (String [] args)
Diet diet = dieta noua ();
dietă. defini ();
dietă. solve ();
>
// Definirea problemei
public void define ()
n = 4; // numărul de ingrediente
m = 4; // numărul de tipuri de alimente
int [] maxVals = < 200000, 2000000, 2000000, 200000 >;
int [] pret = < 50, 20, 30, 80 >; // în cenți
int [] limite = < 500, 6, 10, 8 >; // minim necesar pentru o dietă
// Mâncare: 0 1 2 3
int [] [] matrice =, // calorii
< 3, 2, 0, 0 >, // ciocolata
< 2, 2, 4, 4 >, // zahar
< 2, 4, 1, 5 >>; // gras
// definirea variabilelor
x = p. variableArray ("x", 0, 10, m);
Var [] sume = p. variableArray ("sume", 0, 10000, n);
Var cost = p. variabilă („cost”, 0, 100000);
// definește și postează constrângeri
încerca
for (int i = 0; i n; i ++)
p. post (p. scalProd (matrice [i], x), "=", sume [i]);
p. post (sume [i], "> =", limite [i]);
>
p. post (p. scalProd (preț, x), "=", cost);
p. log (p. getVars ());
> catch (Excepția e)
p. jurnal ("Eroare la constrângerile de postare:" + e);
Sistem. ieșire (- 1);
>
>
public void solve ()
//
// căutare
//
Solver solver = p. getSolver ();
Strategia SearchStrategy = solver. getSearchStrategy ();
// Strategy.setVars (x);
// Strategy.setVarSelectorType (VarSelectorType.INPUT_ORDER);
// Strategy.setVarSelectorType (VarSelectorType.MIN_VALUE);
// Strategy.setVarSelectorType (VarSelectorType.MAX_VALUE);
strategie. setVarSelectorType (VarSelectorType. MIN_DOMAIN);
// Strategy.setVarSelectorType (VarSelectorType.MIN_DOMAIN_MIN_VALUE);
// Strategy.setVarSelectorType (VarSelectorType.MIN_DOMAIN_RANDOM);
// Strategy.setVarSelectorType (VarSelectorType.RANDOM);
// Strategy.setVarSelectorType (VarSelectorType.MIN_DOMAIN_MAX_DEGREE);
// Strategy.setVarSelectorType (VarSelectorType.MIN_DOMAIN_OVER_DEGREE);
// Strategy.setVarSelectorType (VarSelectorType.MIN_DOMAIN_OVER_WEIGHTED_DEGREE);
// Strategy.setVarSelectorType (VarSelectorType.MAX_WEIGHTED_DEGREE);
// Strategy.setVarSelectorType (VarSelectorType.MAX_IMPACT);
// Strategy.setVarSelectorType (VarSelectorType.MAX_DEGREE);
// Strategy.setVarSelectorType (VarSelectorType.MAX_REGRET);
// Strategy.setValueSelectorType (ValueSelectorType.IN_DOMAIN);
strategie. setValueSelectorType (ValueSelectorType. MIN);
// Strategy.setValueSelectorType (ValueSelectorType.MAX);
// Strategy.setValueSelectorType (ValueSelectorType.MIN_MAX_ALTERNATE);
// Strategy.setValueSelectorType (ValueSelectorType.MIDDLE);
// Strategy.setValueSelectorType (ValueSelectorType.MEDIAN);
// Strategy.setValueSelectorType (ValueSelectorType.RANDOM);
// Strategy.setValueSelectorType (ValueSelectorType.MIN_IMPACT);
// Strategy.setValueSelectorType (ValueSelectorType.CUSTOM);
// solver.addSearchStrategy (noua StrategyLogVariables (solver));
//
// rezolva
//
// solver.traceExecution (adevărat);
Soluție soluție = rezolvator. findOptimalSolution (Obiectiv. MINIMIZARE, p. getVar („cost”));
if (soluție == nulă)
p. log („Fără soluție”);
> altfel
soluţie. Buturuga ();
Sistem. afară. println ("\ n Cost:" + soluție. getValue ("cost"));
for (int i = 0; i m; i ++)
Sistem. afară. println (food [i] + ":" + soluție. getValue ("x-" + i));
>
Sistem. afară. println ();
>
rezolvator. logStats ();
>
>

  • Copiați liniile
  • Copiați legătura permanentă
  • Vezi git blame
  • Referință în noul număr

  • Contactați GitHub
  • Prețuri
  • API
  • Instruire
  • Blog
  • Despre

Nu puteți efectua acțiunea în acest moment.

V-ați conectat cu o altă filă sau fereastră. Reîncărcați pentru a reîmprospăta sesiunea. V-ați deconectat într-o altă filă sau fereastră. Reîncărcați pentru a reîmprospăta sesiunea.