1dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond/*
2dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * Licensed to the Apache Software Foundation (ASF) under one or more
3dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * contributor license agreements.  See the NOTICE file distributed with
4dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * this work for additional information regarding copyright ownership.
5dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * The ASF licenses this file to You under the Apache License, Version 2.0
6dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * (the "License"); you may not use this file except in compliance with
7dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * the License.  You may obtain a copy of the License at
8dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond *
9dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond *      http://www.apache.org/licenses/LICENSE-2.0
10dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond *
11dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * Unless required by applicable law or agreed to in writing, software
12dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * distributed under the License is distributed on an "AS IS" BASIS,
13dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * See the License for the specific language governing permissions and
15dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * limitations under the License.
16dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */
17dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
18dee0849a9704d532af0b550146cbafbaa6ee1d19Raymondpackage org.apache.commons.math.optimization.linear;
19dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
20dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond/**
21dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * Types of relationships between two cells in a Solver {@link LinearConstraint}.
22dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @version $Revision: 1003886 $ $Date: 2010-10-02 23:04:44 +0200 (sam. 02 oct. 2010) $
23dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond * @since 2.0
24dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond */
25dee0849a9704d532af0b550146cbafbaa6ee1d19Raymondpublic enum Relationship {
26dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
27dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /** Equality relationship. */
28dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    EQ("="),
29dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
30dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /** Lesser than or equal relationship. */
31dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    LEQ("<="),
32dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
33dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /** Greater than or equal relationship. */
34dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    GEQ(">=");
35dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
36dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /** Display string for the relationship. */
37dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    private final String stringValue;
38dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
39dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /** Simple constructor.
40dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * @param stringValue display string for the relationship
41dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
42dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    private Relationship(String stringValue) {
43dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        this.stringValue = stringValue;
44dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
45dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
46dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /** {@inheritDoc} */
47dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    @Override
48dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public String toString() {
49dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        return stringValue;
50dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
51dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
52dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    /**
53dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * Get the relationship obtained when multiplying all coefficients by -1.
54dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     * @return relationship obtained when multiplying all coefficients by -1
55dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond     */
56dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    public Relationship oppositeRelationship() {
57dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        switch (this) {
58dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        case LEQ :
59dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond            return GEQ;
60dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        case GEQ :
61dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond            return LEQ;
62dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        default :
63dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond            return EQ;
64dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond        }
65dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond    }
66dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond
67dee0849a9704d532af0b550146cbafbaa6ee1d19Raymond}
68