返回顶部
首页 > 资讯 > 精选 >时间最优控制示例 GEKKO
  • 643
分享到

时间最优控制示例 GEKKO

2024-02-10 21:02:03 643人浏览 安东尼
摘要

问题内容 我正在尝试在 gekko 中实现时间最优控制问题。特别是,我复制了这个简短的代码片段。 为了实用性也在这里报告: from gekko import GEKKO import

问题内容

我正在尝试在 gekko 中实现时间最优控制问题。特别是,我复制了这个简短的代码片段。 为了实用性也在这里报告:

from gekko import GEKKO
import matplotlib.pyplot as plt
import numpy as np
 
# set up the gekko model
m = GEKKO()
 
# set up the time (minimize the time with time scaling)
m.time = np.linspace(0, 1, 100)
 
# set up the variables
POSITioN = m.Var(value=0, ub=330, lb=0)
VELOCITY = m.Var(value=0, ub=33, lb=0)
m.fix_final(VELOCITY, 0)
m.fix_final(POSITION, 300)
 
# set up the value we modify over the horizon
tf = m.FV(value=500, lb=0.1)
tf.STATUS = 1
 
# set up the MV
u = m.MV(integer=True, lb=-2, ub=1)
u.STATUS = 1
 
# set up the equations
m.Equation(POSITION.dt() / tf == VELOCITY)
m.Equation(VELOCITY.dt() / tf == u)
 
# set the objective
m.Obj(tf)
 
# set up the options
m.options.IMODE = 6     # optimal control
m.options.SOLVER = 3    # IPOPT
 
# solve
m.solve(disp=False)
 
# print the time
print("Total time taken: " + str(tf.NEWVAL))
 
# plot the results
plt.figure()
plt.subplot(211)
plt.plot(np.linspace(0,1,100)*tf.NEWVAL, POSITION, label='Position')
plt.plot(np.linspace(0,1,100)*tf.NEWVAL, VELOCITY, label='Velocity')
plt.ylabel('Z')
plt.legend()
plt.subplot(212)
plt.plot(np.linspace(0,1,100)*tf.NEWVAL, u, label=r'$u$')
plt.ylabel('u')
plt.xlabel('Time')
plt.legend()
plt.show()

照原样,它工作得很好,但是当我想删除对 velocity 最终值的约束时。

如果我注释 m.fix_final(velocity, 0) 行,结果不会改变。无论如何,它似乎假设最终速度应该为零。此外,如果我将最终速度从零更改为任何其他数字,我会从 gekko 收到错误: exception: @error: solution not found

该解决方案应该很容易找到,特别是如果对最终速度没有施加任何约束,则最佳控制将是在整个时间内保持加速()。

任何帮助将不胜感激! :)


正确答案


将最终约束从 m.fix_final(velocity, 0)m.fix_final(position, 300) 更改为:

p = np.zeros(100); p[-1] = 1
last = m.Param(p)
m.Equation(last*(POSITION-300)>=0)

这在最后一个节点应用了不等式约束,以便 position>=300,但它也可以是等式约束。如果不可行的解决方案阻止求解器实现最终条件,我们有时也会使用软约束,例如 m.minimize(last*(position-300)**2) 。相反,它会尝试使解决方案尽可能接近最终约束。当使用 m.fix_final() 固定最终值时,导数也固定为零,因为不再计算该变量。这是 gekko 的已知限制,如此处所述。

以上就是时间最优控制示例 GEKKO的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 时间最优控制示例 GEKKO

