mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-04-25 18:21:08 +00:00
* Implement GSCSTableau, GSCSEditInfo, GSCSEditVariableManager * Update GSTableau based on feedback * Remove adding expression term variable to external parameteric variables
147 lines
No EOL
4.6 KiB
Objective-C
147 lines
No EOL
4.6 KiB
Objective-C
/* Copyright (C) 2023 Free Software Foundation, Inc.
|
|
|
|
By: Benjamin Johnson
|
|
Date: 12-6-2023
|
|
This file is part of the GNUstep Library.
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Lesser General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2.1 of the License, or (at your option) any later version.
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Lesser General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
License along with this library; if not, write to the Free
|
|
Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
Boston, MA 02110 USA.
|
|
*/
|
|
|
|
#import "GSCSLinearExpression.h"
|
|
#import "GSCSVariable.h"
|
|
#import <Foundation/Foundation.h>
|
|
|
|
#ifndef _GS_CS_TABLEAU_H
|
|
#define _GS_CS_TABLEAU_H
|
|
|
|
@interface GSCSTableau : NSObject
|
|
{
|
|
NSMutableSet *_externalParametricVariables;
|
|
|
|
NSMapTable *_rows;
|
|
|
|
NSMapTable *_columns;
|
|
|
|
NSMapTable *_externalRows;
|
|
|
|
NSMutableArray *_infeasibleRows;
|
|
|
|
GSCSVariable *_objective;
|
|
}
|
|
|
|
#if GS_HAS_DECLARED_PROPERTIES
|
|
@property (nonatomic, assign) GSCSVariable *objective;
|
|
#else
|
|
- (GSCSVariable *) objective;
|
|
- (void) setObjective: (GSCSVariable *)objective;
|
|
#endif
|
|
|
|
#if GS_HAS_DECLARED_PROPERTIES
|
|
@property (nonatomic, assign) NSMapTable *externalRows;
|
|
#else
|
|
- (NSMapTable *) externalRows;
|
|
- (void) setExternalRows: (NSMapTable *)externalRows;
|
|
#endif
|
|
|
|
#if GS_HAS_DECLARED_PROPERTIES
|
|
@property (nonatomic, assign) NSMutableArray *infeasibleRows;
|
|
#else
|
|
- (NSMutableArray *) infeasibleRows;
|
|
- (void) setInfeasibleRows: (NSMutableArray *)infeasibleRows;
|
|
#endif
|
|
|
|
- (void) addRowForVariable: (GSCSVariable *)variable
|
|
equalsExpression: (GSCSLinearExpression *)expression;
|
|
|
|
- (void) removeRowForVariable: (GSCSVariable *)variable;
|
|
|
|
- (BOOL) hasRowForVariable: (GSCSVariable *)variable;
|
|
|
|
- (void) substituteOutVariable: (GSCSVariable *)variable
|
|
forExpression: (GSCSLinearExpression *)expression;
|
|
|
|
- (void) substituteOutTerm: (GSCSVariable *)term
|
|
withExpression: (GSCSLinearExpression *)newExpression
|
|
inExpression: (GSCSLinearExpression *)expression
|
|
subject: (GSCSVariable *)subject;
|
|
|
|
- (BOOL) isBasicVariable: (GSCSVariable *)variable;
|
|
|
|
- (void) addVariable: (GSCSVariable *)variable
|
|
toExpression: (GSCSLinearExpression *)expression;
|
|
|
|
- (void) addVariable: (GSCSVariable *)variable
|
|
toExpression: (GSCSLinearExpression *)expression
|
|
withCoefficient: (CGFloat)coefficient;
|
|
|
|
- (void) addVariable: (GSCSVariable *)variable
|
|
toExpression: (GSCSLinearExpression *)expression
|
|
withCoefficient: (CGFloat)coefficient
|
|
subject: (GSCSVariable *)subject;
|
|
|
|
- (void) setVariable: (GSCSVariable *)variable
|
|
onExpression: (GSCSLinearExpression *)expression
|
|
withCoefficient: (CGFloat)coefficient;
|
|
|
|
- (void) addNewExpression: (GSCSLinearExpression *)newExpression
|
|
toExpression: (GSCSLinearExpression *)existingExpression
|
|
n: (CGFloat)n
|
|
subject: (GSCSVariable *)subject;
|
|
|
|
- (void) addNewExpression: (GSCSLinearExpression *)newExpression
|
|
toExpression: (GSCSLinearExpression *)existingExpression;
|
|
|
|
- (void) addMappingFromExpressionVariable: (GSCSVariable *)columnVariable
|
|
toRowVariable: (GSCSVariable *)rowVariable;
|
|
|
|
- (void) removeColumn: (GSCSVariable *)variable;
|
|
|
|
- (BOOL) hasColumnForVariable: (GSCSVariable *)variable;
|
|
|
|
- (NSSet *) columnForVariable: (GSCSVariable *)variable;
|
|
|
|
- (GSCSLinearExpression *) rowExpressionForVariable: (GSCSVariable *)variable;
|
|
|
|
- (void) changeSubjectOnExpression: (GSCSLinearExpression *)expression
|
|
existingSubject: (GSCSVariable *)existingSubject
|
|
newSubject: (GSCSVariable *)newSubject;
|
|
|
|
- (void) pivotWithEntryVariable: (GSCSVariable *)entryVariable
|
|
exitVariable: (GSCSVariable *)exitVariable;
|
|
|
|
- (BOOL) hasInfeasibleRows;
|
|
|
|
- (BOOL) containsExternalParametricVariableForEveryExternalTerm;
|
|
|
|
- (BOOL) containsExternalRowForEachExternalRowVariable;
|
|
|
|
- (NSArray *) substitedOutNonBasicPivotableVariables:
|
|
(GSCSVariable *)objective;
|
|
|
|
- (GSCSVariable *) findPivotableExitVariable: (GSCSVariable *)entryVariable;
|
|
|
|
- (GSCSVariable *)
|
|
findExitVariableForEquationWhichMinimizesRatioOfRestrictedVariables:
|
|
(GSCSVariable *)constraintMarkerVariable;
|
|
|
|
- (GSCSVariable *) findNonBasicVariables;
|
|
|
|
- (GSCSVariable *) findPivotableExitVariableWithoutCheck:
|
|
(GSCSVariable *)entryVariable;
|
|
|
|
@end
|
|
|
|
#endif |