我是真菜的 2022-05-29 01:11 采纳率: 100%
浏览 40
已结题

输入报错,不知该怎么解决(标签-矩阵|关键词-模型表示)

python数模输入样例后,报错不知道该怎么解决

问题遇到的现象和发生背景

cvxpy 支持矩阵风格的数学优化模型表示方法
数学模型如下
min = ∣∣Ax−b∣∣ 22

st.
0≤x≤1

输入格式:
第1行输入两个正整数m,n 。 m,n 是矩阵A的行数和列数

第2行输入m个数,表示向量b。
第3行到第m+2行表示矩阵A。

输出格式:
输出最优值时x的值, 小数点后精确1位数。

输入样例:
在这里给出一组输入。例如:

2,3
1,2
1,2,3
4,5,6
输出样例:
在这里给出相应的输出。例如:

0.00 0.00 0.33

问题相关代码,请勿粘贴截图
# Import packages.
import cvxpy as cp
import numpy as np
 
# Generate data.
m , n = input().split(",")

arr1 = input()
arr1 = [int(k) for k in arr1.split(",")]

m=int(m)
n=int(n)
line=[[0]*m]*n
for i in range(m):
    line[i]=input().split(",")
    
    
x = cp.Variable(n)
cost = cp.sum_squares(line @ x - arr1)
prob = cp.Problem(cp.Minimize(cost))
prob.solve()

print(x.value)

运行结果及报错内容

/usr/local/lib/python3.7/dist-packages/cvxpy/interface/numpy_interface/ndarray_interface.py:47: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.
result = numpy.asarray(value).T
TypeError: float() argument must be a string or a number, not 'list'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "a.py", line 19, in
cost = cp.sum_squares(line @ x - arr1)
File "/usr/local/lib/python3.7/dist-packages/cvxpy/expressions/expression.py", line 48, in cast_op
other = self.cast_to_const(other)
File "/usr/local/lib/python3.7/dist-packages/cvxpy/expressions/expression.py", line 478, in cast_to_const
return expr if isinstance(expr, Expression) else cvxtypes.constant()(expr)
File "/usr/local/lib/python3.7/dist-packages/cvxpy/expressions/constants/constant.py", line 48, in init
self._value = intf.DEFAULT_INTF.const_to_matrix(value)
File "/usr/local/lib/python3.7/dist-packages/cvxpy/interface/numpy_interface/ndarray_interface.py", line 53, in const_to_matrix
return result.astype(numpy.float64)
ValueError: setting an array element with a sequence.

  • 写回答

1条回答 默认 最新

  • Hann Yang 全栈领域优质创作者 2022-05-29 07:52
    关注

    第15行输入的都是字符,用eval()转化一下

    line[i] = eval(input().split(","))
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月6日
  • 已采纳回答 5月29日
  • 创建了问题 5月29日

悬赏问题

  • ¥15 请帮我看一看数电项目如何设计
  • ¥23 (标签-bug|关键词-密码错误加密)
  • ¥66 比特币地址如何生成taproot地址
  • ¥20 数学建模数学建模需要
  • ¥15 关于#lua#的问题,请各位专家解答!
  • ¥15 什么设备可以研究OFDM的60GHz毫米波信道模型
  • ¥15 不知道是该怎么引用多个函数片段
  • ¥30 关于用python写支付宝扫码付异步通知收不到的问题
  • ¥15 隐藏系统界面pdf的打印、下载按钮
  • ¥15 基于pso参数优化的LightGBM分类模型