Nano Hash - криптовалюты, майнинг, программирование

FMINCON планирует использование устройства, чтобы минимизировать общие затраты

Я хотел бы написать код, чтобы найти минимальную стоимость эксплуатации посудомоечной машины. Это зависит от требуемой мощности, почасовой тарифной ставки и используемого времени. Я использую fmincon для этого, однако приведенный ниже код показывает следующее сообщение об ошибке:

Пользовательская целевая функция должна возвращать скалярное значение.

Моя целевая функция состоит в том, чтобы минимизировать (общая стоимость * время) s.t общая стоимость равна сумме (часовая мощность) * (часовая стоимость) с 1 по 24 час равна 0,8 кВтч, также общая стоимость должна быть больше, чем Ca и общее время работы в день составляет один час.

% Array showing the hourly electricity rates (cents per kwh)
R=zeros(24,1);  
R(1:7,1)=6;
R(20:24,1)=6;
R(8:11,1)=9;
R(18:19,1)=9;
R(12:17,1)=13;

p_7 = transpose([0.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]); %This is the power pattern of appliance (operates at 0.8 kWh for 1 hour daily)

for k=1:23
P7(:, k+1) = circshift(p_7,k);     % This shows all the possible hours of operation
end

Total = P7*R;               % This is the total cost per hour at different hourly tariffs 

fun = @(x)Total.*(x);
x0 = [1];

A = Total;
%Ca = 0.5;
Ca = ones(1,24);
b = Ca;

Aeq = Total;
Daily_tot_7 = 2*ones(1,24);
beq = Daily_tot_7;

ub = 24;
lb = 1;

x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)

Я считаю, что мое понимание преобразования ограничений в fmincon неверно и что я могу упустить жизненно важные ограничения для этой проблемы.


Ответы:


1

Ваш вывод в настоящее время является вектором выходов. Вы заявили, что ваша функция затрат представляет собой суммирование почасовых элементов. Следовательно, ваше определение функции должно быть

fun = @(x)sum(Total.*(x));

Однако, если я правильно понимаю, вы хотите решать для каждого часа отдельно. В этом случае вам нужно установить переменную x0, которая будет определена как ввод 24x1.

x0 = ones(24,1);

Если это так, вам необходимо соответствующим образом настроить переменные A, b, Aeq и beq. Однако они вам действительно нужны, вы можете просто не использовать их, заменив их на []

Наконец, ваша переменная p7, вероятно, лучше переопределена как

p7 = R*.8;

Мои извинения, если я неправильно понял, чего вы пытаетесь достичь здесь.

01.07.2018
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..