Каковы ограничения для этой задачи линейного программирования?

#constraints #linear-programming

Вопрос:

Писатель создает математические задачи для веб-сайта. Ей платят 5 долларов за словесную задачу и 2 доллара за алгебраическую задачу. В среднем ей требуется 4 минуты, чтобы создать словесную задачу, и 2 минуты, чтобы создать алгебраическую задачу. Ее босс хочет, чтобы она решала в общей сложности не менее 50 задач и имела больше алгебраических задач, чем словесных. Если у писательницы есть три часа, какую наибольшую прибыль она может получить?

Пожалуйста, исправьте мои ограничения, если они неверны.

4 минуты на создание задачи со словом и 2 минуты на создание алгебраической задачи. Если у писателя есть 180 минут. Ограничение 1 равно 4x 2y<=180

Ее босс хочет, чтобы она создала в общей сложности не менее 50 проблем. Ограничение 2 равно x<=50

и у них больше алгебраических задач, чем словесных. Ограничение 3 равно y> x>

Комментарии:

1. Вы можете найти ответ здесь: gauthmath.com/solution/…

Ответ №1:

Вам, вероятно, нужны эти ограничения:

 #!/usr/bin/env python3

import cvxpy as cp
import numpy as np

word_count = cp.Variable()
algebraic_count = cp.Variable()

constraints = [
  4*word_count   2*algebraic_count <= 180, # Time constraint
  word_count   algebraic_count >= 50,      # Need at least 50 problems
  algebraic_count >= word_count,           # More algebraic problems then word problems
]

objective = cp.Maximize(5*word_count   2*algebraic_count)

prob = cp.Problem(objective, constraints)

optval = prob.solve()

print("Optimum profit", optval)
print("Word problem count", word_count.value)
print("Algebraic problem count", algebraic_count.value)
 

Дающий

 Optimum profit 209.99999999414464
Word problem count 29.999999990727126
Algebraic problem count 30.000000020254507
 

Обратите внимание, что приведенные здесь числа достаточно близки к целым числам, чтобы мы могли поверить в их правильность. Однако в целом это не так. Если у вас есть значение, скажем, 29,5 для числа проблем со словом, это будет означать, что вам нужно либо заставить количество слов быть <=29 , либо >=30 попытаться получить целое значение.

В качестве альтернативы вы можете использовать режим целочисленного программирования, установив:

 word_count = cp.Variable(integer=True)
algebraic_count = cp.Variable(integer=True)
 

что дает

 Optimum profit 210.0
Word problem count 30.0
Algebraic problem count 30.0