Artelys Knitro Artelys Knitro Home
  • Documentation
  • logo-new-blancArtelys
Python / Knitro API Python / Pyomo Julia / JuMP

On this page

  • Introduction
  • Problem description
  • Input data
  • Intersection of convex polygons
  • Decomposition of the polygons into convex polygons
  • Nonlinear model
  • Initial point
  • Simplified nonlinear model
  • Model implementation
  • Resolution
  • Output visualization
  • Resolution from each initial point
  • Conclusion

Polygon Clustering

Pack two rotatable polygons into the smallest axis-parallel rectangle without overlap, using a convex decomposition and nonlinear programming.

Notebook
Python / Knitro API Python / Pyomo Julia / JuMP

Introduction

Given two polygons (possibly non-convex) \(P_j\), \(j = 1, 2\), we look for an axis-parallel rectangle with the smallest area that contains the two polygons, without overlap between the polygons. Rotating the polygons is allowed.

This kind of problem arises in packing and nesting applications, for example when parts have to be cut out of a rectangular piece of stock material.

Here is an example of two input polygons and the clustering found by Knitro:

Problem description

Input

  • \(N\) polygons (here, \(N = 2\)), given by the coordinates of their vertices

Problem:

Choose, for each polygon:

  • a translation vector
  • a rotation angle

such that:

  • the polygons do not overlap
  • the polygons are contained in an axis-parallel rectangle

Objective:

Minimize the area of the containing rectangle.

Input data

A polygon is a ring of vertices with the first one repeated at the end, so the outline closes. centroid_of is the shoelace formula over that ring, and rotate turns a point about the origin given the sine and cosine of the angle rather than the angle itself, the form the model will carry a rotation. area is what the model minimizes, the width of the containing rectangle times its height.

A Packing holds that area together with the translation and the sine and cosine of each polygon, and that is all it takes to redraw the placement.

import math
from dataclasses import InitVar, dataclass, field

from plot import (
    animate_starts,
    draw_areas,
    draw_decompositions,
    draw_placement,
    draw_polygons,
    draw_separation,
    draw_start_grid,
)
from report import report_packing, report_sides, report_spread


@dataclass
class Vertex:
    x: float
    y: float


class ConvexPolygon:
    def __init__(self, ring):
        if ring[0] == ring[-1]:
            ring = ring[:-1]
        self.vertices = [Vertex(x, y) for x, y in ring]
        self.num_vertices = len(self.vertices)


class Polygon:
    def __init__(self, ring):
        self.points = [tuple(point) for point in ring]
        self.centroid = centroid_of(self.points)
        self.parts = []


@dataclass
class Packing:
    area: float
    x: list[float]
    y: list[float]
    cosine: list[float]
    sine: list[float]
    width: float
    height: float


def centroid_of(points):
    ring = points[:-1] if points[0] == points[-1] else points
    twice, cx, cy = 0.0, 0.0, 0.0
    for i, (x1, y1) in enumerate(ring):
        x2, y2 = ring[(i + 1) % len(ring)]
        cross = x1 * y2 - x2 * y1
        twice += cross
        cx += (x1 + x2) * cross
        cy += (y1 + y2) * cross
    return (cx / (3 * twice), cy / (3 * twice))


def rotate(x, y, c, s):
    return (c * x + s * y, c * y - s * x)


def area(placement):
    return placement.width * placement.height

Two polygons are packed below, both written out in full and both non-convex, the case the model has to handle.

polygons = [
    Polygon(
        [(1, 0), (5, 0), (6, 3), (5, 7), (4, 4), (3, 8), (2, 3), (1, 6), (0, 3), (1, 0)]
    ),
    Polygon(
        [
            (1, 0),
            (5, 0),
            (6, 4),
            (6, 7),
            (5, 4),
            (4, 7),
            (3, 2),
            (2, 6),
            (1, 3),
            (0, 7),
            (0, 3),
            (1, 0),
        ]
    ),
]

A placement is drawn as the containing rectangle with the two outlines dropped into it, so what the picture shows is the gap the solver still has to close. The decomposition figure keeps the input outline on top of its convex parts, since the cuts are what the model sees and the outline is what the reader knows.

draw_polygons(polygons)
Polygon 1Polygon 2

Intersection of convex polygons

If two convex polygons are disjoint, then there is an edge \(e\) of one of them such that these polygons lie on the opposite sides of the line containing \(e\).

The position of a point relative to a line is what decides that. line_equation returns the coefficients \(a\), \(b\), \(c\) of the line through two points, and relative_position evaluates \(ax + by + c\). The sign says which side of the line the point falls on, so two points with opposite signs sit on opposite sides.

def line_equation(p1, p2):
    x1, y1 = p1
    x2, y2 = p2
    return y2 - y1, x1 - x2, x2 * y1 - x1 * y2


def relative_position(a, b, c, point):
    x, y = point
    return a * x + b * y + c

Let’s illustrate this property:

triangle_1 = [(1.0, 2.0), (5.0, 5.0), (1.5, 6.0)]
triangle_2 = [(4.0, 3.4), (8.5, 0.6), (9.2, 3.2)]

draw_separation(triangle_1, triangle_2, (triangle_1[0], triangle_1[1]))
Two triangles and one separating line(AB)ABCDEF

Of the six edges these two triangles have, (AB) is the only one whose line separates them, with every vertex of one triangle staying in its own tint.

Running all six vertices through that line says the same thing in numbers. A and B are on it, the third vertex of the first triangle comes out negative, and all three of the second come out positive.

a, b, c = line_equation(triangle_1[0], triangle_1[1])

report_sides(a, b, c, [triangle_1, triangle_2])
vertex  triangle   ax + by + c  side       
-------------------------------------------
     A         1          0.00  on the line
     B         1          0.00  on the line
     C         1        -14.50  negative
     D         2          3.40  positive
     E         2         28.10  positive
     F         2         19.80  positive

Decomposition of the polygons into convex polygons

Since the intersection property only holds for convex polygons, in order to use it in our case, we need to decompose the input polygons into convex polygons first.

convex_parts cuts a ring into the fewest convex pieces it can. It takes a reflex vertex, tries every other vertex that one can see, and keeps the cut whose two halves need the fewest further cuts. The model works on those pieces rather than on the original ring.

Show the convex decomposition
def triangle_area(a, b, c):
    return (b[0] - a[0]) * (c[1] - a[1]) - (c[0] - a[0]) * (b[1] - a[1])


def is_left_on(a, b, c):
    return triangle_area(a, b, c) >= 0


def is_right(a, b, c):
    return triangle_area(a, b, c) < 0


def is_right_on(a, b, c):
    return triangle_area(a, b, c) <= 0


def square_distance(a, b):
    return (b[0] - a[0]) ** 2 + (b[1] - a[1]) ** 2


def at(ring, i):
    return ring[i % len(ring)]


def line_crossing(a1, a2, b1, b2):
    ax, ay = a2[1] - a1[1], a1[0] - a2[0]
    ac = ax * a1[0] + ay * a1[1]
    bx, by = b2[1] - b1[1], b1[0] - b2[0]
    bc = bx * b1[0] + by * b1[1]
    det = ax * by - bx * ay
    if det == 0:
        return (0.0, 0.0)
    return ((by * ac - ay * bc) / det, (ax * bc - bx * ac) / det)


def is_reflex(ring, i):
    return is_right(at(ring, i - 1), at(ring, i), at(ring, i + 1))


def can_see(ring, a, b):
    p, q = at(ring, a), at(ring, b)
    if is_left_on(at(ring, a + 1), p, q) and is_right_on(at(ring, a - 1), p, q):
        return False
    reach = square_distance(p, q)
    for i in range(len(ring)):
        if (i + 1) % len(ring) == a or i == a:
            continue
        if is_left_on(p, q, at(ring, i + 1)) and is_right_on(p, q, at(ring, i)):
            crossing = line_crossing(p, q, at(ring, i), at(ring, i + 1))
            if square_distance(p, crossing) < reach:
                return False
    return True


def subring(ring, i, j):
    if i < j:
        return ring[i : j + 1]
    return ring[: j + 1] + ring[i:]


def cut_edges(ring):
    best, fewest = [], math.inf
    for i in range(len(ring)):
        if not is_reflex(ring, i):
            continue
        for j in range(len(ring)):
            if not can_see(ring, i, j):
                continue
            cuts = cut_edges(subring(ring, i, j)) + cut_edges(subring(ring, j, i))
            if len(cuts) < fewest:
                fewest = len(cuts)
                cuts.append((at(ring, i), at(ring, j)))
                best = cuts
    return best


def slice_at(ring, edge):
    if edge[0] not in ring or edge[1] not in ring:
        return None
    i, j = ring.index(edge[0]), ring.index(edge[1])
    return subring(ring, i, j), subring(ring, j, i)


def convex_parts(ring):
    edges = cut_edges(ring)
    if not edges:
        return [ring]
    parts = [ring]
    for edge in edges:
        for index, part in enumerate(parts):
            pieces = slice_at(part, edge)
            if pieces is not None:
                parts.pop(index)
                parts += [pieces[0], pieces[1]]
                break
    return parts


def decompose(polygon):
    polygon.parts = [ConvexPolygon(part) for part in convex_parts(polygon.points[:-1])]
    return polygon
for polygon in polygons:
    decompose(polygon)

draw_decompositions(polygons)
Polygon 1: 4 convex partsPolygon 2: 5 convex parts

Nonlinear model

Input

  • \(N\): number of polygons (here, \(N = 2\))
  • \(K^j\): number of convex parts of polygon \(P_j\)
  • \(L^j_k\): number of vertices of convex part \(k\) of polygon \(P_j\)
  • \(X^j_{k, l}\), \(Y^j_{k, l}\): x- and y-coordinates of vertex \(l\) of convex part \(k\) of polygon \(P_j\)

Variables

  • \(w, h \in \mathbb{R}^+\): width and height of the containing rectangle
  • \(x_j, y_j \in \mathbb{R}\), \(j = 1, \dots, N\): translation vector of polygon \(P_j\)
  • \(s_j, c_j \in [-1, 1]\), \(j = 1, \dots, N\): sine and cosine of the rotation angle of polygon \(P_j\)
  • \(x^j_{k, l}, y^j_{k, l} \in \mathbb{R}^+\): coordinates of vertex \(l\) of convex part \(k\) of polygon \(P_j\) after the rotation and the translation
  • \(d^{j_1, j_2}_{k_1, l_1, k_2} \in \{ 0, 1 \}\): 1 if the minimum relative position of the vertices of convex part \(k_2\) of polygon \(P_{j_2}\) with the line \((l_1, l_1 + 1)\) of convex part \(k_1\) of polygon \(P_{j_1}\) is non-negative

Objective: minimize the area of the containing rectangle

\[ \min w \cdot h \]

Constraints

  • Link between \(s_j\) and \(c_j\)

