我正在使用可选的MOSEK求解器和CVXOPT二次规划,即
sol = cvxopt.solvers.qp(-Q,-p,G,h,A,b,solver='mosek')
Run Code Online (Sandbox Code Playgroud)
现在不使用MOSEK求解器,即
sol = cvxopt.solvers.qp(-Q,-p,G,h,A,b)
Run Code Online (Sandbox Code Playgroud)
使用该命令可以抑制CVXOPT生成的终端输出
cvxopt.solvers.options['show_progress'] = False
Run Code Online (Sandbox Code Playgroud)
但是,使用MOSEK求解器选项时,这不起作用.我在几个循环中的MOSEK求解器产生了很多我不感兴趣的输出,这意味着我看不到我感兴趣的输出(即我选择使用'print'输出的内容).
有谁知道是否有可能抑制MOSEK输出?或者如果没有,潜在的解决方法(将输出传输到文件或其他东西)?
非常感谢!
担
ps抱歉,我无法包含更多特定标签(我不允许创建新标签).
稍后编辑:我在这里上传了我的原始数据样本。它实际上是DICOM格式的分割图像。这个结构的体积是 ~ 16 mL,所以我假设内部椭球体积应该小于这个。为了从 DICOM 图像中提取点,我使用了以下代码:
import os
import numpy as np
import SimpleITK as sitk
def get_volume_ml(image):
x_spacing, y_spacing, z_spacing = image.GetSpacing()
image_nda = sitk.GetArrayFromImage(image)
imageSegm_nda_NonZero = image_nda.nonzero()
num_voxels = len(list(zip(imageSegm_nda_NonZero[0],
imageSegm_nda_NonZero[1],
imageSegm_nda_NonZero[2])))
if 0 >= num_voxels:
print('The mask image does not seem to contain an object.')
return None
volume_object_ml = (num_voxels * x_spacing * y_spacing * z_spacing) / 1000
return volume_object_ml
def get_surface_points(folder_path):
"""
:param folder_path: path to folder where DICOM images are stored
:return: …
Run Code Online (Sandbox Code Playgroud) 我在以下Makefile中面临一个奇怪的问题:
# Mosek path
MOSEKPATH = /autofs/fs1.ece/fs1.eecg.najm/b/b1/power_grid_code/mosek
# Include paths
INCPATHS = -I$(MOSEKPATH)/7/tools/platform/linux64x86/h -I/usr/include/suitesparse -I../include
# Libraries paths
LIBPATHS = -L$(MOSEKPATH)/7/tools/platform/linux64x86/bin
# Link libraries
LIBS = -lboost_timer-mt -lboost_system -lumfpack -lamd -lcolamd -lcholmod -lccolamd -lcamd -lbtf -lcsparse -lcxsparse -lklu -lldl -lspqr -llapack -lblas
MOSEKLIB = -lmosek64
LDOPT = -Wl,-rpath-link,$(MOSEKPATH)/7/tools/platform/linux64x86/bin -Wl,-rpath,'/autofs/fs1.ece/fs1.eecg.najm/b/b1/power_grid_code/mosek/7/tools/platform/linux64x86/bin' -pthread -lc -lm
# Specify compiler
CC = g++-4.7 -m64
# Compiler flags
FLAGS = -O3 -Wall -g
lo1: lo1.c
$(CC) $(FLAGS) -c $(INCPATHS) -o lo1.o lo1.c
$(CC) $(FLAGS) $(LIBPATHS) lo1.o …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 R 包 CVXR 解决具有线性约束的二次优化问题。尽管默认求解器能够解决优化问题,但 Mosek 求解器却不能。我希望使用 Mosek 的原因是因为我需要解决具有 250 多个约束的更大问题,而默认求解器给出的解决方案不准确,因此我希望使用 Mosek 解决更大的问题。这是一个简单的例子,Mosek 不工作:
suppressMessages(suppressWarnings(library(CVXR)))
Run Code Online (Sandbox Code Playgroud)
set.seed(10)
n <- 10
SAMPLES <- 100
mu <- matrix(abs(rnorm(n)), nrow = n)
Sigma <- matrix(rnorm(n^2), nrow = n, ncol = n)
Sigma <- t(Sigma) %*% Sigma
Run Code Online (Sandbox Code Playgroud)
w <- Variable(n)
ret <- t(mu) %*% w
risk <- quad_form(w, Sigma)
constraints <- list(w >= 0, sum(w) == 1,ret==mean(mu))
Run Code Online (Sandbox Code Playgroud)
prob <- Problem(Minimize(risk), constraints)
result <- solve(prob,solver='MOSEK')
Run Code Online (Sandbox Code Playgroud)
它给出了以下错误。
Error in py_call_impl(callable, dots$args, dots$keywords) :
TypeError: …
Run Code Online (Sandbox Code Playgroud) 我已经安装了 3 次 Mosek。它在 python 中工作,但 CVXR(r 包)函数 installed_solvers() 无法找到 MOSEK。
我正在研究 MACos Mojave。我通过 conda 命令安装了 Mosek,获得了学术许可证,在主目录中创建了一个名为 mosek 的文件夹,并将许可证文件放入其中。然后我在 jupyter 实验室中测试了以下脚本https://docs.mosek.com/8.1/pythonapi/design.html#hello-world-in-mosek并得到结果 Solution x = 2.0 ,所以 Mosek 正在工作。然后我安装了reticulate,使用默认目录,替换为 use_python("/Users/apple/anaconda3") 和 use_python("/Users/apple/anaconda3/lib/python3.6") 中的任何一个,函数installed_solvers () 找到了mosek。我的会话信息如下
https://cvxr.rbind.io/cvxr_examples/cvxr_using-other-solvers/中的文档并没有真正说明如何解决问题。有人找到了解决方案吗?谢谢