我正在寻找有关如何在面向对象编程中实现分段的任何想法,例如在Python中。
我将举一个简单的例子来说明我想要实现的目标。
植物生产铅笔。每月产量各不相同。这些铅笔是相同的,并且有市场价格。市场价格各不相同。代理A、B、C属于高级组。代理商 A 根据契约(Contract)规定,以 4 欧元的固定价格购买一半的产品,最多 1000 支铅笔。同样,代理商 B 和 C 根据契约(Contract)规定,分别购买四分之一的产品,最多为总数量每支 500 支铅笔,固定价格为 5 欧元。此外,代理 A 可以自行决定以 5 欧元的执行价格购买额外的 1000 支铅笔。特工D属于初级组。特工 D 可以自行决定以 3 欧元的执行价格从高级部分剩余的产品中购买 5000 支铅笔。
我的问题是,给定两个向量,每个向量有 24 个元素,即产量和市场价格,特工 D 最终购买了多少支铅笔?
在我看来,问题是如何链接 Agent 类型的各种对象,以及如何让铅笔流过这个 Agent 的“网”,以便每个 Agent 捕获该 Agent 有义务/拥有权利的任何东西并将不需要的内容传递给下一个代理/代理组。挑战在于每个批处理可能有多个代理。
最佳答案
我认为你的问题有点含糊,但我会尝试!在我看来,你从一些数字开始 n
铅笔的市场价格p
。
- 您出售
a:=min(n//2,1000)
其中,代理 A 的价格为 4 欧元。 - 您出售
b:=min(n//4,1000)
其中,以 5 欧元的价格交给代理人 B。 - 您出售
c:=min(n//4,1000)
其中,以 5 欧元的价格交给代理人 C。 - 您询问特工 A 是否想要剩余的铅笔;她买了
a' <= min(n-a-b-c,1000)
其中 5 欧元。 - 您询问特工 D 是否想要剩余的铅笔;她买了
d <= min(n-a-b-c-a',5000)
其中 3 欧元。
(我不明白为什么你有 24 元素向量。是超过两年还是什么?我还做了一个排序假设 - 如果你同时询问代理 A 和 D 他们是否想要剩余的一些铅笔,他们可能都会要!)
<小时/>前三个步骤完全由您的契约(Contract)决定;代理人在此事上没有发言权。这些对您来说很容易计算,因此您所需要做的就是设置某种方式来询问代理在有选择时想要多少支铅笔。
为此,我假设您有 Agent
带有 query
的对象方法。你会打电话
agent.query(number_of_pencils_remaining, maximum_buyable, market_price)
这应该返回一个整数,指示代理想要购买多少支铅笔。这应该单独实现——我认为代理商在购买之前会根据他们的预测和市场价格进行一些计算。
这有意义吗?
<小时/>伪代码:
class Agent(object):
__metaclass__ = abc.ABCMeta
@abc.abstractmethod
def query(number_of_pencils_remaining, maximum_buyable, market_price):
return 0
for price, volume in zip(...,...):
sell(quantity=min(volume//2, 1000), to=A, price=4)
sell(quantity=min(volume//4, 1000), to=B, price=5)
sell(quantity=min(volume//4, 1000), to=C, price=5)
sell(quantity=A.query(...), to=A, price=5)
sell(quantity=D.query(...), to=D, price=3)
关于python - 对象模型来实现tranches,如何实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9104836/