Это мой код в CVX
:
load('C')
r=C(:,4);
t=C(:,5);
n = size(C,1);
N = 100;
for i=1:n
eta(i,1) = randn()/2;
end
cvx_begin
variable x(n,1)
maximize r'*x - t'*x
subject to
ones(n,1)'*x == N
x >= zeros(n,1)
exp(-x/N) >= eta
cvx_end
Это дает следующую ошибку в строке, где объявлена целевая функция:
«Внутренние размеры матрицы должны совпадать».
Что я делаю не так?
Ошибка сохраняется, даже если я пишу последнее ограничение следующим образом:
for i=1:n
exp(-x(i,1)/N) >= eta(i,1)
end
r
,x
иt
все являются векторамиn x 1
,r'*x - t'*x
должен быть скаляром. - person Kristada673   schedule 08.08.2017objective function is not scalar
. Это было потому, что при объявлении переменнойx
я должен был объявить ее какx(n,1)
, иначе, как вы сказали,CVX
подумает, что это скаляр, если я просто объявлю ее какx
. Итак, теперь это исправлено, но у меня другая ошибка, и я отредактировал вопрос, чтобы отразить ее. - person Kristada673   schedule 08.08.2017maximize r'*x - t'*x
. - person Kristada673   schedule 08.08.2017t
иr
в самом начале как векторы, размеры которых равныn x 1
- person Kristada673   schedule 08.08.2017maximize (r'*x-t'*x)
- person Kristada673   schedule 08.08.2017