cvx matlab 运行报错,【悬赏求助】MATLAB cvx 工具求解报错

引用matlab linprog的例子

http://www.mathworks.com/help/toolbox/optim/ug/linprog.html

Find x that minimizes

f(x) = –5*x1 – 4*x2 –6*x3,

subject to

x1 – x2 + x3 ≤ 20

3x1 + 2x2 + 4x3 ≤ 42

3x1 + 2x2 ≤ 30

0 ≤ x1, 0 ≤ x2, 0 ≤ x3.

%%%%%matlab linprog code

f = [-5; -4; -6];

A =  [1 -1  1

3  2  4

3  2  0];

b = [20; 42; 30];

lb = zeros(3,1);

[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb);

%%%%cvx toolbox

cvx_begin

variables x1 x2 x3;

minimize(-5*x1 - 4*x2 -6*x3 );

subject to

x1- x2 + x3 <= 20

3*x1 + 2*x2 + 4*x3 <= 42

3*x1 + 2*x2 <= 30

0 <= x1; 0 <= x2; 0 <= x3;

cvx_end

Calling sedumi: 6 variables, 3 equality constraints

For improved efficiency, sedumi is solving the dual problem.

------------------------------------------------------------

SeDuMi 1.21 by AdvOL, 2005-2008 and Jos F. Sturm, 1998-2003.

Alg = 2: xz-corrector, Adaptive Step-Differentiation, theta = 0.250, beta = 0.500

eqs m = 3, order n = 7, dim = 7, blocks = 1

nnz(A) = 11 + 0, nnz(ADA) = 9, nnz(L) = 6

it :     b*y       gap    delta  rate   t/tP*  t/tD*   feas cg cg  prec

0 :            4.35E+002 0.000

1 :  5.10E+001 1.44E+002 0.000 0.3314 0.9000 0.9000   1.84  1  1  3.0E+000

2 :  6.89E+001 3.89E+001 0.000 0.2695 0.9000 0.9000   2.50  1  1  4.9E-001

3 :  7.62E+001 9.96E+000 0.000 0.2563 0.9000 0.9000   0.99  1  1  1.4E-001

4 :  7.80E+001 4.04E-001 0.000 0.0405 0.9900 0.9900   1.03  1  1

iter seconds digits       c*x               b*y

4      0.1  15.7  7.8000000000e+001  7.8000000000e+001

|Ax-b| =  0.0e+000, [Ay-c]_+ =  5.3E-015, |x|= 1.9e+000, |y|= 1.5e+001

Detailed timing (sec)

Pre          IPM          Post

1.092E-001    1.404E-001    3.120E-002

Max-norms: ||b||=6, ||c|| = 42,

Cholesky |add|=0, |skip| = 0, ||L.L|| = 1.82429.

------------------------------------------------------------

Status: Solved

Optimal value (cvx_optval): -78

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作为一个AI语言模型,我无法直接操作Matlab。但是,我可以为您提供一些有关使用CVX求解数独的信息。 CVX是一种用于凸优化的Matlab软件包。数独问题可以转化为线性规划问题,并且可以使用CVX解决。以下是一些基本的步骤: 1. 定义变量:将每个格子定义为一个变量。例如,对于9 x 9的数独,定义一个9 x 9的变量矩阵X。 2. 添加约束条件:添加数独的规则作为约束条件。例如,每个格子只能填入1到9之间的数字,每行、每列、每个3 x 3的小方格内的数字不能重复。 3. 定义目标函数:由于数独问题没有明显的优化目标,因此可以将目标函数定义为任意常数。 4. 使用CVX求解求解:使用CVX求解器解决线性规划问题。 以下是一个使用CVX求解数独的示例代码: ```matlab %定义数独变量 X = zeros(9,9); for i = 1:9 for j = 1:9 X(i,j) = 10*i+j; %将变量定义为两位数,方便后续处理 end end %添加约束条件 cvx_begin variable X(9,9) integer %每个格子只能填入1到9之间的数字 X >= 11 X <= 99 %每行、每列、每个3 x 3的小方格内的数字不能重复 for i = 1:9 sum(X(i,:)) == 45 sum(X(:,i)) == 45 end for i = 1:3:9 for j = 1:3:9 sum(reshape(X(i:i+2,j:j+2),1,[])) == 45 end end cvx_end %输出结果 disp(X) ``` 注意:该代码只是一个简单的示例,可能无法解决所有数独问题。具体实现需要根据具体情况进行调整和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值