\[ \forall j = 1, \dots, N, \qquad c_j^2 + s_j^2 = 1 \]

  • Coordinates of the vertices

\[ \forall j = 1, \dots, N, \quad \forall k = 1, \dots, K^j, \quad \forall l = 1, \dots, L^j_k, \qquad x^j_{k, l} = x_j + X^j_{k, l} c_j + Y^j_{k, l} s_j \] \[ \forall j = 1, \dots, N, \quad \forall k = 1, \dots, K^j, \quad \forall l = 1, \dots, L^j_k, \qquad y^j_{k, l} = y_j + Y^j_{k, l} c_j - X^j_{k, l} s_j \]

  • Definition of \(d^{j_1, j_2}_{k_1, l_1, k_2}\)

\[ \forall j_1 = 1, \dots, N, \quad \forall j_2 = 1, \dots, N, j_2 \neq j_1, \quad \forall k_1 = 1, \dots, K^{j_1}, \quad \forall k_2 = 1, \dots, K^{j_2}, \quad \forall l_1 = 1, \dots, L^{j_1}_{k_1}, \quad \forall l_2 = 1, \dots, L^{j_2}_{k_2}, \]

\[ d^{j_1, j_2}_{k_1, l_1, k_2} \le \left( y^{j_1}_{k_1, l_1 + 1} - y^{j_1}_{k_1, l_1} \right) x^{j_2}_{k_2, l_2} + \left( x^{j_1}_{k_1, l_1} - x^{j_1}_{k_1, l_1 + 1} \right) y^{j_2}_{k_2, l_2} + x^{j_1}_{k_1, l_1 + 1} y^{j_1}_{k_1, l_1} - x^{j_1}_{k_1, l_1} y^{j_1}_{k_1, l_1 + 1} \]

  • For each pair of polygons, each pair of convex parts from each polygon must not intersect

\[ \forall j_1 = 1, \dots, N, \quad \forall j_2 = 1, \dots, N, j_2 \neq j_1, \quad \forall k_1 = 1, \dots, K^{j_1}, \quad \forall k_2 = 1, \dots, K^{j_2}, \]

\[ \max \left( \max_{l_1 = 1, \dots, L^{j_1}_{k_1}} d^{j_1, j_2}_{k_1, l_1, k_2}, \max_{l_2 = 1, \dots, L^{j_2}_{k_2}} d^{j_2, j_1}_{k_2, l_2, k_1} \right) \ge 0 \]

  • Link between \(w\) and \(h\), and \(x^j_{k, l}\) and \(y^j_{k, l}\)

\[ \forall j = 1, \dots, N, \quad \forall k = 1, \dots, K^j, \quad \forall l = 1, \dots, L^j_k, \qquad x^j_{k, l} \le w \] \[ \forall j = 1, \dots, N, \quad \forall k = 1, \dots, K^j, \quad \forall l = 1, \dots, L^j_k, \qquad y^j_{k, l} \le h \]

Solving the nonlinear model as it is wouldn’t give good results. To obtain good solutions quickly, we will:

  • first find a good initial point
  • then solve a simplified version of the model

Initial point

Starting from a good initial point is essential when solving packing problems with nonlinear programming.

generate_starts builds one start for every pair of rotations, eight of each polygon from 0° to 315° in 45° steps, so 64 in all. For each pair it moves the two polygons so their centroids coincide, slides the second one up until they barely overlap, and shifts the pair into the positive quadrant where the model expects it. separating_edge is what measures the overlap. It returns how deep the two convex parts still cut into each other, and the edge that keeps them apart best. That edge is also what the simplified model will fix.

ROTATIONS = list(range(0, 360, 45))


@dataclass
class Start:
    angles: tuple[int, int]
    cosine: list[float] = field(init=False)
    sine: list[float] = field(init=False)
    x: list[float]
    y: list[float]
    width: float
    height: float
    edges: InitVar[list]
    separations: list = field(init=False)

    def __post_init__(self, edges):
        self.cosine = [math.cos(math.radians(angle)) for angle in self.angles]
        self.sine = [math.sin(math.radians(angle)) for angle in self.angles]
        self.separations = [
            (0, k1, l1, 1, k2) if l1 is not None else (1, k2, l2, 0, k1)
            for k1, k2, l1, l2 in edges
        ]


def separating_edge(part_1, part_2):
    best, l1_best, l2_best = None, None, None
    for l1, v1 in enumerate(part_1):
        a, b, c = line_equation(v1, part_1[(l1 + 1) % len(part_1)])
        value = min(relative_position(a, b, c, v2) for v2 in part_2)
        if best is None or best < value:
            best, l1_best, l2_best = value, l1, None
    for l2, v2 in enumerate(part_2):
        a, b, c = line_equation(v2, part_2[(l2 + 1) % len(part_2)])
        value = min(relative_position(a, b, c, v1) for v1 in part_1)
        if best < value:
            best, l1_best, l2_best = value, None, l2
    return -best, l1_best, l2_best


def worst_overlap(parts_1, parts_2):
    worst, edges = 0.0, []
    for k1, part_1 in enumerate(parts_1):
        for k2, part_2 in enumerate(parts_2):
            depth, l1, l2 = separating_edge(part_1, part_2)
            worst = max(worst, depth)
            edges.append((k1, k2, l1, l2))
    return worst, edges


def turned_parts(polygon, theta):
    c, s = math.cos(math.radians(theta)), math.sin(math.radians(theta))
    xc, yc = rotate(*polygon.centroid, c, s)
    return [
        [(x - xc, y - yc) for x, y in (rotate(v.x, v.y, c, s) for v in part.vertices)]
        for part in polygon.parts
    ]


def generate_starts(polygons):
    starts = []
    for theta1 in ROTATIONS:
        parts_1 = turned_parts(polygons[0], theta1)
        for theta2 in ROTATIONS:
            parts_2 = turned_parts(polygons[1], theta2)
            offset = 0
            while True:
                shifted = [[(x, y + offset) for x, y in part] for part in parts_2]
                worst, edges = worst_overlap(parts_1, shifted)
                if worst < 1:
                    break
                offset += 1

            points = [p for parts in (parts_1, shifted) for part in parts for p in part]
            x_min = min(x for x, _ in points)
            y_min = min(y for _, y in points)
            x_max = max(x for x, _ in points)
            y_max = max(y for _, y in points)

            c1, s1 = math.cos(math.radians(theta1)), math.sin(math.radians(theta1))
            c2, s2 = math.cos(math.radians(theta2)), math.sin(math.radians(theta2))
            xc1, yc1 = rotate(*polygons[0].centroid, c1, s1)
            xc2, yc2 = rotate(*polygons[1].centroid, c2, s2)
            x = [-xc1 - x_min, -xc2 - x_min]
            y = [-yc1 - y_min, -yc2 + offset - y_min]
            width, height = x_max - x_min, y_max - y_min
            starts.append(Start((theta1, theta2), x, y, width, height, edges))
    starts.sort(key=area)
    return starts

The animation runs through all 64, first with the centroids on top of each other, then with the second polygon slid up clear of the first.

starts = generate_starts(polygons)
print(f"{len(starts)} starts generated")

animate_starts(polygons, starts)
64 starts generated
1 / 64θ1 = 0° θ2 = 0°2 / 64θ1 = 0° θ2 = 45°3 / 64θ1 = 0° θ2 = 90°4 / 64θ1 = 0° θ2 = 135°5 / 64θ1 = 0° θ2 = 180°6 / 64θ1 = 0° θ2 = 225°7 / 64θ1 = 0° θ2 = 270°8 / 64θ1 = 0° θ2 = 315°9 / 64θ1 = 45° θ2 = 0°10 / 64θ1 = 45° θ2 = 45°11 / 64θ1 = 45° θ2 = 90°12 / 64θ1 = 45° θ2 = 135°13 / 64θ1 = 45° θ2 = 180°14 / 64θ1 = 45° θ2 = 225°15 / 64θ1 = 45° θ2 = 270°16 / 64θ1 = 45° θ2 = 315°17 / 64θ1 = 90° θ2 = 0°18 / 64θ1 = 90° θ2 = 45°19 / 64θ1 = 90° θ2 = 90°20 / 64θ1 = 90° θ2 = 135°21 / 64θ1 = 90° θ2 = 180°22 / 64θ1 = 90° θ2 = 225°23 / 64θ1 = 90° θ2 = 270°24 / 64θ1 = 90° θ2 = 315°25 / 64θ1 = 135° θ2 = 0°26 / 64θ1 = 135° θ2 = 45°27 / 64θ1 = 135° θ2 = 90°28 / 64θ1 = 135° θ2 = 135°29 / 64θ1 = 135° θ2 = 180°30 / 64θ1 = 135° θ2 = 225°31 / 64θ1 = 135° θ2 = 270°32 / 64θ1 = 135° θ2 = 315°33 / 64θ1 = 180° θ2 = 0°34 / 64θ1 = 180° θ2 = 45°35 / 64θ1 = 180° θ2 = 90°36 / 64θ1 = 180° θ2 = 135°37 / 64θ1 = 180° θ2 = 180°38 / 64θ1 = 180° θ2 = 225°39 / 64θ1 = 180° θ2 = 270°40 / 64θ1 = 180° θ2 = 315°41 / 64θ1 = 225° θ2 = 0°42 / 64θ1 = 225° θ2 = 45°43 / 64θ1 = 225° θ2 = 90°44 / 64θ1 = 225° θ2 = 135°45 / 64θ1 = 225° θ2 = 180°46 / 64θ1 = 225° θ2 = 225°47 / 64θ1 = 225° θ2 = 270°48 / 64θ1 = 225° θ2 = 315°49 / 64θ1 = 270° θ2 = 0°50 / 64θ1 = 270° θ2 = 45°51 / 64θ1 = 270° θ2 = 90°52 / 64θ1 = 270° θ2 = 135°53 / 64θ1 = 270° θ2 = 180°54 / 64θ1 = 270° θ2 = 225°55 / 64θ1 = 270° θ2 = 270°56 / 64θ1 = 270° θ2 = 315°57 / 64θ1 = 315° θ2 = 0°58 / 64θ1 = 315° θ2 = 45°59 / 64θ1 = 315° θ2 = 90°60 / 64θ1 = 315° θ2 = 135°61 / 64θ1 = 315° θ2 = 180°62 / 64θ1 = 315° θ2 = 225°63 / 64θ1 = 315° θ2 = 270°64 / 64θ1 = 315° θ2 = 315°
Centroids coincide
area = 6.04 × 15.15 = 91.55area = 8.49 × 16.08 = 136.42area = 7.35 × 13.98 = 102.71area = 8.49 × 15.32 = 130.01area = 6.17 × 10.67 = 65.85smallest of the 64area = 8.49 × 16.23 = 137.71area = 7.13 × 13.85 = 98.78area = 8.49 × 15.99 = 135.64area = 7.78 × 14.64 = 113.86area = 8.62 × 15.56 = 134.20area = 7.79 × 13.46 = 104.87area = 8.72 × 15.81 = 137.76area = 7.78 × 14.15 = 110.10area = 9.30 × 12.71 = 118.31area = 8.47 × 13.33 = 112.94area = 9.40 × 15.47 = 145.38area = 8.15 × 13.13 = 107.11area = 8.50 × 14.06 = 119.51area = 8.00 × 11.96 = 95.67area = 8.49 × 14.30 = 121.37area = 8.02 × 12.65 = 101.51area = 10.16 × 14.21 = 144.44area = 9.33 × 11.83 = 110.36area = 10.26 × 14.97 = 153.51area = 7.07 × 15.47 = 109.40area = 8.49 × 16.40 = 139.13area = 7.64 × 13.30 = 101.56area = 8.56 × 15.64 = 133.94area = 7.07 × 14.99 = 105.98area = 8.75 × 16.55 = 144.78area = 7.92 × 14.16 = 112.13area = 8.84 × 16.30 = 144.15area = 6.17 × 15.33 = 94.63area = 8.49 × 16.26 = 137.94area = 7.13 × 14.15 = 100.99area = 8.49 × 16.50 = 140.01area = 6.04 × 14.85 = 89.71area = 8.49 × 16.41 = 139.22area = 7.35 × 14.02 = 103.06area = 8.49 × 17.16 = 145.64area = 7.78 × 13.92 = 108.24area = 9.30 × 14.84 = 138.09area = 8.47 × 12.74 = 107.93area = 9.40 × 15.09 = 141.76area = 7.78 × 13.43 = 104.48area = 8.62 × 14.99 = 129.28area = 7.79 × 12.61 = 98.22area = 8.72 × 15.75 = 137.25area = 8.02 × 13.35 = 107.11area = 10.16 × 14.27 = 145.08area = 9.33 × 12.17 = 113.58area = 10.26 × 14.52 = 148.90area = 8.15 × 12.87 = 104.91area = 8.50 × 14.43 = 122.62area = 8.00 × 12.04 = 96.33area = 8.49 × 14.18 = 120.34area = 7.07 × 14.79 = 104.58area = 8.75 × 15.72 = 137.49area = 7.92 × 13.61 = 107.77area = 8.84 × 14.96 = 132.26area = 7.07 × 14.31 = 101.16area = 8.49 × 15.87 = 134.63area = 7.64 × 14.48 = 110.63area = 8.56 × 15.62 = 133.79
Polygon 2 slides up

