Toto je starší verze dokumentu!
Vše se dá rychle pochopit z tohoto PDF: opt_linprog.pdf http://dl.getdropbox.com/u/1469682/opt_linprog.pdf
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
%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
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