All pastes #476569 Raw Edit

problem173

public text v1 · immutable
·published 2007-05-08 05:27 UTC
rendered paste body
%Problem 173.
%
%In this optimization problem, the student is asked to add slack 
%variables to a set of inequalities, and then to enter the 
%corresponding augmented matrix.  This matrix is checked before 
%proceeding any further. Once this has been done, the student is
%asked to find and record all basic solutions, and hence find the
%maximum of a function f(X1,X2).
%
%One hint is provided in the latter part of the problem.


clear variables

global undo;
global hintnumber
global noprint;
global err;

hintnumber=173;
err=0;
noprint=0;
N=0;
M=0;

r='nothing'; %this prevents Matlab error on first pass of while loop
correcto=[2 -1 1 0 0;3 1 0 1 15];
A=[1];

clc
sprintf('%s\n\n%s\n\n%s\n\n%s\n\n%s\n\n%s\n%s\n%s\n\n%s\n%s ','Problem 173.','Consider the convex set C defined by the inequalities','               X2 >= 2 X1','      3 X1  +  X2 <=  15','      X1 >= 0, X2 >= 0','Add slack variables and then enter the augmented matrix as A.','Enter "discuss" to have the matrix checked by the computer and to see the rest','of the problem.','One hint is available','Enter "stop" to leave the problem')


while(strcmp(r,'stop')==0)  %outer loop
  r=input('problem 173>>','s');

    if (strcmp(r,'stop')==1)
     return
    end


    if (findstr(r,'discuss')>=1)
          if (size(A)==size(correcto))
            if (A==correcto)
                clc
                sprintf('%s\n%s\n%s\n%s\n%s','Your matrix A is correct. Now find and record all basic solutions.','Hence find the maximum of f(X1,X2) = 5 X1 +  X2','When you are satisfied you have done the above, enter "stop"','to leave the problem. There is one hint available')
           
                while(strcmp(r,'stop')==0)  %inner loop
                      r=input('problem 173>>','s');

                      if (strcmp(r,'stop')==1)
                        return
                      end

                      if (findstr(r,'hint')>=1)
                          hint %calls hint m-file
                      elseif (findstr(r,'discuss')>=1)
                          sprintf('%s\n\n%s\n%s\n%s\n%s\n%s','There is no more discussion for this problem.','Find and record all basic solutions.','Hence find the maximum of f(X1,X2) = 5 X1 +  X2','When you are satisfied you have done the above, enter "stop"','to leave the problem. There is one hint available')
                      else
                      eval(r,'errormessage')
                         noprint=0; %resets error suppression
                           err=0;             

                      end %inner if-else loop end

               end %inner while loop end

            


            else
             clc 
            sprintf('%s\n\n%s\n\n%s\n\n%s\n\n%s\n\n%s\n%s\n%s\n\n%s\n%s ','The matrix A you have entered is INCORRECT. Please try again.','Consider the convex set C defined by the inequalities','               X2 >= 2 X1','      3 X1  +  X2 <=  15','      X1 >= 0, X2 >= 0','Add slack variables and then enter the augmented matrix as A.','Enter "discuss" to have the matrix checked by the computer and to see the rest','of the problem.','One hint is available','Enter "stop" to leave the problem')
            end

           else %tied to sizecheck "if"
           clc
           sprintf('%s\n\n%s\n\n%s\n\n%s\n\n%s\n\n%s\n%s\n%s\n\n%s\n%s ','The matrix A you have entered has INCORRECT dimensions. Please try again.','Consider the convex set C defined by the inequalities','               X2 >= 2 X1','      3 X1  +  X2 <=  15','      X1 >= 0, X2 >= 0','Add slack variables and then enter the augmented matrix as A.','Enter "discuss" to have the matrix checked by the computer and to see the rest','of the problem.','One hint is available','Enter "stop" to leave the problem')
           
           end %tied to sizecheck "if"
           



    elseif (findstr(r,'hint')>=1)
      sprintf('%s\n%s','There is a hint available once you have entered the','matrix A correctly.')

    else
     eval(r,'errormessage')
     noprint=0; %resets error suppression
     err=0;             

  end %if-else loop end

end %while loop end