Laid out as a grid, the same 64 starts show where the room goes. The row is the turn applied to polygon 1 and the column the turn applied to polygon 2, every cell is drawn to the same scale so the rectangles compare by eye, and the number under each one is its area.

draw_start_grid(polygons, starts)
Every start, by rotation pairPolygon 2 turned byPolygon 1 turned by0°45°90°135°180°225°270°315°0°45°90°135°180°225°270°315°θ1 = 0°, θ2 = 0°, 6.04 × 15.15, area 91.5591.5θ1 = 0°, θ2 = 45°, 8.49 × 16.08, area 136.42136.4θ1 = 0°, θ2 = 90°, 7.35 × 13.98, area 102.71102.7θ1 = 0°, θ2 = 135°, 8.49 × 15.32, area 130.01130.0θ1 = 0°, θ2 = 180°, 6.17 × 10.67, area 65.8565.9 ✓θ1 = 0°, θ2 = 225°, 8.49 × 16.23, area 137.71137.7θ1 = 0°, θ2 = 270°, 7.13 × 13.85, area 98.7898.8θ1 = 0°, θ2 = 315°, 8.49 × 15.99, area 135.64135.6θ1 = 45°, θ2 = 0°, 7.78 × 14.64, area 113.86113.9θ1 = 45°, θ2 = 45°, 8.62 × 15.56, area 134.20134.2θ1 = 45°, θ2 = 90°, 7.79 × 13.46, area 104.87104.9θ1 = 45°, θ2 = 135°, 8.72 × 15.81, area 137.76137.8θ1 = 45°, θ2 = 180°, 7.78 × 14.15, area 110.10110.1θ1 = 45°, θ2 = 225°, 9.30 × 12.71, area 118.31118.3θ1 = 45°, θ2 = 270°, 8.47 × 13.33, area 112.94112.9θ1 = 45°, θ2 = 315°, 9.40 × 15.47, area 145.38145.4θ1 = 90°, θ2 = 0°, 8.15 × 13.13, area 107.11107.1θ1 = 90°, θ2 = 45°, 8.50 × 14.06, area 119.51119.5θ1 = 90°, θ2 = 90°, 8.00 × 11.96, area 95.6795.7θ1 = 90°, θ2 = 135°, 8.49 × 14.30, area 121.37121.4θ1 = 90°, θ2 = 180°, 8.02 × 12.65, area 101.51101.5θ1 = 90°, θ2 = 225°, 10.16 × 14.21, area 144.44144.4θ1 = 90°, θ2 = 270°, 9.33 × 11.83, area 110.36110.4θ1 = 90°, θ2 = 315°, 10.26 × 14.97, area 153.51153.5θ1 = 135°, θ2 = 0°, 7.07 × 15.47, area 109.40109.4θ1 = 135°, θ2 = 45°, 8.49 × 16.40, area 139.13139.1θ1 = 135°, θ2 = 90°, 7.64 × 13.30, area 101.56101.6θ1 = 135°, θ2 = 135°, 8.56 × 15.64, area 133.94133.9θ1 = 135°, θ2 = 180°, 7.07 × 14.99, area 105.98106.0θ1 = 135°, θ2 = 225°, 8.75 × 16.55, area 144.78144.8θ1 = 135°, θ2 = 270°, 7.92 × 14.16, area 112.13112.1θ1 = 135°, θ2 = 315°, 8.84 × 16.30, area 144.15144.2θ1 = 180°, θ2 = 0°, 6.17 × 15.33, area 94.6394.6θ1 = 180°, θ2 = 45°, 8.49 × 16.26, area 137.94137.9θ1 = 180°, θ2 = 90°, 7.13 × 14.15, area 100.99101.0θ1 = 180°, θ2 = 135°, 8.49 × 16.50, area 140.01140.0θ1 = 180°, θ2 = 180°, 6.04 × 14.85, area 89.7189.7θ1 = 180°, θ2 = 225°, 8.49 × 16.41, area 139.22139.2θ1 = 180°, θ2 = 270°, 7.35 × 14.02, area 103.06103.1θ1 = 180°, θ2 = 315°, 8.49 × 17.16, area 145.64145.6θ1 = 225°, θ2 = 0°, 7.78 × 13.92, area 108.24108.2θ1 = 225°, θ2 = 45°, 9.30 × 14.84, area 138.09138.1θ1 = 225°, θ2 = 90°, 8.47 × 12.74, area 107.93107.9θ1 = 225°, θ2 = 135°, 9.40 × 15.09, area 141.76141.8θ1 = 225°, θ2 = 180°, 7.78 × 13.43, area 104.48104.5θ1 = 225°, θ2 = 225°, 8.62 × 14.99, area 129.28129.3θ1 = 225°, θ2 = 270°, 7.79 × 12.61, area 98.2298.2θ1 = 225°, θ2 = 315°, 8.72 × 15.75, area 137.25137.3θ1 = 270°, θ2 = 0°, 8.02 × 13.35, area 107.11107.1θ1 = 270°, θ2 = 45°, 10.16 × 14.27, area 145.08145.1θ1 = 270°, θ2 = 90°, 9.33 × 12.17, area 113.58113.6θ1 = 270°, θ2 = 135°, 10.26 × 14.52, area 148.90148.9θ1 = 270°, θ2 = 180°, 8.15 × 12.87, area 104.91104.9θ1 = 270°, θ2 = 225°, 8.50 × 14.43, area 122.62122.6θ1 = 270°, θ2 = 270°, 8.00 × 12.04, area 96.3396.3θ1 = 270°, θ2 = 315°, 8.49 × 14.18, area 120.34120.3θ1 = 315°, θ2 = 0°, 7.07 × 14.79, area 104.58104.6θ1 = 315°, θ2 = 45°, 8.75 × 15.72, area 137.49137.5θ1 = 315°, θ2 = 90°, 7.92 × 13.61, area 107.77107.8θ1 = 315°, θ2 = 135°, 8.84 × 14.96, area 132.26132.3θ1 = 315°, θ2 = 180°, 7.07 × 14.31, area 101.16101.2θ1 = 315°, θ2 = 225°, 8.49 × 15.87, area 134.63134.6θ1 = 315°, θ2 = 270°, 7.64 × 14.48, area 110.63110.6θ1 = 315°, θ2 = 315°, 8.56 × 15.62, area 133.79133.8

Rotations that interlock the two outlines need the least room. Here is the smallest of the 64, the start the solver gets:

start = starts[0]
draw_placement(polygons, start, "Smallest start")
Smallest start: 6.17 × 10.67, area 65.85

That start already looks close, but it is not a solution. The polygons still overlap slightly, and they do not sit snugly against each other. Closing that gap is what the nonlinear program is for.

Simplified nonlinear model

To simplify the model, for each pair of convex polygons from different polygons, we will fix in advance which edge from these convex polygons is responsible for the non-intersection of the convex polygons. The separating edges are chosen when generating the initial point: they are the edges that separate the two convex polygons the most in the initial placement.

That is, we replace these constraints

\[ \forall j_1 = 1, \dots, N, \quad \forall j_2 = 1, \dots, N, j_2 \neq j_1, \quad \forall k_1 = 1, \dots, K^{j_1}, \quad \forall k_2 = 1, \dots, K^{j_2}, \quad \forall l_1 = 1, \dots, L^{j_1}_{k_1}, \quad \forall l_2 = 1, \dots, L^{j_2}_{k_2}, \]

\[ d^{j_1, j_2}_{k_1, l_1, k_2} \le \left( y^{j_1}_{k_1, l_1 + 1} - y^{j_1}_{k_1, l_1} \right) x^{j_2}_{k_2, l_2} + \left( x^{j_1}_{k_1, l_1} - x^{j_1}_{k_1, l_1 + 1} \right) y^{j_2}_{k_2, l_2} + x^{j_1}_{k_1, l_1 + 1} y^{j_1}_{k_1, l_1} - x^{j_1}_{k_1, l_1} y^{j_1}_{k_1, l_1 + 1} \]

and

\[ \forall j_1 = 1, \dots, N, \quad \forall j_2 = 1, \dots, N, j_2 \neq j_1, \quad \forall k_1 = 1, \dots, K^{j_1}, \quad \forall k_2 = 1, \dots, K^{j_2}, \]

\[ \max \left( \max_{l_1 = 1, \dots, L^{j_1}_{k_1}} d^{j_1, j_2}_{k_1, l_1, k_2}, \max_{l_2 = 1, \dots, L^{j_2}_{k_2}} d^{j_2, j_1}_{k_2, l_2, k_1} \right) \ge 0 \]

