質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

python エラーの意味

YYY9856
YYY9856

総合スコア13

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

0評価

0クリップ

1467閲覧

投稿2018/12/03 07:45

編集2018/12/03 08:10

Opengoddardというオープンソースを使って、最適化のコードを作っています。"ValueError: all the input arrays must have same number of dimensions"というエラーが出るのですが、どの部分のことを指しているのか、その原因を知りたいです。
def dynamics(prob, obj, section):内に問題があるのではと思いましたが出力してみると計算できているようなのでここではないのかもしれないと思っています。
よろしくお願いします。

python

from __future__ import print_function import numpy as np import matplotlib.pyplot as plt from scipy import optimize from OpenGoddard.optimize import Problem, Guess, Condition, Dynamics class Orbiter: def __init__(self): self.a0 = 3.67 self.vr0 = 0.0 self.vt0 = 1.0 self.af = 6.31 self.vrf = 0.0 self.vtf = 0.76 self.e_0 = 0.7 self.ef = 0.0 self.tf_max = 1000 self.mu = 3.98e14 self.R = 6678000 self.u_max = 0.01 def dynamics(prob, obj, section): a = prob.states(0, section) vr = prob.states(1, section) vt = prob.states(2, section) e = prob.states(3, section) ur1 = prob.controls(0, section) ur2 = prob.controls(1, section) ut1 = prob.controls(2, section) ut2 = prob.controls(3, section) def h(E, t): return E - np.sin(E) - np.sqrt(obj.mu/obj.R**3)*t ts = prob.time_update() ret = [optimize.fsolve(h, x0=0, args=t) for t in ts] r = a * (1 -e * np.cos(ret)) print(ret) print(r) print(r.ndim) print(a.ndim) print(ts.ndim) dx = Dynamics(prob, section) dx[0] = vr dx[1] = vt**2 / r - 1 / r**2 + (ur1 - ur2) dx[2] = - vr * vt / r + (ut1 - ut2) return dx() def cost(prob, obj): return 0.0 def running_cost(prob, obj): tf = prob.time_final(-1) return tf # ======================== plt.close("all") plt.ion() # Program Starting Point time_init = [0.0, 250] n = [60] num_states = [4] num_controls = [4] max_iteration = 10 flag_savefig = True savefig_dir = "10_Low_Thrust_Orbit_Transfer/" # ------------------------ # set OpenGoddard class for algorithm determination prob = Problem(time_init, n, num_states, num_controls, max_iteration) obj = Orbiter() # ======================== # Initial parameter guess a_init = Guess.linear(prob.time_all_section, obj.a0, obj.af) # Guess.plot(prob.time_all_section, r_init, "r", "time", "r") # if(flag_savefig):plt.savefig(savefig_dir + "guess_r" + savefig_add + ".png") vr_init = Guess.linear(prob.time_all_section, obj.vr0, obj.vrf) # Guess.plot(prob.time_all_section, vr_init, "vr", "time", "vr") # if(flag_savefig):plt.savefig(savefig_dir + "guess_vr" + savefig_add + ".png") vt_init = Guess.linear(prob.time_all_section, obj.vt0, obj.vtf) # Guess.plot(prob.time_all_section, theta_init, "vt", "time", "vt") # if(flag_savefig):plt.savefig(savefig_dir + "guess_vt" + savefig_add + ".png") ur1_init = Guess.linear(prob.time_all_section, obj.u_max, obj.u_max) # Guess.plot(prob.time_all_section, ur1_init, "ur1", "time", "ur1") # if(flag_savefig):plt.savefig(savefig_dir + "guess_ur1" + savefig_add + ".png") ut1_init = Guess.linear(prob.time_all_section, obj.u_max, obj.u_max) # Guess.plot(prob.time_all_section, ut1_init, "ut1", "time", "ut1") # if(flag_savefig):plt.savefig(savefig_dir + "guess_ut1" + savefig_add + ".png") e_init = Guess.linear(prob.time_all_section, obj.e_0, obj.ef) prob.set_states_all_section(0, a_init) prob.set_states_all_section(1, vr_init) prob.set_states_all_section(2, vt_init) prob.set_states_all_section(3, e_init) prob.set_controls_all_section(0, ur1_init) prob.set_controls_all_section(2, ut1_init) # ======================== # Main Process # Assign problem to SQP solver prob.dynamics = [dynamics] prob.knot_states_smooth = [] prob.cost = cost prob.running_cost = running_cost prob.equality = equality prob.inequality = inequality def display_func(): tf = prob.time_final(-1) print("tf: {0:.5f}".format(tf)) prob.solve(obj, display_func, ftol=1e-12)
C:\Users\Desktop\python_lesson>python 10_Low_Thrust_Orbit_Transfer18.py ---- iteration : 1 ---- C:\Users\AppData\Local\Programs\Python\Python36-32\lib\site-packages\scipy\optimize\minpack.py:163: RuntimeWarning: The iteration is not making good progress, as measured by the improvement from the last ten iterations. warnings.warn(msg, RuntimeWarning) [array([0.]), array([0.0047688]), array([0.18201816]), array([0.23317758]), array([0.27906686]), array([0.32133838]), array([0.36088484]), array([0.39825701]), array([0.4338237]), array([0.4678461]), array([0.50051683]), array([0.53198233]), array([0.56235664]), array([0.59173019]), array([0.62017582]), array([0.64775288]), array([0.67451021]), array([0.70048831]), array([0.72572096]), array([0.75023649]), array([0.77405871]), array([0.79720768]), array([0.81970031]), array([0.84155088]), array([0.86277137]), array([0.88337187]), array([0.90336079]), array([0.92274509]), array([0.94153054]), array([0.95972178]), array([0.97732256]), array([0.9943358]), array([1.01076372]), array([1.02660791]), array([1.04186946]), array([1.05654898]), array([1.07064668]), array([1.08416244]), array([1.09709585]), array([1.10944628]), array([1.12121286]), array([1.13239459]), array([1.14299033]), array([1.15299884]), array([1.16241884]), array([1.17124896]), array([1.17948786]), array([1.18713417]), array([1.19418656]), array([1.20064373]), array([1.20650445]), array([1.21176755]), array([1.21643195]), array([1.22049666]), array([1.22396081]), array([1.22682362]), array([1.22908446]), array([1.23074278]), array([1.23179807]), array([1.23224674])] [[1.101 1.10448568 1.11269118 ... 6.2855214 6.30268738 6.31 ] [1.10102921 1.10451488 1.11272036 ... 6.28552157 6.30268743 6.31 ] [1.1434389 1.1469122 1.15508836 ... 6.28577436 6.30276297 6.31 ] ... [2.81314197 2.81612826 2.82315001 ... 6.29572687 6.30573728 6.31 ] [2.81569825 2.8186838 2.82570378 ... 6.29574211 6.30574183 6.31 ] [2.81678536 2.81977059 2.82678982 ... 6.29574859 6.30574377 6.31 ]] 2 1 1 Traceback (most recent call last): File "10_Low_Thrust_Orbit_Transfer18.py", line 229, in <module> prob.solve(obj, display_func, ftol=1e-12) File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\site-packages\OpenGoddard\optimize.py", line 683, in solve "ftol": ftol}) File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\site-packages\scipy\optimize\_minimize.py", line 611, in minimize constraints, callback=callback, **options) File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\site-packages\scipy\optimize\slsqp.py", line 313, in _minimize_slsqp for c in cons['eq']])) File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\site-packages\scipy\optimize\slsqp.py", line 313, in <listcomp> for c in cons['eq']])) File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\site-packages\OpenGoddard\optimize.py", line 649, in for_solver return func(arg0, arg1) File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\site-packages\OpenGoddard\optimize.py", line 620, in equality_add dx = self.dynamics[i](self, obj, i) File "10_Low_Thrust_Orbit_Transfer18.py", line 74, in dynamics return dx() File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\site-packages\OpenGoddard\optimize.py", line 1057, in __call__ dx = np.hstack((dx, temp)) File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\site-packages\numpy\core\shape_base.py", line 286, in hstack return _nx.concatenate(arrs, 0) ValueError: all the input arrays must have same number of dimensions

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

yamato_user

2018/12/03 08:00

エラー内容だけ見ると、「全ての入力配列が同じ次元でないといけない」と言っています。ライブラリの関数に突っ込む配列の次元数を確認しましたか?
YYY9856

2018/12/03 08:05

ありがとございます。input arrays とはこのコード内でいうと何を指しているのでしょうか?
yamato_user

2018/12/03 08:06

エラー内容もコードブロックで囲んでください。見にくいです
yamato_user

2018/12/03 08:08

あと、実行しているファイル名は何ですか?
YYY9856

2018/12/03 08:10

ファイル名は10_Low_Thrust_Orbit_Transfer18.pyです。
t_obara

2018/12/05 08:40

prob.solve に起因してエラーが出ているようですが、それは把握されているのですか?
YYY9856

2018/12/05 11:01

配列の種類が違うことが原因だと考えているのですが、どこが原因なのかが分かっていません。
YYY9856

2018/12/05 11:03

prob.solveにエラーが発生していることは把握しています。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。