Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'xs/src/igl/mosek/mosek_quadprog.h')
-rw-r--r--xs/src/igl/mosek/mosek_quadprog.h145
1 files changed, 0 insertions, 145 deletions
diff --git a/xs/src/igl/mosek/mosek_quadprog.h b/xs/src/igl/mosek/mosek_quadprog.h
deleted file mode 100644
index 38343318a..000000000
--- a/xs/src/igl/mosek/mosek_quadprog.h
+++ /dev/null
@@ -1,145 +0,0 @@
-// This file is part of libigl, a simple c++ geometry processing library.
-//
-// Copyright (C) 2013 Alec Jacobson <alecjacobson@gmail.com>
-//
-// This Source Code Form is subject to the terms of the Mozilla Public License
-// v. 2.0. If a copy of the MPL was not distributed with this file, You can
-// obtain one at http://mozilla.org/MPL/2.0/.
-#ifndef IGL_MOSEK_MOSEK_QUADPROG_H
-#define IGL_MOSEK_MOSEK_QUADPROG_H
-#include "../igl_inline.h"
-#include <vector>
-#include <map>
-#include <mosek.h>
-
-
-#define EIGEN_YES_I_KNOW_SPARSE_MODULE_IS_NOT_STABLE_YET
-#include <Eigen/Dense>
-#include <Eigen/Sparse>
-
-namespace igl
-{
- namespace mosek
- {
- struct MosekData
- {
- // Integer parameters
- std::map<MSKiparame,int> intparam;
- // Double parameters
- std::map<MSKdparame,double> douparam;
- // Default values
- IGL_INLINE MosekData();
- };
- // Solve a convex quadratic optimization problem with linear and constant
- // bounds, that is:
- //
- // Minimize: ½ * xT * Q⁰ * x + cT * x + cf
- //
- // Subject to: lc ≤ Ax ≤ uc
- // lx ≤ x ≤ ux
- //
- // where we are trying to find the optimal vector of values x.
- //
- // Note: Q⁰ must be symmetric and the ½ is a convention of MOSEK
- //
- // Note: Because of how MOSEK accepts different parts of the system, Q
- // should be stored in IJV (aka Coordinate) format and should only include
- // entries in the lower triangle. A should be stored in Column compressed
- // (aka Harwell Boeing) format. As described:
- // http://netlib.org/linalg/html_templates/node92.html
- // or
- // http://en.wikipedia.org/wiki/Sparse_matrix
- // #Compressed_sparse_column_.28CSC_or_CCS.29
- //
- //
- // Templates:
- // Index type for index variables
- // Scalar type for floating point variables (gets cast to double?)
- // Input:
- // n number of variables, i.e. size of x
- // Qi vector of qnnz row indices of non-zeros in LOWER TRIANGLE ONLY of
- // Q⁰
- // Qj vector of qnnz column indices of non-zeros in LOWER TRIANGLE ONLY
- // of Q⁰
- // Qv vector of qnnz values of non-zeros in LOWER TRIANGLE ONLY of Q⁰,
- // such that:
- //
- // Q⁰(Qi[k],Qj[k]) = Qv[k] for k ∈ [0,Qnnz-1], where Qnnz is the
- //
- // number of non-zeros in Q⁰
- // c (optional) vector of n values of c, transpose of coefficient row
- // vector of linear terms, EMPTY means c == 0
- // cf (ignored) value of constant term in objective, 0 means cf == 0, so
- // optional only in the sense that it is mandatory
- // m number of constraints, therefore also number of rows in linear
- // constraint coefficient matrix A, and in linear constraint bound
- // vectors lc and uc
- // Av vector of non-zero values of A, in column compressed order
- // Ari vector of row indices corresponding to non-zero values of A,
- // Acp vector of indices into Ari and Av of the first entry for each
- // column of A, size(Acp) = (# columns of A) + 1 = n + 1
- // lc vector of m linear constraint lower bounds
- // uc vector of m linear constraint upper bounds
- // lx vector of n constant lower bounds
- // ux vector of n constant upper bounds
- // Output:
- // x vector of size n to hold output of optimization
- // Return:
- // true only if optimization was successful with no errors
- //
- // Note: All indices are 0-based
- //
- template <typename Index, typename Scalar>
- IGL_INLINE bool mosek_quadprog(
- const Index n,
- /* mosek won't allow this to be const*/ std::vector<Index> & Qi,
- /* mosek won't allow this to be const*/ std::vector<Index> & Qj,
- /* mosek won't allow this to be const*/ std::vector<Scalar> & Qv,
- const std::vector<Scalar> & c,
- const Scalar cf,
- const Index m,
- /* mosek won't allow this to be const*/ std::vector<Scalar> & Av,
- /* mosek won't allow this to be const*/ std::vector<Index> & Ari,
- const std::vector<Index> & Acp,
- const std::vector<Scalar> & lc,
- const std::vector<Scalar> & uc,
- const std::vector<Scalar> & lx,
- const std::vector<Scalar> & ux,
- MosekData & mosek_data,
- std::vector<Scalar> & x);
- // Wrapper with Eigen elements
- //
- // Inputs:
- // Q n by n square quadratic coefficients matrix **only lower triangle
- // is used**.
- // c n-long vector of linear coefficients
- // cf constant coefficient
- // A m by n square linear coefficienst matrix of inequality constraints
- // lc m-long vector of lower bounds for linear inequality constraints
- // uc m-long vector of upper bounds for linear inequality constraints
- // lx n-long vector of lower bounds
- // ux n-long vector of upper bounds
- // mosek_data parameters struct
- // Outputs:
- // x n-long solution vector
- // Returns true only if optimization finishes without error
- //
- IGL_INLINE bool mosek_quadprog(
- const Eigen::SparseMatrix<double> & Q,
- const Eigen::VectorXd & c,
- const double cf,
- const Eigen::SparseMatrix<double> & A,
- const Eigen::VectorXd & lc,
- const Eigen::VectorXd & uc,
- const Eigen::VectorXd & lx,
- const Eigen::VectorXd & ux,
- MosekData & mosek_data,
- Eigen::VectorXd & x);
- }
-}
-
-#ifndef IGL_STATIC_LIBRARY
-# include "mosek_quadprog.cpp"
-#endif
-
-#endif