by the following constraints. If the edge chosen to separate convex part \(k_1\) of polygon \(P_{j_1}\) and convex part \(k_2\) of polygon \(P_{j_2}\) is edge \((l_1, l_1 + 1)\) from convex part \(k_1\) of polygon \(P_{j_1}\):

\[ \forall l_2 = 1, \dots, L^{j_2}_{k_2}, \qquad \left( y^{j_1}_{k_1, l_1 + 1} - y^{j_1}_{k_1, l_1} \right) x^{j_2}_{k_2, l_2} + \left( x^{j_1}_{k_1, l_1} - x^{j_1}_{k_1, l_1 + 1} \right) y^{j_2}_{k_2, l_2} + x^{j_1}_{k_1, l_1 + 1} y^{j_1}_{k_1, l_1} - x^{j_1}_{k_1, l_1} y^{j_1}_{k_1, l_1 + 1} \ge 0 \]

Otherwise, if the edge chosen to separate convex part \(k_1\) of polygon \(P_{j_1}\) and convex part \(k_2\) of polygon \(P_{j_2}\) is edge \((l_2, l_2 + 1)\) from convex part \(k_2\) of polygon \(P_{j_2}\):

\[ \forall l_1 = 1, \dots, L^{j_1}_{k_1}, \qquad \left( y^{j_2}_{k_2, l_2 + 1} - y^{j_2}_{k_2, l_2} \right) x^{j_1}_{k_1, l_1} + \left( x^{j_2}_{k_2, l_2} - x^{j_2}_{k_2, l_2 + 1} \right) y^{j_1}_{k_1, l_1} + x^{j_2}_{k_2, l_2 + 1} y^{j_2}_{k_2, l_2} - x^{j_2}_{k_2, l_2} y^{j_2}_{k_2, l_2 + 1} \ge 0 \]

Variables \(d^{j_1, j_2}_{k_1, l_1, k_2}\) are not necessary anymore: the simplified model is a pure nonlinear program (NLP).

Model implementation

import pyomo.environ as pyo

SOLVER_NAME = "knitroampl"

minimize_area(polygons, start) builds the simplified model, solves it with Knitro, and returns a Packing. Every expression in it is quadratic, from the area \(w \cdot h\) to the circle \(c_j^2 + s_j^2 = 1\) that keeps the rotation a rotation, and the separation constraints.

The start is only nearly feasible, so the starting vertex coordinates are clamped to the bounds the model gives them.

def minimize_area(polygons, start):
    model = pyo.ConcreteModel()

    vertices = [
        (j, k, i)
        for j, polygon in enumerate(polygons)
        for k, part in enumerate(polygon.parts)
        for i in range(part.num_vertices)
    ]

    separations = []
    for j1, k1, l1, j2, k2 in start.separations:
        p2 = (j1, k1, (l1 + 1) % polygons[j1].parts[k1].num_vertices)
        for l2 in range(polygons[j2].parts[k2].num_vertices):
            separations.append(((j1, k1, l1), p2, (j2, k2, l2)))

    model.polygons = pyo.RangeSet(0, len(polygons) - 1)
    model.vertices = pyo.Set(initialize=vertices, dimen=3)
    model.separations = pyo.RangeSet(0, len(separations) - 1)

    model.w = pyo.Var(within=pyo.NonNegativeReals, initialize=start.width)
    model.h = pyo.Var(within=pyo.NonNegativeReals, initialize=start.height)

    model.x = pyo.Var(model.polygons, initialize=start.x)
    model.y = pyo.Var(model.polygons, initialize=start.y)

    model.c = pyo.Var(model.polygons, bounds=(-1, 1), initialize=start.cosine)
    model.s = pyo.Var(model.polygons, bounds=(-1, 1), initialize=start.sine)

    model.xv = pyo.Var(model.vertices, within=pyo.NonNegativeReals)
    model.yv = pyo.Var(model.vertices, within=pyo.NonNegativeReals)
    for j, k, i in vertices:
        v = polygons[j].parts[k].vertices[i]
        v_x, v_y = rotate(v.x, v.y, start.cosine[j], start.sine[j])
        model.xv[j, k, i].set_value(max(0.0, start.x[j] + v_x))
        model.yv[j, k, i].set_value(max(0.0, start.y[j] + v_y))

    model.obj = pyo.Objective(expr=model.w * model.h, sense=pyo.minimize)

    def rotation_rule(model, j):
        return model.c[j] ** 2 + model.s[j] ** 2 == 1

    model.rotation = pyo.Constraint(model.polygons, rule=rotation_rule)

    def v_x_rule(model, j, k, i):
        v = polygons[j].parts[k].vertices[i]
        return model.xv[j, k, i] == model.x[j] + v.x * model.c[j] + v.y * model.s[j]

    model.v_x = pyo.Constraint(model.vertices, rule=v_x_rule)

    def v_y_rule(model, j, k, i):
        v = polygons[j].parts[k].vertices[i]
        return model.yv[j, k, i] == model.y[j] + v.y * model.c[j] - v.x * model.s[j]

    model.v_y = pyo.Constraint(model.vertices, rule=v_y_rule)

    def separation_rule(model, i):
        p1, p2, v = separations[i]
        expr = (model.yv[p2] - model.yv[p1]) * model.xv[v]
        expr += (model.xv[p1] - model.xv[p2]) * model.yv[v]
        expr += model.xv[p2] * model.yv[p1] - model.xv[p1] * model.yv[p2]
        return expr >= 0

    model.separation = pyo.Constraint(model.separations, rule=separation_rule)

    def width_rule(model, j, k, i):
        return model.xv[j, k, i] <= model.w

    model.width = pyo.Constraint(model.vertices, rule=width_rule)

    def height_rule(model, j, k, i):
        return model.yv[j, k, i] <= model.h

    model.height = pyo.Constraint(model.vertices, rule=height_rule)

    pyo.SolverFactory(SOLVER_NAME).solve(model, tee=True)

    smallest_area = model.obj()
    vectors = (model.x, model.y, model.c, model.s)
    solved = [[vector[j]() for j in model.polygons] for vector in vectors]
    return Packing(smallest_area, *solved, model.w(), model.h())

Resolution

Let’s solve the simplified model from the best initial point.

packing = minimize_area(polygons, start)
Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  216 |                           216
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        78         0 |         2        78         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       472       345 |         2       472       345
  total:              2       852       345 |         2       852       345
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    6.585371e+01   1.94e-01
       4    6.000000e+01   3.12e-12   9.21e-09   4.07e-05      0.01

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   6.00000000101676e+01
Final feasibility error (abs / rel) =   3.12e-12 / 3.12e-12
Final optimality error  (abs / rel) =   9.21e-09 / 9.21e-10
# of iterations                     =          4 
# of CG iterations                  =          0 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01112 (     0.008 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================


Show the full outputHide the full output

Output visualization

Let’s visualize the solution found by the solver.

report_packing(packing)
Rectangle 6.000 × 10.000, area 60.000

polygon         x         y      cos      sin     turn
------------------------------------------------------
      1     0.000     0.000    1.000   -0.000     0.0°
      2     6.000    10.000   -1.000   -0.000   180.0°
draw_placement(polygons, packing, "Knitro solution")
Knitro solution: 6.00 × 10.00, area 60.00

Resolution from each initial point

The simplified model is a nonconvex NLP, so the solution found by the solver depends on the initial point. Each solve takes a fraction of a second, so all 64 starts can be run and compared.

packings = [minimize_area(polygons, candidate) for candidate in starts]
Show the full outputHide the full output
Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  216 |                           216
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        78         0 |         2        78         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       472       345 |         2       472       345
  total:              2       852       345 |         2       852       345
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    6.585371e+01   1.94e-01
       4    6.000000e+01   3.12e-12   9.21e-09   4.07e-05      0.03

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   6.00000000101676e+01
Final feasibility error (abs / rel) =   3.12e-12 / 3.12e-12
Final optimality error  (abs / rel) =   9.21e-09 / 9.21e-10
# of iterations                     =          4 
# of CG iterations                  =          0 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.02616 (     0.011 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  214 |                           214
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        76         0 |         2        76         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       460       333 |         2       460       333
  total:              2       840       333 |         2       840       333
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    8.970511e+01   6.10e-01
       6    8.864894e+01   6.43e-10   7.36e-08   6.35e-05      0.01

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   8.86489397746278e+01
Final feasibility error (abs / rel) =   6.43e-10 / 6.43e-10
Final optimality error  (abs / rel) =   7.36e-08 / 4.98e-09
# of iterations                     =          6 
# of CG iterations                  =          1 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01298 (     0.010 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  217 |                           217
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        79         0 |         2        79         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       478       339 |         2       478       339
  total:              2       858       339 |         2       858       339
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    9.154839e+01   1.78e-15
       3    9.000000e+01   8.78e-10   5.71e-06   9.91e-05      0.01

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.00000004808873e+01
Final feasibility error (abs / rel) =   8.78e-10 / 8.78e-10
Final optimality error  (abs / rel) =   5.71e-06 / 3.81e-07
# of iterations                     =          3 
# of CG iterations                  =          0 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01179 (     0.009 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  217 |                           217
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        79         0 |         2        79         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       478       337 |         2       478       337
  total:              2       858       337 |         2       858       337
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    9.463135e+01   1.78e-15
       4    9.000000e+01   2.00e-11   4.01e-07   3.72e-05      0.01

EXIT: Locally optimal solution found.

HINT: Knitro spent   1.0% of solution time (0.000129 secs) checking model
      convexity. To skip the automatic convexity checker for QPs and QCQPs,
      explicity set the user option convex=0 or convex=1.

