classdef OptimizationExpression< matlab.mixin.CustomDisplay
%OPTIMIZATIONEXPRESSION Expressions for optimization and equation problems
%
%   OptimizationExpression contains one or more mathematical expressions
%   composed of OptimizationVariables.
%
%   Construct an objective expression by performing mathematical operations
%   on optimization variables. For example,
%
%   x = optimvar('x');
%   y = optimvar('y');
%   expr = 2*x + 3*y
%
%   Use the OPTIMEXPR function to create an array of all zero
%   OptimizationExpressions.
%
%   See also OPTIMEXPR

     
    %   Copyright 2016-2020 The MathWorks, Inc.

    methods
        function out=ctranspose(~) %#ok<STOUT>
            %' Transpose OptimizationExpression.
            %
            %   EXPR' transposes the OptimizationExpression, EXPR.
        end

        function out=eq(~) %#ok<STOUT>
            %== EQ Create an OptimizationEquality.
            %
            %   C = E1 == E2 creates an OptimizationEquality.
            %
            %   Each of E1,E2 is either an OptimizationExpression,
            %   OptimizationVariable or numeric array.
            %
            %   Example:
            %   x = optimvar('x', 2, 1);
            %   c = 2*x == 3
        end

        function out=ge(~) %#ok<STOUT>
            %>= GE Create an OptimizationInequality.
            %
            %   C = E1 >= E2 creates an OptimizationInequality.
            %
            %   Each of E1,E2 is either an OptimizationExpression,
            %   OptimizationVariable or numeric array.
            %
            %   Example:
            %   x = optimvar('x', 2, 1);
            %   c = 2*x >= 3
        end

        function out=gt(~) %#ok<STOUT>
            %> GT Greater than for OptimizationExpressions.
            %
            %   E1 > E2 is not supported for OptimizationExpressions.
            %
            %   Use >= instead.
        end

        function out=horzcat(~) %#ok<STOUT>
            %HORZCAT Horizontal concatenation of OptimizationExpressions.
            %
            %   See also HORZCAT.
        end

        function out=isempty(~) %#ok<STOUT>
            %ISEMPTY True for empty OptimizationExpression array.
            %
            %   See also ISEMPTY.
        end

        function out=isscalar(~) %#ok<STOUT>
            %ISSCALAR True if OptimizationExpression is scalar.
            %
            %   See also ISSCALAR.
        end

        function out=ldivide(~) %#ok<STOUT>
            %.\ LDIVIDE Left array divide for OptimizationExpressions.
            %
            %   See also .\, LDIVIDE.
        end

        function out=le(~) %#ok<STOUT>
            %<= LE Create an OptimizationInequality.
            %
            %   C = E1 <= E2 creates an OptimizationInequality.
            %
            %   Each of E1,E2 is either an OptimizationExpression,
            %   OptimizationVariable or numeric array.
            %
            %   Example:
            %   x = optimvar('x', 2, 1);
            %   c = 2*x <= 3
        end

        function out=length(~) %#ok<STOUT>
            % LENGTH(EXPR) Length of OptimizationExpression.
            % array.
            %
            %   See also LENGTH.
        end

        function out=lt(~) %#ok<STOUT>
            %< LT Less than for OptimizationExpressions.
            %
            %   E1 < E2 is not supported for OptimizationExpressions.
            %
            %   Use <= instead.
        end

        function out=minus(~) %#ok<STOUT>
            %- MINUS Subtraction of OptimizationExpressions.
            %
            %   See also -, MINUS.
        end

        function out=mldivide(~) %#ok<STOUT>
            %\  MLDIVIDE Backslash or left matrix divide for OptimizationExpressions.
            %
            %   Backslash is used to create EOUT = X\EIN, where X must be a
            %   numeric scalar and EOUT,EIN are OptimizationExpressions.
            %
            %   See also \, MLDIVIDE.
        end

        function out=mrdivide(~) %#ok<STOUT>
            %/  MRDIVIDE Slash or right matrix divide for OptimizationExpressions.
            %
            %   Slash is used to create EOUT = EIN/Y, where Y must be a
            %   numeric scalar and EOUT,EIN are OptimizationExpressions.
            %
            %   See also /, MRDIVIDE.
        end

        function out=mtimes(~) %#ok<STOUT>
            %*  MTIMES Matrix multiply for OptimizationExpressions.
            %
            %   See also *, MTIMES.
        end

        function out=numel(~) %#ok<STOUT>
            %NUMEL Number of elements in an OptimizationExpression array.
            %
            %   See also NUMEL.
        end

        function out=plus(~) %#ok<STOUT>
            %+ PLUS Addition of OptimizationExpressions.
            %
            %   See also +, PLUS.
        end

        function out=rdivide(~) %#ok<STOUT>
            %./ RDIVIDE Right array divide for OptimizationExpressions.
            %
            %   See also ./, RDIVIDE.
        end

        function out=sum(~) %#ok<STOUT>
            %SUM Sum of elements of OptimizationExpression array.
            %
            %   See also SUM.
        end

        function out=times(~) %#ok<STOUT>
            %.* TIMES Array multiply for OptimizationExpressions.
            %
            %   See also .*, TIMES.
        end

        function out=transpose(~) %#ok<STOUT>
            % .' Transpose OptimizationExpression.
            %
            %   EXPR.' transposes the OptimizationExpression, EXPR.
        end

        function out=uminus(~) %#ok<STOUT>
            %- UMINUS Unary minus for OptimizationExpressions.
            %
            %   See also UMINUS.
        end

        function out=uplus(~) %#ok<STOUT>
            %+ UPLUS Unary plus for OptimizationExpressions.
            %
            %   See also UPLUS.
        end

        function out=vertcat(~) %#ok<STOUT>
            %VERTCAT Vertical concatenation of OptimizationExpressions.
            %
            %   See also VERTCAT.
        end

    end
    properties
        IndexNames;

        % Map that stores the variable names as fields and handles to
        % variable as entries. Type: struct
        Variables;

    end
end
