Skip to content

Commit

Permalink
everything works
Browse files Browse the repository at this point in the history
  • Loading branch information
bqpd committed Mar 4, 2020
1 parent 0ce75bc commit fe7f822
Show file tree
Hide file tree
Showing 11 changed files with 179 additions and 171 deletions.
80 changes: 40 additions & 40 deletions docs/source/examples/performance_modeling_output.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,42 +5,42 @@ Cost

Constraints
-----------
Mission
"definition of Wburn":
Wfuel[:-1] >= Wfuel[1:] + Wburn[:-1]
"require fuel for the last leg":
Wfuel[3] >= Wburn[3]
FlightSegment
AircraftP
"fuel burn rate":
Wburn[:] >= 0.1·D[:]
"lift":
Aircraft.W + Wfuel[:] <= 0.5·rho[:]·CL[:]·S·V[:]²
"performance":
WingAero
"definition of D":
D[:] >= 0.5·rho[:]·V[:]²·CD[:]·S
"definition of Re":
Re[:] = rho[:]·V[:]·c/mu[:]
"drag model":
CD[:] >= 0.074/Re[:]^0.2 + CL[:]²/π/A/e[:]
FlightState
(no constraints)
Aircraft
"definition of W":
Aircraft.W >= Aircraft.Fuselage.W + Aircraft.Wing.W
"components":
Fuselage
(no constraints)
Wing
"definition of mean chord":
c = (S/A)^0.5
"parametrization of wing weight":
Aircraft.Wing.W >= S·Aircraft.Wing.rho
Mission
"definition of Wburn":
Wfuel[:-1] >= Wfuel[1:] + Wburn[:-1]
"require fuel for the last leg":
Wfuel[3] >= Wburn[3]

FlightSegment
AircraftP
"fuel burn rate":
Wburn[:] >= 0.1·D[:]
"lift":
Aircraft.W + Wfuel[:] <= 0.5·rho[:]·CL[:]·S·V[:]²
"performance":
WingAero
"definition of D":
D[:] >= 0.5·rho[:]·V[:]²·CD[:]·S
"definition of Re":
Re[:] = rho[:]·V[:]·c/mu[:]
"drag model":
CD[:] >= 0.074/Re[:]^0.2 + CL[:]²/π/A/e[:]

FlightState
(no constraints)

Aircraft
"definition of W":
Aircraft.W >= Aircraft.Fuselage.W + Aircraft.Wing.W
"components":
Fuselage
(no constraints)

Wing
"definition of mean chord":
c = (S/A)^0.5
"parametrization of wing weight":
Aircraft.Wing.W >= S·Aircraft.Wing.rho

Optimal Cost
------------
Expand Down Expand Up @@ -108,10 +108,10 @@ Constraint Differences
+++ added in argument

@@ -41,4 +41,3 @@
c = (S/A)^0.5
"parametrization of wing weight":
Aircraft.Wing.W >= S·Aircraft.Wing.rho
- Wburn[:] >= 0.2·D[:]
c = (S/A)^0.5
"parametrization of wing weight":
Aircraft.Wing.W >= S·Aircraft.Wing.rho
-Wburn[:] >= 0.2·D[:]

**********************

Expand Down
50 changes: 25 additions & 25 deletions docs/source/examples/relaxation_output.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ Cost

Constraints
-----------
x <= x_max
x >= x_min
x <= x_max
x >= x_min

With constraints relaxed equally
================================
Expand All @@ -19,11 +19,11 @@ Cost

Constraints
-----------
"minimum relaxation":
C >= 1
"relaxed constraints":
x <= C·x_max
x_min <= C·x
"minimum relaxation":
C >= 1
"relaxed constraints":
x <= C·x_max
x_min <= C·x

Optimal Cost
------------
Expand Down Expand Up @@ -61,11 +61,11 @@ Cost

Constraints
-----------
"minimum relaxation":
C[:] >= 1
"relaxed constraints":
x <= C[0]·x_max
x_min <= C[1]·x
"minimum relaxation":
C[:] >= 1
"relaxed constraints":
x <= C[0]·x_max
x_min <= C[1]·x

Optimal Cost
------------
Expand Down Expand Up @@ -104,19 +104,19 @@ Cost

Constraints
-----------
Relax2
"original constraints":
x <= x_max
x >= x_min
"relaxation constraints":
"x_max":
Relax2.x_max >= 1
x_max >= Relax2.OriginalValues.x_max/Relax2.x_max
x_max <= Relax2.OriginalValues.x_max·Relax2.x_max
"x_min":
Relax2.x_min >= 1
x_min >= Relax2.OriginalValues.x_min/Relax2.x_min
x_min <= Relax2.OriginalValues.x_min·Relax2.x_min
Relax2
"original constraints":
x <= x_max
x >= x_min
"relaxation constraints":
"x_max":
Relax2.x_max >= 1
x_max >= Relax2.OriginalValues.x_max/Relax2.x_max
x_max <= Relax2.OriginalValues.x_max·Relax2.x_max
"x_min":
Relax2.x_min >= 1
x_min >= Relax2.OriginalValues.x_min/Relax2.x_min
x_min <= Relax2.OriginalValues.x_min·Relax2.x_min

Optimal Cost
------------
Expand Down
14 changes: 10 additions & 4 deletions gpkit/constraints/array.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
"Implements ArrayConstraint"
from .set import ConstraintSet
from .set import flatiter
from .single_equation import SingleEquationConstraint


class ArrayConstraint(SingleEquationConstraint, ConstraintSet):
# TODO: don't inherit from ConstraintSet, implement own .flat()
# TODO: check for numpy_bools here and here alone
class ArrayConstraint(SingleEquationConstraint, list):
"""A ConstraintSet for prettier array-constraint printing.
ArrayConstraint gets its `sub` method from ConstrainSet,
Expand All @@ -14,10 +16,14 @@ class ArrayConstraint(SingleEquationConstraint, ConstraintSet):
"""
def __init__(self, constraints, left, oper, right):
SingleEquationConstraint.__init__(self, left, oper, right)
ConstraintSet.__init__(self, constraints)
list.__init__(self, constraints)

def lines_without(self, excluded):
"Returns lines for indentation in hierarchical printing."
return [self.str_without(excluded)]#.split("\n")

def __bool__(self):
"Allows the use of '=' NomialArrays as truth elements."
if self.oper != "=":
return NotImplemented
return all(bool(p) for p in self.flat())
return all(bool(p) for p in flatiter(self))
Loading

0 comments on commit fe7f822

Please sign in to comment.