Obsah

Cvičení 2

LinProg 101

Úloha 1

   f = [ 0; 0; 0; 0; 0; -1 ]
   % f [ x1; x2; x3; x4; x5; lambda ]
   A = [ -1.27 -1.02 0 0 0 1; 0 -1.02 -4.7 -3.09 0 1; 0 0 0 -3.09 -9 1 ]
   b = [ 0; 0; 0; ]
   Aeq = [ 1 1 1 1 1 0 ]
   beq = [ 3000 ]
   lb = [ 0; 0; 0; 0; 0; -inf ]
   [x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb)

Marek Sacha 2009/10/01 01:54

Úloha 1 - Bonus

  f = [ 0; 0; 0; -1 ];
  A = [ -1.27 0 0 1; 0 -4.7 0 1; 0 0 -9 1; -1 -1 0 0; 0 -1 -1 0; -1 0 -1 0; -1 0 0 0; 0 -1 0 0; 0 0 -1 0];
  b = [ 0; 0; 0; -400; -400; -400; -400; -400; -400];
  Aeq = [ 1 1 1 0 ];
  beq = [ 3000 ];
  lb = [ 0; 0; 0; -inf ];
  res = linprog(f,A,b,Aeq,beq,lb)

Tomáš Látal 2009/10/07 23:25

Úloha 2

%opet pridani pomocne promenne
f = [0;0;1]; % 1, protoze maximalizuju 2x
%pomocny vektor jednotek
jednicky = ones(50,1); 
%prvni pulka podminek
A1 = [ x jednicky -jednicky]; %leve strany
b1 = y; %prave strany
%druha pulka podminek
A2 = [ -x -jednicky -jednicky]; %leve strany
b2 = -y; %prave strany
%podminky - celek
A = [ A1; A2]; %leve strany
b = [b1;b2]; %prave strany
%zjisteni reseni
sol = linprog(f,A,b);
%vykresleni hodnot
hold on; 
plot(x, y,'bo'); %puvodni body
plot(x, x*sol(1)+sol(2),'r'); %vysledna aproximujici primka
plot(x, x*sol(1)+sol(2)+sol(3),'r:'); %horni omezujici primka
plot(x, x*sol(1)+sol(2)-sol(3),'r:'); %dolni omezujici primka
hold off;

Martin Průcha 2009/10/01 18:11

Diskuze

Koukal už někdo na tu 1.úlohu? Zajímalo by mne, jak v MatLabu zapsat podmínku, že x1+…x5 = 3000… a jak má vypadat funkce f. Já jsem zatím vytvořil toto: f = [-1]; A=[1.27 1.02 0 0 0 0 1.02 4.7 3.09 0 0 0 0 3.09 9]; b=[1,1,1]; PS: jak se tu zalamuje? — Dominik Franek 2009/09/29 21:17

Já řeším tu druhou polovinu první úlohy a vyhazuje mi to pořád error: Exiting: One or more of the residuals, duality gap, or total relative error has grown 100000 times greater than its minimum value so far: the dual appears to be infeasible (and the primal unbounded). (The primal residual < TolFun=1.00e-008.)

Výsledné hodnoty to přitom hodí nulové, což je špatně. Nestalo se vám to nikomu? — Martin Zachar 2009/09/30 00:12

Jak Vám to vyšlo? Můj výsledek je, že vsadím jen na 10 (2694,6) a na 2 (305,4)… a jistá výhra je asi 2748,5 Kč… Má někdo lepší řešení? Popř. popište, jak jste na to šli…

Tak už se mi nějak podařilo i to druhé. Vyšlo mi to: a = 0.4997; b = -0.6757; odchylka = 0.1751; — Martin Zachar 2009/09/30 12:54

Nemaj byt ty sazky rozlozeny na jednotlivy moznosti nenulove? Je to i v omezujicich podminkach… jinak me tohle vyslo taky, ale nevim jestli je to spravny vysledek no… — Jan Kváča 2009/09/30 17:06

Myslím že ne, protože nám cvičící na cviku říkal, že máme najít takové řešení (jistou výhru), při které utržíme nejvyšší zisk. A pokud je tato varianta správně, pak by nemělo rozložení nic říkat.

mohli byste nejak nekdo prosim nastinit, jak jste postupovali? predevsim mi neni vubec jasne, co v 1.casti zadani znamena ta lambda, respektive, jak ziskat jeji hodnotu.. — Martin Průcha 2009/09/30 18:05


…keby to niekto chcel skusit v praxi, tu je zoznam bonusov :) (ikonka B pri nazve) http://www.oddsportal.com/bookmakers/