我正在寻找关于如何在面向对象的编程中实现部分的任何想法,例如:在Python中。
我将举例说明我正在努力实现的目标。
植物生产铅笔。月产量各不相同。铅笔是相同的,他们有市场价格。市场价格各不相同代理商A,B和C属于高级部分。代理商A在合同上有义务购买一半的产品,总价格为1000支铅笔,固定价格为4欧元。同样,代理商B和C在合同上有义务购买四分之一的产品,直至总产量每支500支铅笔,固定价格为5欧元。此外,代理商A可以选择以5欧元的执行价格购买额外的1000支铅笔。代理D属于初级部分。代理商D可以选择从高级部分中留下5000支铅笔,执行价格为3欧元。
我的问题是,给定两个向量,每个24个元素,产量和市场价格,代理D最终购买了多少支铅笔?
正如我所看到的,问题是如何链接代理类型的各种对象以及如何让铅笔流过代理商的这个“网”,以便每个代理人抓住代理人有义务/拥有的权利将不需要的邮件传递给下一个代理/代理组。挑战在于每次付款可以有多个代理商。
答案 0 :(得分:1)
我认为你的问题有点含糊不清,但我会尝试!在我看来,你从市场价格n
的一些p
铅笔开始。
a:=min(n//2,1000)
。b:=min(n//4,1000)
以{5}欧元卖给代理商B. c:=min(n//4,1000)
出售给代理商C,价格为5欧元。a' <= min(n-a-b-c,1000)
个。d <= min(n-a-b-c-a',5000)
个。(我不明白为什么你有24个元素的载体。那是两年多还是什么?我还做了一个订单假设 - 如果你同时询问代理商A和D他们是否想要一些剩余的铅笔,他们可能都要求他们!)
前三个步骤完全由您的合同决定;代理人在这件事上没有发言权。这些对你来说很容易计算,所以你需要做的就是设置一些方法来询问代理商在选择时需要多少支铅笔。
为此,我假设您拥有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)