Final Statistics
----------------
Final objective value               =   9.00000000750495e+01
Final feasibility error (abs / rel) =   2.00e-11 / 2.00e-11
Final optimality error  (abs / rel) =   4.01e-07 / 2.68e-08
# of iterations                     =          4 
# of CG iterations                  =          0 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01241 (     0.010 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  211 |                           211
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        73         0 |         2        73         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       442       315 |         2       442       315
  total:              2       822       315 |         2       822       315
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    9.566573e+01   0.00e+00
      10    9.200005e+01   3.57e-09   4.44e-01   2.70e-04      0.02
      20    9.198343e+01   2.31e-04   2.03e-03   1.01e+00      0.03
      21    9.199996e+01   5.04e-07   1.88e-06   5.39e-03      0.03

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.19999641622422e+01
Final feasibility error (abs / rel) =   5.04e-07 / 5.04e-07
Final optimality error  (abs / rel) =   1.88e-06 / 1.64e-07
# of iterations                     =         21 
# of CG iterations                  =          4 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.03083 (     0.028 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  213 |                           213
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        75         0 |         2        75         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       454       323 |         2       454       323
  total:              2       834       323 |         2       834       323
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    9.633427e+01   8.88e-16
      10    9.333810e+01   9.28e-07   3.21e+00   1.14e-02      0.02
      20    9.330939e+01   2.46e-10   4.32e+00   8.92e-06      0.03
      30    9.736650e+01   2.69e-03   1.11e+01   1.17e+00      0.04
      40    9.332004e+01   2.33e-04   2.33e-04   2.97e-03      0.05
      46    9.331536e+01   1.01e-07   2.81e-06   1.46e-06      0.06

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.33153560793313e+01
Final feasibility error (abs / rel) =   1.01e-07 / 1.01e-07
Final optimality error  (abs / rel) =   2.81e-06 / 2.41e-07
# of iterations                     =         46 
# of CG iterations                  =         23 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.05995 (     0.057 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  212 |                           212
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        74         0 |         2        74         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       448       315 |         2       448       315
  total:              2       828       315 |         2       828       315
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    9.822454e+01   4.24e-01
      10    9.823405e+01   2.21e-03   3.12e+00   2.65e-01      0.02
      18    9.813492e+01   4.39e-07   5.30e-06   3.04e-03      0.03

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.81349178163994e+01
Final feasibility error (abs / rel) =   4.39e-07 / 4.39e-07
Final optimality error  (abs / rel) =   5.30e-06 / 4.32e-07
# of iterations                     =         18 
# of CG iterations                  =         14 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.02644 (     0.023 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  213 |                           213
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        75         0 |         2        75         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       454       321 |         2       454       321
  total:              2       834       321 |         2       834       321
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    9.878228e+01   3.29e-01
       9    9.318974e+01   3.28e-10   4.51e-07   2.46e-05      0.02

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.31897436117410e+01
Final feasibility error (abs / rel) =   3.28e-10 / 3.28e-10
Final optimality error  (abs / rel) =   4.51e-07 / 3.39e-08
# of iterations                     =          9 
# of CG iterations                  =          3 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01801 (     0.015 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  217 |                           217
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        79         0 |         2        79         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       478       337 |         2       478       337
  total:              2       858       337 |         2       858       337
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.009890e+02   0.00e+00
       5    9.569454e+01   2.67e-10   9.88e-08   3.79e-04      0.01

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.56945403904340e+01
Final feasibility error (abs / rel) =   2.67e-10 / 2.67e-10
Final optimality error  (abs / rel) =   9.88e-08 / 7.23e-09
# of iterations                     =          5 
# of CG iterations                  =          0 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01299 (     0.010 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  214 |                           214
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        76         0 |         2        76         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       460       321 |         2       460       321
  total:              2       840       321 |         2       840       321
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.011610e+02   3.56e-01
       5    1.004680e+02   1.63e-11   3.94e-09   1.71e-05      0.01

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.00468037437097e+02
Final feasibility error (abs / rel) =   1.63e-11 / 1.63e-11
Final optimality error  (abs / rel) =   3.94e-09 / 2.77e-10
# of iterations                     =          5 
# of CG iterations                  =          3 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01239 (     0.010 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  213 |                           213
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        75         0 |         2        75         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       454       321 |         2       454       321
  total:              2       834       321 |         2       834       321
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.015109e+02   2.30e-02
       3    1.013333e+02   1.18e-10   2.71e-06   1.03e-03      0.02

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.01333337801904e+02
Final feasibility error (abs / rel) =   1.18e-10 / 1.18e-10
Final optimality error  (abs / rel) =   2.71e-06 / 2.14e-07
# of iterations                     =          3 
# of CG iterations                  =          0 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.02379 (     0.009 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  211 |                           211
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        73         0 |         2        73         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       442       313 |         2       442       313
  total:              2       822       313 |         2       822       313
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.015563e+02   1.21e-01
       6    9.522971e+01   2.50e-11   1.60e-06   4.80e-06      0.02

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.52297077513770e+01
Final feasibility error (abs / rel) =   2.50e-11 / 2.50e-11
Final optimality error  (abs / rel) =   1.60e-06 / 1.19e-07
# of iterations                     =          6 
# of CG iterations                  =          0 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01730 (     0.012 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  213 |                           213
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        75         0 |         2        75         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       454       315 |         2       454       315
  total:              2       834       315 |         2       834       315
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.027098e+02   4.44e-16
       4    9.625000e+01   2.62e-10   2.04e-07   2.70e-04      0.02

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.62500001106283e+01
Final feasibility error (abs / rel) =   2.62e-10 / 2.62e-10
Final optimality error  (abs / rel) =   2.04e-07 / 1.48e-08
# of iterations                     =          4 
# of CG iterations                  =          0 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.02207 (     0.009 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  214 |                           214
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        76         0 |         2        76         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       460       329 |         2       460       329
  total:              2       840       329 |         2       840       329
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.030615e+02   1.78e-15
       5    9.800000e+01   8.86e-11   9.71e-10   2.67e-05      0.01

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.79999999985809e+01
Final feasibility error (abs / rel) =   8.86e-11 / 8.86e-11
Final optimality error  (abs / rel) =   9.71e-10 / 6.94e-11
# of iterations                     =          5 
# of CG iterations                  =          0 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01422 (     0.011 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  214 |                           214
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        76         0 |         2        76         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       460       331 |         2       460       331
  total:              2       840       331 |         2       840       331
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.044811e+02   4.44e-16
       7    9.308531e+01   6.60e-11   2.25e-08   1.18e-05      0.01

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.30853065879219e+01
Final feasibility error (abs / rel) =   6.60e-11 / 6.60e-11
Final optimality error  (abs / rel) =   2.25e-08 / 1.61e-09
# of iterations                     =          7 
# of CG iterations                  =          1 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01383 (     0.011 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  216 |                           216
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        78         0 |         2        78         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       472       333 |         2       472       333
  total:              2       852       333 |         2       852       333
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.045810e+02   1.78e-15
      10    9.148490e+01   1.79e-08   1.31e-05   1.69e-02      0.02

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.14848957551099e+01
Final feasibility error (abs / rel) =   1.79e-08 / 1.79e-08
Final optimality error  (abs / rel) =   1.31e-05 / 8.69e-07
# of iterations                     =         10 
# of CG iterations                  =          1 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01685 (     0.014 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  210 |                           210
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        72         0 |         2        72         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       436       311 |         2       436       311
  total:              2       816       311 |         2       816       311
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.048688e+02   4.44e-16
       5    9.735387e+01   3.81e-07   6.83e-06   3.78e-03      0.02

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.73538727221633e+01
Final feasibility error (abs / rel) =   3.81e-07 / 3.81e-07
Final optimality error  (abs / rel) =   6.83e-06 / 4.91e-07
# of iterations                     =          5 
# of CG iterations                  =          3 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01713 (     0.014 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  214 |                           214
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        76         0 |         2        76         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       460       321 |         2       460       321
  total:              2       840       321 |         2       840       321
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.049121e+02   4.44e-16
      10    9.953095e+01   4.11e-05   3.19e+00   5.80e-02      0.02
      17    9.943247e+01   1.76e-08   8.97e-06   7.75e-03      0.03

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.94324682109236e+01
Final feasibility error (abs / rel) =   1.76e-08 / 1.76e-08
Final optimality error  (abs / rel) =   8.97e-06 / 7.22e-07
# of iterations                     =         17 
# of CG iterations                  =         24 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.02781 (     0.025 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  213 |                           213
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        75         0 |         2        75         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       454       323 |         2       454       323
  total:              2       834       323 |         2       834       323
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.059825e+02   1.78e-15
       8    8.830155e+01   8.69e-11   2.81e-09   3.16e-06      0.01

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   8.83015474514898e+01
Final feasibility error (abs / rel) =   8.69e-11 / 8.69e-11
Final optimality error  (abs / rel) =   2.81e-09 / 1.95e-10
# of iterations                     =          8 
# of CG iterations                  =          2 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01403 (     0.011 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  217 |                           217
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        79         0 |         2        79         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       478       335 |         2       478       335
  total:              2       858       335 |         2       858       335
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.071087e+02   1.78e-15
       3    1.040000e+02   1.79e-10   1.18e-05   2.44e-03      0.01

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.04000022642711e+02
Final feasibility error (abs / rel) =   1.79e-10 / 1.79e-10
Final optimality error  (abs / rel) =   1.18e-05 / 9.09e-07
# of iterations                     =          3 
# of CG iterations                  =          0 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01245 (     0.009 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  216 |                           216
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        78         0 |         2        78         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       472       331 |         2       472       331
  total:              2       852       331 |         2       852       331
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.071112e+02   4.44e-16
       4    1.040000e+02   1.25e-10   7.57e-07   1.62e-04      0.02

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.04000000127636e+02
Final feasibility error (abs / rel) =   1.25e-10 / 1.25e-10
Final optimality error  (abs / rel) =   7.57e-07 / 5.82e-08
# of iterations                     =          4 
# of CG iterations                  =          0 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01580 (     0.011 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  215 |                           215
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        77         0 |         2        77         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       466       331 |         2       466       331
  total:              2       846       331 |         2       846       331
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.077682e+02   4.44e-16
       7    9.397971e+01   2.03e-09   1.16e-05   1.81e-04      0.02

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.39797078954689e+01
Final feasibility error (abs / rel) =   2.03e-09 / 2.03e-09
Final optimality error  (abs / rel) =   1.16e-05 / 8.69e-07
# of iterations                     =          7 
# of CG iterations                  =          0 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01569 (     0.013 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  210 |                           210
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        72         0 |         2        72         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       436       309 |         2       436       309
  total:              2       816       309 |         2       816       309
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.079295e+02   8.03e-01
       8    9.657308e+01   1.87e-09   1.18e-06   6.65e-05      0.02

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.65730771303135e+01
Final feasibility error (abs / rel) =   1.87e-09 / 1.87e-09
Final optimality error  (abs / rel) =   1.18e-06 / 8.55e-08
# of iterations                     =          8 
# of CG iterations                  =          2 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01867 (     0.016 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  216 |                           216
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        78         0 |         2        78         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       472       337 |         2       472       337
  total:              2       852       337 |         2       852       337
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.082431e+02   6.19e-01
      10    9.760927e+01   3.19e-11   1.33e-01   1.40e-04      0.03
      18    9.760770e+01   1.46e-08   7.96e-08   5.55e-04      0.04

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.76076971541381e+01
Final feasibility error (abs / rel) =   1.46e-08 / 1.46e-08
Final optimality error  (abs / rel) =   7.96e-08 / 5.26e-09
# of iterations                     =         18 
# of CG iterations                  =          5 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.04302 (     0.031 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  214 |                           214
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        76         0 |         2        76         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       460       327 |         2       460       327
  total:              2       840       327 |         2       840       327
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.094025e+02   1.78e-15
      10    9.132068e+01   1.35e-03   7.42e+00   1.80e-01      0.02
      20    9.092343e+01   5.11e-11   8.96e+00   1.87e-04      0.03
      30    1.040582e+02   8.14e-04   6.43e+03   1.06e+00      0.04
      40    9.846307e+01   9.64e-03   3.62e+01   3.67e+00      0.05
      50    9.093071e+01   3.83e-07   3.41e-02   1.22e-02      0.06
      60    9.092308e+01   1.17e-08   1.85e-05   2.29e-05      0.07
      61    9.092308e+01   9.78e-11   9.78e-11   1.53e-07      0.07

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.09230769210969e+01
Final feasibility error (abs / rel) =   9.78e-11 / 9.78e-11
Final optimality error  (abs / rel) =   9.78e-11 / 6.45e-12
# of iterations                     =         61 
# of CG iterations                  =         54 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.07405 (     0.071 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  212 |                           212
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        74         0 |         2        74         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       448       315 |         2       448       315
  total:              2       828       315 |         2       828       315
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.100986e+02   4.44e-16
       5    1.041275e+02   2.31e-08   1.25e-05   1.13e-02      0.01

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.04127509286419e+02
Final feasibility error (abs / rel) =   2.31e-08 / 2.31e-08
Final optimality error  (abs / rel) =   1.25e-05 / 9.37e-07
# of iterations                     =          5 
# of CG iterations                  =          3 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01186 (     0.009 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  210 |                           210
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        72         0 |         2        72         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       436       313 |         2       436       313
  total:              2       816       313 |         2       816       313
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.103638e+02   1.86e-01
       5    9.866667e+01   3.13e-11   2.68e-07   5.37e-05      0.01

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.86666667268146e+01
Final feasibility error (abs / rel) =   3.13e-11 / 3.13e-11
Final optimality error  (abs / rel) =   2.68e-07 / 2.17e-08
# of iterations                     =          5 
# of CG iterations                  =          0 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01138 (     0.009 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  213 |                           213
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        75         0 |         2        75         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       454       321 |         2       454       321
  total:              2       834       321 |         2       834       321
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.106264e+02   1.78e-15
       8    9.706218e+01   8.62e-11   5.72e-09   5.46e-06      0.02

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.70621778253540e+01
Final feasibility error (abs / rel) =   8.62e-11 / 8.62e-11
Final optimality error  (abs / rel) =   5.72e-09 / 4.12e-10
# of iterations                     =          8 
# of CG iterations                  =          1 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01978 (     0.015 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  210 |                           210
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        72         0 |         2        72         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       436       309 |         2       436       309
  total:              2       816       309 |         2       816       309
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.121311e+02   1.78e-15
      10    9.707160e+01   2.70e-06   5.17e+00   1.29e-02      0.02
      20    9.706218e+01   4.67e-13   5.60e+00   7.57e-06      0.02
      22    9.706218e+01   4.91e-14   8.92e-08   3.13e-07      0.03

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.70621803671025e+01
Final feasibility error (abs / rel) =   4.91e-14 / 4.91e-14
Final optimality error  (abs / rel) =   8.92e-08 / 6.43e-09
# of iterations                     =         22 
# of CG iterations                  =          5 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.02527 (     0.023 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  211 |                           211
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        73         0 |         2        73         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       442       315 |         2       442       315
  total:              2       822       315 |         2       822       315
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.129405e+02   8.88e-16
      10    1.003480e+02   2.57e-08   3.11e-04   9.60e-04      0.02
      20    1.003435e+02   2.01e-08   2.72e-04   8.48e-04      0.03
      30    1.002975e+02   4.12e-06   5.97e-03   1.21e-02      0.04
      40    1.003377e+02   5.51e-03   1.06e-01   1.08e-02      0.07
      49    1.002667e+02   7.01e-12   5.26e-08   5.74e-04      0.07

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.00266667350594e+02
Final feasibility error (abs / rel) =   7.01e-12 / 7.01e-12
Final optimality error  (abs / rel) =   5.26e-08 / 4.20e-09
# of iterations                     =         49 
# of CG iterations                  =         23 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.07355 (     0.071 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  210 |                           210
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        72         0 |         2        72         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       436       311 |         2       436       311
  total:              2       816       311 |         2       816       311
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.135830e+02   8.88e-16
      10    9.601159e+01   6.68e-07   2.20e+00   1.38e-02      0.02
      20    9.600000e+01   3.94e-09   2.37e+00   3.19e-06      0.04
      23    9.600000e+01   2.07e-11   6.96e-08   2.69e-07      0.05

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.60000003348608e+01
Final feasibility error (abs / rel) =   2.07e-11 / 2.07e-11
Final optimality error  (abs / rel) =   6.96e-08 / 5.80e-09
# of iterations                     =         23 
# of CG iterations                  =          1 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.04899 (     0.046 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  214 |                           214
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        76         0 |         2        76         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       460       327 |         2       460       327
  total:              2       840       327 |         2       840       327
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.138606e+02   8.88e-16
      10    9.733323e+01   6.87e-07   3.79e-02   1.16e+00      0.02
      12    9.733263e+01   4.73e-07   5.77e-06   5.11e-03      0.02

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.73326269986992e+01
Final feasibility error (abs / rel) =   4.73e-07 / 4.73e-07
Final optimality error  (abs / rel) =   5.77e-06 / 3.74e-07
# of iterations                     =         12 
# of CG iterations                  =          3 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.02201 (     0.019 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  214 |                           214
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        76         0 |         2        76         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       460       329 |         2       460       329
  total:              2       840       329 |         2       840       329
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.183069e+02   2.99e-01
      10    1.025365e+02   7.81e-08   1.68e-05   6.01e-04      0.04
      11    1.025365e+02   9.79e-11   1.18e-10   2.67e-06      0.04

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.02536503257969e+02
Final feasibility error (abs / rel) =   9.79e-11 / 9.79e-11
Final optimality error  (abs / rel) =   1.18e-10 / 9.85e-12
# of iterations                     =         11 
# of CG iterations                  =         10 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.04040 (     0.024 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  214 |                           214
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        76         0 |         2        76         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       460       319 |         2       460       319
  total:              2       840       319 |         2       840       319
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.195090e+02   6.05e-01
       6    1.177019e+02   1.77e-09   1.12e-08   2.35e-05      0.02

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.17701901502540e+02
Final feasibility error (abs / rel) =   1.77e-09 / 1.77e-09
Final optimality error  (abs / rel) =   1.12e-08 / 7.64e-10
# of iterations                     =          6 
# of CG iterations                  =          7 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01814 (     0.015 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  212 |                           212
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        74         0 |         2        74         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       448       313 |         2       448       313
  total:              2       828       313 |         2       828       313
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.203355e+02   3.32e-01
      10    1.124018e+02   3.06e-03   8.86e-01   9.14e-01      0.02
      14    1.103177e+02   1.12e-10   2.88e-07   1.32e-04      0.02

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.10317703418212e+02
Final feasibility error (abs / rel) =   1.12e-10 / 1.12e-10
Final optimality error  (abs / rel) =   2.88e-07 / 2.15e-08
# of iterations                     =         14 
# of CG iterations                  =          4 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01985 (     0.016 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  211 |                           211
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        73         0 |         2        73         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       442       313 |         2       442       313
  total:              2       822       313 |         2       822       313
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.213701e+02   8.88e-16
      10    1.067262e+02   2.22e-06   9.74e+00   6.95e-02      0.02
      20    1.066667e+02   2.25e-11   9.90e+00   1.32e-05      0.03
      23    1.066667e+02   1.32e-11   6.75e-08   4.29e-07      0.04

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.06666667424464e+02
Final feasibility error (abs / rel) =   1.32e-11 / 1.32e-11
Final optimality error  (abs / rel) =   6.75e-08 / 5.06e-09
# of iterations                     =         23 
# of CG iterations                  =          8 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.03743 (     0.035 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  213 |                           213
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        75         0 |         2        75         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       454       319 |         2       454       319
  total:              2       834       319 |         2       834       319
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.226169e+02   4.44e-16
      10    9.332400e+01   3.78e-05   3.92e+00   2.46e-02      0.02
      18    9.330938e+01   4.41e-11   1.62e-07   3.00e-05      0.02

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.33093779873971e+01
Final feasibility error (abs / rel) =   4.41e-11 / 4.41e-11
Final optimality error  (abs / rel) =   1.62e-07 / 1.39e-08
# of iterations                     =         18 
# of CG iterations                  =          8 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.02181 (     0.019 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  212 |                           212
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        74         0 |         2        74         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       448       315 |         2       448       315
  total:              2       828       315 |         2       828       315
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.292778e+02   1.78e-15
       7    9.540469e+01   6.63e-11   4.63e-09   2.62e-05      0.02

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.54046866326778e+01
Final feasibility error (abs / rel) =   6.63e-11 / 6.63e-11
Final optimality error  (abs / rel) =   4.63e-09 / 3.91e-10
# of iterations                     =          7 
# of CG iterations                  =          3 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.02037 (     0.015 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  215 |                           215
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        77         0 |         2        77         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       466       331 |         2       466       331
  total:              2       846       331 |         2       846       331
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.300069e+02   2.81e-01
      10    1.154186e+02   3.71e-06   1.52e-04   9.78e-04      0.02
      11    1.154186e+02   1.73e-10   1.67e-08   4.89e-06      0.03

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.15418640734512e+02
Final feasibility error (abs / rel) =   1.73e-10 / 1.73e-10
Final optimality error  (abs / rel) =   1.67e-08 / 1.14e-09
# of iterations                     =         11 
# of CG iterations                  =          7 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.02535 (     0.023 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  215 |                           215
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        77         0 |         2        77         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       466       331 |         2       466       331
  total:              2       846       331 |         2       846       331
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.322576e+02   1.78e-15
      10    9.658895e+01   4.37e-02   1.54e+00   1.74e+00      0.03
      20    9.623587e+01   6.85e-08   6.06e+00   1.07e-03      0.05
      21    9.623559e+01   2.26e-08   2.26e-08   1.08e-03      0.05

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.62355875209998e+01
Final feasibility error (abs / rel) =   2.26e-08 / 2.26e-08
Final optimality error  (abs / rel) =   2.26e-08 / 1.88e-09
# of iterations                     =         21 
# of CG iterations                  =         12 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.05391 (     0.042 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  214 |                           214
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        76         0 |         2        76         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       460       325 |         2       460       325
  total:              2       840       325 |         2       840       325
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.337865e+02   1.78e-15
      10    9.817008e+01   2.40e-03   2.26e+00   2.22e-01      0.03
      20    9.733798e+01   7.79e-07   4.69e-01   4.01e-03      0.04
      30    9.600137e+01   7.24e-10   8.46e+00   5.29e-04      0.04
      40    9.599992e+01   1.79e-06   1.13e+00   1.42e-05      0.07
      47    9.536776e+01   4.83e-11   1.27e-09   7.60e-06      0.08

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.53677647439514e+01
Final feasibility error (abs / rel) =   4.83e-11 / 4.83e-11
Final optimality error  (abs / rel) =   1.27e-09 / 1.08e-10
# of iterations                     =         47 
# of CG iterations                  =         22 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.07590 (     0.072 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  211 |                           211
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        73         0 |         2        73         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       442       313 |         2       442       313
  total:              2       822       313 |         2       822       313
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.339413e+02   4.44e-16
      10    1.134423e+02   6.25e-03   5.04e+00   6.29e-01      0.03
      20    1.125334e+02   2.70e-09   5.31e+00   1.60e-04      0.03
      24    1.125331e+02   8.28e-10   5.86e-07   1.65e-09      0.04

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.12533094012345e+02
Final feasibility error (abs / rel) =   8.28e-10 / 8.28e-10
Final optimality error  (abs / rel) =   5.86e-07 / 4.17e-08
# of iterations                     =         24 
# of CG iterations                  =         16 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.04354 (     0.041 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  212 |                           212
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        74         0 |         2        74         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       448       319 |         2       448       319
  total:              2       828       319 |         2       828       319
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.342001e+02   1.78e-15
       9    1.162335e+02   1.02e-08   2.99e-07   3.58e-04      0.03

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.16233527289522e+02
Final feasibility error (abs / rel) =   1.02e-08 / 1.02e-08
Final optimality error  (abs / rel) =   2.99e-07 / 2.21e-08
# of iterations                     =          9 
# of CG iterations                  =          6 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.02578 (     0.014 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  213 |                           213
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        75         0 |         2        75         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       454       319 |         2       454       319
  total:              2       834       319 |         2       834       319
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.346315e+02   1.78e-15
      10    1.004304e+02   1.55e-03   1.53e+00   9.31e-01      0.02
      16    1.002254e+02   9.64e-11   9.64e-11   7.17e-07      0.03

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.00225371302598e+02
Final feasibility error (abs / rel) =   9.64e-11 / 9.64e-11
Final optimality error  (abs / rel) =   9.64e-11 / 6.44e-12
# of iterations                     =         16 
# of CG iterations                  =          9 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.02718 (     0.024 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  214 |                           214
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        76         0 |         2        76         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       460       329 |         2       460       329
  total:              2       840       329 |         2       840       329
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.356393e+02   5.70e-01
      10    1.180374e+02   2.71e-01   1.26e+00   2.40e+00      0.02
      13    1.168494e+02   2.08e-09   2.77e-07   2.82e-05      0.03

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.16849431179318e+02
Final feasibility error (abs / rel) =   2.08e-09 / 2.08e-09
Final optimality error  (abs / rel) =   2.77e-07 / 1.88e-08
# of iterations                     =         13 
# of CG iterations                  =         12 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.02631 (     0.024 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  213 |                           213
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        75         0 |         2        75         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       454       327 |         2       454       327
  total:              2       834       327 |         2       834       327
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.364236e+02   4.33e-01
       9    1.018108e+02   8.73e-11   1.29e-09   1.06e-05      0.01

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.01810776640338e+02
Final feasibility error (abs / rel) =   8.73e-11 / 8.73e-11
Final optimality error  (abs / rel) =   1.29e-09 / 8.78e-11
# of iterations                     =          9 
# of CG iterations                  =          7 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01505 (     0.012 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  215 |                           215
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        77         0 |         2        77         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       466       329 |         2       466       329
  total:              2       846       329 |         2       846       329
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.372541e+02   1.78e-15
      10    1.101082e+02   4.96e-04   6.37e+00   7.97e-01      0.02
      20    1.096309e+02   5.28e-11   5.38e+00   1.90e-04      0.02
      30    1.096307e+02   1.25e-09   2.27e+00   3.90e-07      0.03
      31    1.096307e+02   1.37e-10   4.03e-08   4.26e-07      0.03

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.09630694705543e+02
Final feasibility error (abs / rel) =   1.37e-10 / 1.37e-10
Final optimality error  (abs / rel) =   4.03e-08 / 2.87e-09
# of iterations                     =         31 
# of CG iterations                  =          5 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.02993 (     0.027 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  215 |                           215
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        77         0 |         2        77         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       466       327 |         2       466       327
  total:              2       846       327 |         2       846       327
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.374910e+02   1.78e-15
      10    1.066892e+02   2.86e-03   7.34e+00   2.47e+00      0.02
      20    1.047114e+02   1.52e-08   6.29e+00   4.98e-04      0.02
      30    1.047107e+02   8.55e-11   9.88e-08   5.22e-07      0.03

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.04710678723531e+02
Final feasibility error (abs / rel) =   8.55e-11 / 8.55e-11
Final optimality error  (abs / rel) =   9.88e-08 / 6.67e-09
# of iterations                     =         30 
# of CG iterations                  =         18 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.03205 (     0.029 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  214 |                           214
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        76         0 |         2        76         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       460       323 |         2       460       323
  total:              2       840       323 |         2       840       323
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.377079e+02   4.44e-16
      10    1.031808e+02   3.84e-03   6.50e-01   1.54e-02      0.03
      20    1.024328e+02   4.65e-12   1.35e+01   4.15e-05      0.04
      30    1.024327e+02   8.49e-11   5.47e+00   5.56e-06      0.05
      40    4.129159e+04   5.44e+00   1.03e+03   6.31e+01      0.06
      50    1.743548e+04   6.69e-01   2.02e+00   7.52e+00      0.07
      60    8.540916e+02   8.76e-03   6.70e+00   5.68e+02      0.08
      70    2.958233e+02   6.66e-04   7.15e+00   8.44e+00      0.09
      80    2.269074e+02   8.43e-06   8.25e+00   3.68e+00      0.11
      90    1.655789e+02   6.92e-04   1.15e+01   3.44e+00      0.11
     100    1.302962e+02   3.85e-02   1.00e+00   7.11e-02      0.12
     110    1.027328e+02   5.55e-03   9.35e-01   6.16e-03      0.13
     120    9.869437e+01   1.57e-07   3.19e+01   3.54e-03      0.14
     123    9.868488e+01   9.81e-11   1.14e-06   9.25e-04      0.14

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.86848787566758e+01
Final feasibility error (abs / rel) =   9.81e-11 / 9.81e-11
Final optimality error  (abs / rel) =   1.14e-06 / 8.06e-08
# of iterations                     =        123 
# of CG iterations                  =        128 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.14426 (     0.126 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  210 |                           210
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        72         0 |         2        72         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       436       311 |         2       436       311
  total:              2       816       311 |         2       816       311
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.377634e+02   8.88e-16
      10    9.613997e+01   5.23e-05   2.11e+00   2.75e-01      0.02
      20    9.613154e+01   5.36e-10   1.50e+00   1.19e-02      0.02
      24    9.613153e+01   4.58e-13   3.24e-08   2.75e-01      0.03

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.61315317221432e+01
Final feasibility error (abs / rel) =   4.58e-13 / 4.58e-13
Final optimality error  (abs / rel) =   3.24e-08 / 2.77e-09
# of iterations                     =         24 
# of CG iterations                  =         11 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.02811 (     0.025 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  215 |                           215
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        77         0 |         2        77         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       466       335 |         2       466       335
  total:              2       846       335 |         2       846       335
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.379388e+02   9.16e-01
      10    9.886450e+01   1.66e-02   9.73e-02   5.11e-01      0.02
      14    9.881584e+01   8.30e-11   1.39e-10   9.87e-07      0.03

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.88158383490043e+01
Final feasibility error (abs / rel) =   8.30e-11 / 8.30e-11
Final optimality error  (abs / rel) =   1.39e-10 / 8.94e-12
# of iterations                     =         14 
# of CG iterations                  =         10 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.02677 (     0.023 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  210 |                           210
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        72         0 |         2        72         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       436       309 |         2       436       309
  total:              2       816       309 |         2       816       309
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.380924e+02   1.81e-01
      10    1.157390e+02   3.93e-09   3.58e-07   5.54e-04      0.02

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.15739040543913e+02
Final feasibility error (abs / rel) =   3.93e-09 / 3.93e-09
Final optimality error  (abs / rel) =   3.58e-07 / 2.41e-08
# of iterations                     =         10 
# of CG iterations                  =          9 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.02340 (     0.021 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  213 |                           213
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        75         0 |         2        75         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       454       321 |         2       454       321
  total:              2       834       321 |         2       834       321
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.391330e+02   1.78e-15
       7    1.276260e+02   1.40e-10   4.47e-07   1.79e-04      0.02

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.27625966466951e+02
Final feasibility error (abs / rel) =   1.40e-10 / 1.40e-10
Final optimality error  (abs / rel) =   4.47e-07 / 2.74e-08
# of iterations                     =          7 
# of CG iterations                  =          2 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01666 (     0.010 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  214 |                           214
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        76         0 |         2        76         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       460       325 |         2       460       325
  total:              2       840       325 |         2       840       325
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.392231e+02   3.11e-01
      10    1.078595e+02   4.92e-02   4.68e+00   1.79e+00      0.02
      20    9.901329e+01   4.50e-08   9.47e+00   1.68e-03      0.03
      30    9.900993e+01   8.57e-11   8.93e+00   1.61e-06      0.03
      32    9.900993e+01   8.52e-11   6.85e-08   4.77e-07      0.04

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.90099299451594e+01
Final feasibility error (abs / rel) =   8.52e-11 / 8.52e-11
Final optimality error  (abs / rel) =   6.85e-08 / 4.84e-09
# of iterations                     =         32 
# of CG iterations                  =         17 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.03808 (     0.035 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  215 |                           215
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        77         0 |         2        77         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       466       331 |         2       466       331
  total:              2       846       331 |         2       846       331
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.400074e+02   8.88e-16
      10    1.152921e+02   6.49e-04   2.48e-01   1.02e+00      0.02
      12    1.150631e+02   3.11e-09   9.51e-07   2.35e-04      0.02

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.15063084272979e+02
Final feasibility error (abs / rel) =   3.11e-09 / 3.11e-09
Final optimality error  (abs / rel) =   9.51e-07 / 6.46e-08
# of iterations                     =         12 
# of CG iterations                  =          9 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.01943 (     0.016 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  210 |                           210
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        72         0 |         2        72         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       436       309 |         2       436       309
  total:              2       816       309 |         2       816       309
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.417551e+02   5.66e-01
      10    9.615178e+01   6.53e-05   4.36e+00   1.30e-01      0.02
      20    9.613154e+01   1.19e-10   6.43e+00   2.66e-02      0.03
      25    9.613153e+01   8.19e-12   7.25e-08   5.62e-03      0.04

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.61315320371946e+01
Final feasibility error (abs / rel) =   8.19e-12 / 8.19e-12
Final optimality error  (abs / rel) =   7.25e-08 / 6.20e-09
# of iterations                     =         25 
# of CG iterations                  =         10 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.03683 (     0.034 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  210 |                           210
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        72         0 |         2        72         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       436       309 |         2       436       309
  total:              2       816       309 |         2       816       309
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.441549e+02   8.88e-16
      10    1.005086e+02   5.44e-04   9.86e-01   6.81e-03      0.02
      20    9.950485e+01   2.66e-10   1.22e+01   1.74e-04      0.03
      24    9.950460e+01   4.16e-13   1.85e-08   1.09e-05      0.04

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.95046011531449e+01
Final feasibility error (abs / rel) =   4.16e-13 / 4.16e-13
Final optimality error  (abs / rel) =   1.85e-08 / 1.30e-09
# of iterations                     =         24 
# of CG iterations                  =         12 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.03933 (     0.037 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  212 |                           212
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        74         0 |         2        74         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       448       317 |         2       448       317
  total:              2       828       317 |         2       828       317
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.444398e+02   1.78e-15
      10    9.728257e+01   3.63e-05   1.26e-01   3.07e-01      0.04
      13    9.722890e+01   9.88e-11   9.88e-11   5.03e-06      0.04

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.72288980926018e+01
Final feasibility error (abs / rel) =   9.88e-11 / 9.88e-11
Final optimality error  (abs / rel) =   9.88e-11 / 8.38e-12
# of iterations                     =         13 
# of CG iterations                  =          4 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.04098 (     0.018 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  211 |                           211
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        73         0 |         2        73         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       442       317 |         2       442       317
  total:              2       822       317 |         2       822       317
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.447807e+02   1.78e-15
      10    9.902889e+01   1.66e-06   1.36e+01   1.58e-02      0.02
      20    9.900994e+01   3.84e-09   9.12e+00   6.95e-06      0.02
      24    9.900993e+01   9.36e-11   8.56e-08   3.42e-07      0.03

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.90099301860613e+01
Final feasibility error (abs / rel) =   9.36e-11 / 9.36e-11
Final optimality error  (abs / rel) =   8.56e-08 / 6.05e-09
# of iterations                     =         24 
# of CG iterations                  =          3 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.02910 (     0.026 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  213 |                           213
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        75         0 |         2        75         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       454       315 |         2       454       315
  total:              2       834       315 |         2       834       315
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.450794e+02   3.52e-01
      10    1.135844e+02   1.71e-04   5.41e+00   5.64e-02      0.02
      20    1.134628e+02   3.58e-12   5.93e+00   3.19e-05      0.02
      22    1.134628e+02   2.46e-08   1.05e-08   4.86e-06      0.03

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.13462825577645e+02
Final feasibility error (abs / rel) =   2.46e-08 / 2.46e-08
Final optimality error  (abs / rel) =   1.05e-08 / 7.40e-10
# of iterations                     =         22 
# of CG iterations                  =         17 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.02704 (     0.024 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  211 |                           211
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        73         0 |         2        73         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       442       317 |         2       442       317
  total:              2       822       317 |         2       822       317
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.453822e+02   8.88e-16
      10    1.142470e+02   4.18e-02   1.10e+01   2.53e+00      0.02
      20    1.123690e+02   6.06e-09   5.51e+00   2.36e-04      0.03
      29    1.123686e+02   1.13e-14   7.59e-08   7.57e-07      0.04

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.12368569207489e+02
Final feasibility error (abs / rel) =   1.13e-14 / 1.13e-14
Final optimality error  (abs / rel) =   7.59e-08 / 5.40e-09
# of iterations                     =         29 
# of CG iterations                  =         25 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.03852 (     0.036 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  215 |                           215
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        77         0 |         2        77         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       466       333 |         2       466       333
  total:              2       846       333 |         2       846       333
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.456398e+02   8.88e-16
      10    1.020013e+02   4.93e-01   1.11e+01   2.46e+00      0.02
      17    1.011605e+02   8.79e-10   2.13e-07   4.76e-04      0.03

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.01160486104514e+02
Final feasibility error (abs / rel) =   8.79e-10 / 8.79e-10
Final optimality error  (abs / rel) =   2.13e-07 / 1.34e-08
# of iterations                     =         17 
# of CG iterations                  =         19 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.02569 (     0.023 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  212 |                           212
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        74         0 |         2        74         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       448       317 |         2       448       317
  total:              2       828       317 |         2       828       317
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.488991e+02   8.88e-16
      10    9.695938e+01   1.30e-04   1.66e+00   7.51e-01      0.02
      20    9.665350e+01   7.71e-08   2.35e+00   1.59e-03      0.03
      30    9.665282e+01   8.57e-11   2.50e+00   3.49e-06      0.04
      32    9.665282e+01   5.11e-11   7.27e-08   9.11e-07      0.04

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   9.66528160276009e+01
Final feasibility error (abs / rel) =   5.11e-11 / 5.11e-11
Final optimality error  (abs / rel) =   7.27e-08 / 6.12e-09
# of iterations                     =         32 
# of CG iterations                  =         10 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.04376 (     0.041 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================

