我有这个问题陈述,在 python 中做这个与数据科学相关的工作对我来说有点新,任何程序或支持都会有帮助
你是投资者。您有兴趣出售您的一些投资组合。但是,您一次只能以当前价格出售最多价值 x 美元的总投资组合。为您提供投资组合中各种加密货币的硬币数量(数量)、每枚硬币的当前售价 ($) 和每枚硬币的利润 ($)。您需要确定每种加密货币硬币的数量(可以以分数形式出售)以及您应该出售每种加密货币的总投资组合的比例以最大化您的利润。要求:
- 制定一个有效的算法来确定以什么比率出售哪些加密货币,以最大限度地提高你可以从中获得的利润
- 分析算法的时间复杂度。
- 使用 Python 3.7 实现上述问题陈述。
Python3解决分数的程序
背包问题
示例输入:例如,您有 6 种数量不等的加密货币,并且想要从可用的加密货币中卖出价值 1000 美元的 x 个硬币,从而使卖出的利润最大化。找出您将出售的每种硬币的数量以最大化利润。加密货币
Input should be taken in through a file called “inputPS1.txt” which has the fixed format mentioned
below using the “/” as a field separator:
Type of Crypto coins: <count>
Maximum spend: <amount>
<Crypto Currency i> / <Quantity (no of coins)> / <sell price per coin> / <profit per coin>
Ex:
Type of Crypto coins: 6
Maximum spend: 1000
C1 / 6 / 50 / 45
C2 / 8 / 60 / 50
C3 / 1 / 400 / 90
…
Sample Output:
Max Profit: 815.33
Quantity selection Ratio:
C1: 1
C2: 1
C3: 0
C4: 1
C5: 0.667
C6: 0
Total Quantity of each coin sold:
C1: 6
C2: 8
C3: 0
C4: 2
C5: 1.33
C6: 0
意思是要最大化利润,你必须卖出 6 个 C1 币(利润 270)、8 个 C2 币(利润 400)、2 个 C4 币(利润 140)和 1.33 个 C5 币(利润 5.33)。这相当于选择 100% 的可用 C1 硬币、100% 的所有 C2 硬币、100% 的所有 C4 硬币和 66% 的所有 C5 硬币进行出售。在 outputPS1.txt 中显示输出。
我尝试过的一些方法逻辑,但不知道什么是最好的 python 方法 任何程序都会有所帮助
输入 <- 输入要出售的加密货币价值 $ 价值 = 1500$ 每个硬币的利润/售价 < 0.9 (45/60), 0.83(50/60), 0.23(90/400), 0.7(70 /100), 0.27(4/15), 0.12(24/200) > 利润/卖出价格降序 < C1(0.9), C2(0.83), C4(0.7), C5(0.27), C3(0.23) , C6(0.12)> P= [ C1(0.9), C2(0.83), C4(0.7), C5(0.27), C3(0.23), C6(0.12) ] P 使用的算法:考虑使用分数 Knapsnak 来解决这个问题问题。可以正式表示为
- 最大化–(每个硬币的利润/售价)的硬币总和(从 1->6)*(加密硬币的数量/分数)
- 条件 1 – 硬币总和(从 1->6)(每个硬币的售价)*(加密硬币的数量/分数)
- 条件 2 – 0 小于或等于(加密硬币的数量/分数) 小于或等于(投资组合中存在的硬币数量)