려고 노력해요 비용을 최소화하기 위해 제품의 제조와 두 기계입니다. 비용의 기계은$30/제품과 비용의 기계 B$40/제품입니다.
두 가지 제약 사항이 있습니다.
- 우리 커버의 수요가 50 제품 per month(x+y>=50)
- 저렴한계(A)단지조 제품 40per month(x<=40)
그래서 내가 만든 다음 Pyomo 코드:
from pyomo.environ import *
model = ConcreteModel()
model.x = Var(domain=NonNegativeReals)
model.y = Var(domain=NonNegativeReals)
def production_cost(m):
return 30*m.x + 40*m.y
# Objective
model.mycost = Objective(expr = production_cost, sense=minimize)
# Constraints
model.demand = Constraint(expr = model.x + model.y >= 50)
model.maxA = Constraint(expr = model.x <= 40)
# Let's solve it
results = SolverFactory('glpk').solve(model)
# Display the solution
print('Cost=', model.mycost())
print('x=', model.x())
print('y=', model.y())
그것은 작동 확인,으로 명백한 솔루션 x=40;y=10(비용=1600)
그러나,만약 우리가 사용하기 시작 기계는 B,있을 것입니다 고$300 비용.
내가 함께 노력
def production_cost(m):
if (m.y > 0):
return 30*m.x + 40*m.y + 300
else:
return 30*m.x + 40*m.y
하지만 나는 다음과 같은 오류 메시지
Rule failed when generating expression for Objective mycost with index
None: PyomoException: Cannot convert non-constant Pyomo expression (0 <
y) to bool. This error is usually caused by using a Var, unit, or mutable
Param in a Boolean context such as an "if" statement, or when checking
container membership or equality. For example,
>>> m.x = Var() >>> if m.x >= 1: ... pass
and
>>> m.y = Var() >>> if m.y in [m.x, m.y]: ... pass
would both cause this exception.
지 않을 구현하는 방법을 조건은 포함하는 처벌을 목표는 기능을 통해 Pyomo 코드입니다.