Artelys Knitro 16.0.0: 
=======================================
          Commercial License
         Artelys Knitro 16.0.0
=======================================

Knitro using 1 thread.
Knitro presolve eliminated 0 variables (0%) and 0 constraints (0%) in 0.00s.

concurrent_evals         0
datacheck                0
feastol                  1e-06
feastol_abs              0.001
findiff_numthreads       1
hessian_no_f             1
hessopt                  1
opttol                   1e-06
opttol_abs               0.001

Problem Characteristics                     |           Presolved
-----------------------
Problem type: QCQP
Objective: minimize / quadratic
Number of variables:                     78 |                            78
  bounds:         lower     upper     range |     lower     upper     range
                     70         0         4 |        70         0         4
                             free     fixed |                free     fixed
                                4         0 |                   4         0
Number of constraints:                  212 |                           212
                    eq.     ineq.     range |       eq.     ineq.     range
  linear:            68        68         0 |        68        68         0
  quadratic:          2        74         0 |         2        74         0
Number of nonzeros:
              objective  Jacobian   Hessian | objective  Jacobian   Hessian
  linear:             0       380           |         0       380          
  quadratic:          2       448       313 |         2       448       313
  total:              2       828       313 |         2       828       313
Coefficient range:
  linear objective:          [0e+00, 0e+00] |                [0e+00, 0e+00]
  linear constraints:        [1e+00, 8e+00] |                [1e+00, 8e+00]
  quadratic objective:       [1e+00, 1e+00] |                [1e+00, 1e+00]
  quadratic constraints:     [1e+00, 1e+00] |                [1e+00, 1e+00]
  variable bounds:           [1e+00, 1e+00] |                [1e+00, 1e+00]
  constraint bounds:         [1e+00, 1e+00] |                [1e+00, 1e+00]