本文链接: https://lsjlt.com/news/563253.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 时间最优控制示例 GEKKO
    问题内容 我正在尝试在 gekko 中实现时间最优控制问题。特别是,我复制了这个简短的代码片段。 为了实用性也在这里报告: from gekko import GEKKO import...
    99+
    2024-02-10
  • js控制frameSet示例
    1:js修改frameset的cols属性来达到修改各个页面所占的宽高,例如隐藏当前frame页。 复制代码 代码如下: window.parent.document.getElem...
    99+
    2022-11-15
    js frameSet
  • koa之中间件流程控制的示例分析
    这篇文章主要为大家展示了“koa之中间件流程控制的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“koa之中间件流程控制的示例分析”这篇文章吧。1. ko...
    99+
    2024-04-02
  • Java 如何实现时间控制
    目录一、间控制的几种方案1.1 从线程方面解决1.2使用Timer1.3redis延时二、redis2.1maven中引入redis2.2 在springboot中配置redis2....
    99+
    2024-04-02
  • 示例展示如何将PHP时间转为时间戳
    PHP是一种流行的编程语言,许多Web开发人员使用它来构建强大的Web应用程序。在处理时间相关的数据时,使用时间戳是非常常见的。时间戳是一个整数值,它表示从Unix纪元开始到当前时间的秒数。当我们需要从时间字符串中获取时间戳时,可以通过PH...
    99+
    2023-05-14
  • android倒计时控件示例
    本文为大家分享了android倒计时控件,供大家参考,具体代码如下 package com.ly.sxh.view; import android.content.Cont...
    99+
    2022-06-06
    示例 Android
  • 怎么使用Pygame Time时间控制
    本篇内容主要讲解“怎么使用Pygame Time时间控制”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Pygame Time时间控制”吧!pygame.time 时间控制模块,是 Pyg...
    99+
    2023-06-25
  • Linux时间子系统之时间的表示示例详解
    前言 在linux内核中,为了兼容原有的代码,或者符合某种规范,并且还要满足当前精度日益提高的要求,实现了多种与时间相关但用于不同目的的数据结构: 1)jiffies和jiffies_64 内核用jiffies_64全局...
    99+
    2022-06-04
    linux时间 查看linux时间 linux修改时间
  • FreeRTOS实时操作系统的内核控制示例解析
    目录前言1.强制上下文切换宏2.进入临界区宏3.退出临界区宏4.禁止可屏蔽中断宏5.使能可屏蔽中断宏6.启动调度器6.1函数描述7.停止调度器7.1函数描述8.挂起调度器8.1函数描...
    99+
    2024-04-02
  • css3是怎么控制旋转时间的
    这期内容当中小编将会给大家带来有关css3是怎么控制旋转时间的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。方法:1、利用animation属性和“@keyframes”...
    99+
    2024-04-02
  • C#中的时间显示格式(12小时制VS24小时制)
    目录C#时间显示格式24小时制12小时制附上系统时间显示方法C#获取当前时间,及处理时间(对时间进行加减)总结C#时间显示格式 一起看下: 24小时制 this.toolStripS...
    99+
    2023-01-28
    C#时间显示格式 C#时间格式 时间显示格式
  • 云服务器怎么远程控制手机屏幕显示时间
    首先,让我们了解云服务器是什么。云服务器是一种基于互联网的服务器,它可以通过互联网访问。在云服务器中,用户可以选择要使用的应用程序和数据,然后将它们上传到云服务器上,以供其他用户下载和使用。 当用户连接到云服务器时,他们可以选择要使用的应...
    99+
    2023-10-28
    远程控制 手机屏幕 服务器
  • php时间戳的示例分析
    这篇文章主要介绍了php时间戳的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、设置时区(默认时区是UTC)date_default_timezone_set设定用...
    99+
    2023-06-14
  • PPT怎么绘制时间线展示重要的时间段
    在PPT中绘制时间线展示重要的时间段,可以按照以下步骤进行操作:1. 打开PPT软件,并新建一个幻灯片。2. 在幻灯片上选择插入->...
    99+
    2023-09-20
    ppt
  • HTML5样式控制的示例分析
    小编给大家分享一下HTML5样式控制的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 1.请使用 span 元素对行内...
    99+
    2024-04-02
  • Linux进程控制的示例分析
    这篇文章将为大家详细讲解有关Linux进程控制的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Linux进程控制详解及实例常用函数:fork() 通过复制调用进程来建立新的进程,是最基本的进程建立...
    99+
    2023-06-09
  • python控制语句的示例分析
    这篇文章主要为大家展示了“python控制语句的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python控制语句的示例分析”这篇文章吧。1、Python为迭代提供了标准的while语句...
    99+
    2023-06-20
  • python中时间中间键的示例分析
    这篇文章主要介绍python中时间中间键的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!时间中间键的整理一下内容是对数据接口返回的时间节点处理方法很管用的哦import { Pipe,&n...
    99+
    2023-05-31
    python
  • 确定最优的撤销保留时间 undo_rentention
    SQL> show parameter undoNAME                     &...
    99+
    2024-04-02
  • Go语言题解LeetCode1266访问所有点的最小时间示例
    目录题目描述思路分析AC 代码题目描述 1266. 访问所有点的最小时间 - 力扣(LeetCode) 平面上有 n 个点,点的位置用整数坐标表示 point...
    99+
    2023-01-05
    Go访问所有点最小时间 Go LeetCode
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作