Knitro using the Interior-Point/Barrier Direct algorithm.

    Iter       Objective  FeasError   OptError   ||Step||      Time 
--------  --------------  ---------  ---------  ---------  --------
       0    1.535093e+02   1.78e-15
      10    1.045818e+02   2.73e-04   7.89e+00   5.37e-01      0.02
      20    1.040002e+02   1.42e-10   5.66e+00   1.18e-04      0.02
      22    1.040002e+02   5.36e-09   2.61e-06   3.65e-05      0.02

EXIT: Locally optimal solution found.

Final Statistics
----------------
Final objective value               =   1.04000163232559e+02
Final feasibility error (abs / rel) =   5.36e-09 / 5.36e-09
Final optimality error  (abs / rel) =   2.61e-06 / 2.01e-07
# of iterations                     =         22 
# of CG iterations                  =          4 
# of function evaluations           =          0
# of gradient evaluations           =          0
# of Hessian evaluations            =          0
Total program time (secs)           =       0.02436 (     0.020 CPU time)
Time spent in evaluations (secs)    =       0.00000

================================================================================


draw_areas(starts, packings)
Every start solvedstart 1: 65.85start 2: 89.71start 3: 91.55start 4: 94.63start 5: 95.67start 6: 96.33start 7: 98.22start 8: 98.78start 9: 100.99start 10: 101.16start 11: 101.51start 12: 101.56start 13: 102.71start 14: 103.06start 15: 104.48start 16: 104.58start 17: 104.87start 18: 104.91start 19: 105.98start 20: 107.11start 21: 107.11start 22: 107.77start 23: 107.93start 24: 108.24start 25: 109.40start 26: 110.10start 27: 110.36start 28: 110.63start 29: 112.13start 30: 112.94start 31: 113.58start 32: 113.86start 33: 118.31start 34: 119.51start 35: 120.34start 36: 121.37start 37: 122.62start 38: 129.28start 39: 130.01start 40: 132.26start 41: 133.79start 42: 133.94start 43: 134.20start 44: 134.63start 45: 135.64start 46: 136.42start 47: 137.25start 48: 137.49start 49: 137.71start 50: 137.76start 51: 137.94start 52: 138.09start 53: 139.13start 54: 139.22start 55: 140.01start 56: 141.76start 57: 144.15start 58: 144.44start 59: 144.78start 60: 145.08start 61: 145.38start 62: 145.64start 63: 148.90start 64: 153.51solved 1: 60.00solved 2: 88.65solved 3: 90.00solved 4: 90.00solved 5: 92.00solved 6: 93.32solved 7: 98.13solved 8: 93.19solved 9: 95.69solved 10: 100.47solved 11: 101.33solved 12: 95.23solved 13: 96.25solved 14: 98.00solved 15: 93.09solved 16: 91.48solved 17: 97.35solved 18: 99.43solved 19: 88.30solved 20: 104.00solved 21: 104.00solved 22: 93.98solved 23: 96.57solved 24: 97.61solved 25: 90.92solved 26: 104.13solved 27: 98.67solved 28: 97.06solved 29: 97.06solved 30: 100.27solved 31: 96.00solved 32: 97.33solved 33: 102.54solved 34: 117.70solved 35: 110.32solved 36: 106.67solved 37: 93.31solved 38: 95.40solved 39: 115.42solved 40: 96.24solved 41: 95.37solved 42: 112.53solved 43: 116.23solved 44: 100.23solved 45: 116.85solved 46: 101.81solved 47: 109.63solved 48: 104.71solved 49: 98.68solved 50: 96.13solved 51: 98.82solved 52: 115.74solved 53: 127.63solved 54: 99.01solved 55: 115.06solved 56: 96.13solved 57: 99.50solved 58: 97.23solved 59: 99.01solved 60: 113.46solved 61: 112.37solved 62: 101.16solved 63: 96.65solved 64: 104.00best 60.0010203040506050100150Start, ordered by increasing areaRectangle areastart areasolved area

Conclusion

report_spread(starts, packings)
     start   start area   solved area   of best
-----------------------------------------------
  smallest        65.85         60.00     1.00x
    median       118.31        102.54     1.71x
   largest       153.51        104.00     1.73x

64 starts solved, 1 reaching the best area of 60.00. The worst solve is 2.13 times larger.

The plot above shows the value of the initial point strategy: the model being nonconvex, the quality of the solutions degrades as the area of the initial points increases, and no initial point leads to a better solution than the best one.

Generating good initial points and solving the simplified model from them is therefore an effective strategy for this packing problem.

 

Solved with Artelys Knitro · artelys.com