diff --git a/1319ac05.html b/1319ac05.html index 338443c..a5b1627 100644 --- a/1319ac05.html +++ b/1319ac05.html @@ -1,9 +1,9 @@ -react后台管理项目(一) | 世事千帆过 前方终会是温柔和月光 +react后台管理项目(一) | 世事千帆过 前方终会是温柔和月光 - + @@ -167,46 +167,32 @@

react后台管理项目(一)

一、配置路由

1、下载相关依赖

npm i react-router-dom@6.22.2
-

路由配置必备,这里采用createBrowserRouter方法配置路由

2、router下index文件

import  {createBrowserRouter} from 'react-router-dom'
import Main from '../pages/main'
import Home from '../pages/home'

const routes = [
{
path:'/',
Component: Main,
children: [
{
path: 'home',
Component: Home
}
]

}
]
export default createBrowserRouter(routes)
-

3、Main页面Main.js

import React from 'react'
import {Outlet} from 'react-router-dom'
const Main = () => {
return (
<div>
main
<Outlet />
</div>
)
}

export default Main
-

4、 home页面home.js

import React  from 'react'

const Home = () =>{
return(
<div>
home页面
</div>
);
}
export default Home
-

5、挂载到页面app.js

import './App.css';
import {RouterProvider} from 'react-router-dom'
import router from './router'

function App() {
return (
<div ClassName="app">
<RouterProvider router={router}/>
</div>

);
}

export default App;

-

二、剩余页面路由配置和重定向功能实现

1.user页面实现,user下的js文件

import React from 'react'
const User = () => {
return(
<div>
用户配置
</div>
);
}
export default User
-

2、mall页面实现,mall目录下的js文件

import React from 'react'
const Mall = () => {
return (
<div>
mall页面
</div>
);

}
export default Mall
-

3、other页面下的内容实现

(1)、pageone页面

import React from 'react'
const PageOne = () => {
return(
<div>
Pageone页面
</div>

);

}

export default PageOne
-

(2)、pagetwo页面实现

import React from 'react'
const PageTwo = () => {
return(
<div>
pagetwo页面
</div>
);
}

export default PageTwo
-

4、重定向实现

添加跳转逻辑Navigate实现

{
path: '/',
element: <Navigate to="home" replace/>
}
-

router下index.js完整代码

import { createBrowserRouter, Navigate } from 'react-router-dom'
import Home from '../pages/home'
import Main from '../pages/main'
import User from '../pages/user'
import Mall from '../pages/mall'
import PageTwo from '../pages/other/pagetwo'
import PageOne from '../pages/other/pageone'

const routes =[
{
path: '/',
Component: Main,
children:[
{
path: '/',
element: <Navigate to="home" replace/>
},
{
path: 'home',
Component: Home

},
{
path: 'mall',
component: Mall
},
{
path: 'user',
componnent: User
},
{
path: 'other',
children: [
{
path: 'pageone',
Component: PageOne

},
{
path: 'pagetwo',
Component: PageTwo

}
]
}
]
}
]

export default createBrowserRouter(routes)
-

三、layout布局组件引入和aside组件拆分

1、在antd网站上找到合适的布局模板,这里选择自定义触发器

将代码替换main,js

import React, { useState } from 'react';
import {
MenuFoldOutlined,
MenuUnfoldOutlined,
UploadOutlined,
UserOutlined,
VideoCameraOutlined,
} from '@ant-design/icons';
import { Button, Layout, Menu, theme } from 'antd';
const { Header, Sider, Content } = Layout;
const Main = () => {
const [collapsed, setCollapsed] = useState(false);
const {
token: { colorBgContainer, borderRadiusLG },
} = theme.useToken();
return (
<Layout>
<Sider trigger={null} collapsible collapsed={collapsed}>
<div className="demo-logo-vertical" />
<Menu
theme="dark"
mode="inline"
defaultSelectedKeys={['1']}
items={[
{
key: '1',
icon: <UserOutlined />,
label: 'nav 1',
},
{
key: '2',
icon: <VideoCameraOutlined />,
label: 'nav 2',
},
{
key: '3',
icon: <UploadOutlined />,
label: 'nav 3',
},
]}
/>
</Sider>
<Layout>
<Header
style={{
padding: 0,
background: colorBgContainer,
}}
>
<Button
type="text"
icon={collapsed ? <MenuUnfoldOutlined /> : <MenuFoldOutlined />}
onClick={() => setCollapsed(!collapsed)}
style={{
fontSize: '16px',
width: 64,
height: 64,
}}
/>
</Header>
<Content
style={{
margin: '24px 16px',
padding: 24,
minHeight: 280,
background: colorBgContainer,
borderRadius: borderRadiusLG,
}}
>
Content
</Content>
</Layout>
</Layout>
);
};
export default Main;
-

网站展示如下:

-

layout

+

layout

2、引入样式进行渲染,同时增加h3标题样式

在sider组件下增加标题显示

<h3 className="app-name">通用后台管理系统</h3>
-

组件Menu增加样式,填充整个页面

style={{
height: '100%'
}}
-

修改后显示

-

image-20240719231655785

-
文章作者: damon-ldl
文章链接: http://example.com/1319ac05.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 世事千帆过 前方终会是温柔和月光
打赏
  • 微信
    微信
  • 支付宝
    支付宝
#樱花
打赏
avatar
damon-ldl
华理研一菜鸟学习ing
Follow Me
公告
网站持续更新中!!! crtl+d保存不迷路
最新文章
#樱花
- - - -

研究课题论文(一)

一、理论基础

1、名词解释

(1)、模型预测控制MPC

MPC的核心在于它能够在每个控制周期内,通过优化算法预测系统在未来一段时间内的行为,并根据这个预测来确定当前的控制动作。这个过程是重复进行的,因此MPC是一种闭环控制方法。 MPC是一种先进的控制策略,它基于当前系统的状态和一个数学模型预测未来的行为。在每个采样时刻,MPC计算出在未来一段有限时间内的最优输入序列(即控制动作),这个序列将使得目标函数(例如成本函数)最小化,同时保证系统动态满足一系列的约束条件。然后,实际应用的是这个最优序列的第一个控制输入,而在下一个采样时刻,控制器会重新计算一个新的优化序列,从而形成了一种滚动优化的过程。

-

MPC工作流程:

-

系统建模:首先,需要为被控系统建立一个动态模型。这个模型应该能够准确地描述系统的动态行为,包括状态转移和控制输入对状态的影响。

-

预测:使用当前的系统状态和控制输入,通过模型预测系统未来的状态。这通常涉及到求解模型的动态方程,得到未来一段时间内的状态轨迹。

-

优化:定义一个优化问题,目标是在预测时域内优化某个性能指标(如总成本、总能耗等)。优化问题的约束条件可能包括系统状态约束、控制输入约束等。

-

求解:使用优化算法求解这个有限时间的最优控制问题,得到最优控制序列。

-

应用:将最优控制序列的第一个控制动作应用于系统。

-

反馈校正:在下一个时刻,测量系统的实际状态,并更新内部模型。然后,重复上述步骤,进行新一轮的预测、优化和控制。

-

(2)、 DRO分布式鲁棒优化

分布鲁棒优化(Distributionally Robust Optimization, DRO): DRO是一种应对不确定性优化问题的方法,其核心是设计一种优化方案,使之在一组可能的概率分布(即ambiguity set)中对最坏情况下的性能有所保证。这意味着即使真实的概率分布未知或者只能通过有限数据得到近似,DRO仍然能够提供具有稳健性的决策结果。

-

(3)、DRMPC

分布鲁棒模型预测控制(Distributionally Robust Model Predictive Control, DRMPC)

-

DRMPC则是将DRO的思想融入到MPC框架内,针对非线性系统,在存在不确定性的情况下进行优化。在这种方法中,不仅考虑了系统模型的不确定性,还为系统中的随机变量引入了概率约束。DRMPC的目标是在面对不确定性时找到一个更为稳健的最优控制策略,即使模型与真实系统行为之间存在失配,也能确保系统在一定概率水平下满足所有约束条件并优化长期性能。通过这种方式,DRMPC旨在改进传统MPC在处理不确定性时可能出现的次优性问题,增强控制系统在复杂和变化环境中的适应能力和安全性。

-

1.模型描述与不确定性设定:

-

首先,建立一个反映系统动态特性的数学模型,并识别出其中的不确定性来源。

-

使用 Wasserstein 距离或其他度量方式来定义一个不确定性集,该集围绕着经验分布或者基于有限样本数据估计的“参考”分布形成一个半径为 γ 的球体。

-

2.优化问题形式化:

-

设定一个滚动优化窗口,在每个采样时刻 k,考虑未来的 T 步时间步长内的控制序列和状态预测。

-

目标函数通常是期望性能指标的最小化或在最坏情况下最大化,同时满足概率约束条件。

-

概率约束通常表示为分布鲁棒型约束,例如条件风险价值(Conditional Value-at-Risk, CVaR)或其它能够表达对不确定性容忍程度的统计指标。

-

3.鲁棒优化问题求解:

-

优化问题被表述为在不确定性集合中找到一组控制器输入变量,使得无论实际的概率分布如何(只要落在所定义的不确定性集合内),都能保证某些性能指标不超过某个阈值。

-

这需要解决一个带有双重优化结构的问题,即在外层优化中寻找最坏情况下的分布,而在内层优化中计算给定分布下的最优控制输入。

-

4.实施与滚动更新:

-

实际应用时,仅执行优化得到的当前最优控制动作,然后根据新的系统状态信息和不确定性估计,在下一个采样时刻重新进行优化过程。

-

5.Lagrange乘数法与对偶理论:

-

为了有效地求解这个复杂的分布鲁棒优化问题,经常利用拉格朗日乘数法将原问题转化为对偶问题,并结合强对偶性原理和范数理论进行转换和简化。

-

(4)、实际案例描述

例子:假设我们正在设计一个智能能源管理系统,用于优化一座风力发电厂的运行策略。系统的目标是在保证电网稳定性和满足供电需求的前提下,尽可能提高风能利用效率并减少化石能源的补充使用。

-

传统模型预测控制(MPC)应用: 在传统的MPC框架下,我们会基于当前和预测的风速、电力需求以及其他相关参数建立风电系统的动态模型。每个时间步长内,MPC计算最优的风机转速或功率调节序列以最小化某种成本函数(比如化石燃料消耗与未充分利用风能的成本之和)。然而,由于风速具有较强的随机性和不确定性,实际风速可能偏离预测值,导致MPC制定的策略在实际执行时效果未必最佳。

-

分布鲁棒模型预测控制(DRMPC)应用: 而在DRMPC中,我们将考虑未来风速的概率分布集合而非单一预测值。例如,我们可以构造一个基于历史数据的Wasserstein不确定性集来包含所有可能的风速分布。然后,在求解优化问题时,DRMPC会在这个不确定性集中寻找最坏情况下的风速分布,并据此确定一组稳健的风机控制策略,使得即使在最不利的风速条件下,也能确保电网稳定性、满足供需平衡,并最大程度地降低额外成本。

-

因此,相比于传统MPC,DRMPC更注重在不确定性环境中的稳健性,能够在有限的数据支持下提供一种概率意义上的性能保证,从而提升整个风力发电系统的运营效率和可靠性。

-

Rl+mpc例子工业过程控制优化 在某些工业自动化场景中,例如化工生产、电力系统或机器人运动控制,传统的MPC能够基于精确的物理模型对系统未来状态进行预测,并据此计算出满足约束条件的最佳控制序列。然而,实际系统的动态特性可能受到诸多不确定因素的影响,导致模型存在误差。在这种情况下,可以将RL引入到MPC框架中。比如,通过设计一个参数化的MPC控制器,其中包含一些可调整的参数(如模型中的增益矩阵、预测时域长度等)。然后,RL算法可以在闭环运行中实时学习这些参数,以最小化某种性能指标(如控制误差、能耗或其他成本函数),从而提高整体控制效果。

-

二、理论基础

1、安全强化学习

1.非线性离散随机动力系统:
$$
s_{k+1}=f(s_k,a_k,w_k)
$$

-
-

假设1:扰动集W做出凸性和闭合性的假设(凸性保证了优化问题的局部解就是全局解。)

-
-

假设目的:将DRO重新表述为有限凸规划

-

2.最优安全策略

-

image-20240719151203595

-

我们要找到一个策略 𝜋∗,它在平均意义上(考虑到所有可能的初始状态)最小化了从初始状态开始的预期累积回报(价值函数),输出状态s遵循状态分布的平均值。

-

3.价值函数

-

image-20240719151655767

-

(3a)价值函数Vπ是一个映射,它把状态空间X映射到实数R,关联于策略π。它定义了从初始状态s0出发,遵循策略π时的期望回报。(从开始到结束,优化问题,优化参数)

-

(3b) 动力学约束

-

(3c) 条件概率约束(安全约束)

-

4.安全集合

-

image-20240719152703620

-

对应任意状态s映射到函数h(s)的函数值需要小于0,引入安全集合后3c可以转换成

-

image-20240719152921151

-

Sk是任意状态

-
-

假设2:每个函数−hj是固有的、凸的和下半连续的函数。(有点取值有限,局部最小为全局最小,无跳转)

-
-

2.SMPC理论推导过程

1.参数向量化策略,改写(2),Z找到最优参数向量,构成最优策略

-

image-20240719160219389

-

2.一个基于参数化模型预测控制(MPC)的优化问题,目标是找到一组最优输入序列a和状态序列s来最小化期望成本,并同时满足系统动态、概率约束以及初始状态条件。问题(3)转换:

-

image-20240719160443365

-

约束条件:

-

-
-

求解第k步的优化问题,优化变量a和s,

-

通过求解这个优化问题,我们得到一个最优的控制序列 a,它将指导系统在考虑未来 I 个时间点的预测状态和成本的同时,从当前状态 sk 开始,最小化期望的总成本,同时满足所有约束条件。在实际应用中,这个优化问题通常在每个时间步 k 都会重新求解,以反映最新的状态信息和环境变化,这被称为滚动地平线优化或再调度。

-
-

3.参数化策略πθ在时间实例k处的定义如下

-

image-20240719162431717

-
-

整个决策过程包含的一系列参数化决策

-
-

4.机会约束转换

-

VaRα定义如下

-

image-20240719163125880

-
-

VaR实际上代表了发生概率至少为 α的最坏损失。

-
-

image-20240719163355027

-

非凸转换成凸求解

-

image-20240719164109511

-

当α趋于1时,CVaR与VaR之间的差距趋于零

-

image-20240719164152853

-

转换后优化问题

-

image-20240719164235641

-

求解cvara:

-
    -
  • 考虑Ns种场景描述,其中第m次场景表达

    -

    image-20240719165046464

    -
  • -
  • 引入辅助变量求解Cvara

    -

    image-20240719165206981

    -

    5.SMPC最终表达式

    -

    image-20240719165256487

    -

    image-20240719165305754

    -
  • -
-

三、目标函数构建

1.目标函数定义

目标函数旨在最小化智能电动汽车充电站(Electric Vehicle Charging Station, EVCS)的运营成本,同时确保满足电动汽车(Electric Vehicle, EV)用户的充电需求,并考虑到电力购买/销售价格、光伏(Photovoltaic, PV)发电输出和未来EV充电需求的不确定性。

-
文章作者: damon-ldl
文章链接: http://example.com/63935106.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 世事千帆过 前方终会是温柔和月光
打赏
  • 微信
    微信
  • 支付宝
    支付宝
#樱花
- - \ No newline at end of file diff --git a/63935106/cover.png b/63935106/cover.png deleted file mode 100644 index 141b0a4..0000000 Binary files a/63935106/cover.png and /dev/null differ diff --git a/63935106/top_img.png b/63935106/top_img.png deleted file mode 100644 index 9363e9f..0000000 Binary files a/63935106/top_img.png and /dev/null differ diff --git a/866244c8.html b/866244c8.html new file mode 100644 index 0000000..7ea8e60 --- /dev/null +++ b/866244c8.html @@ -0,0 +1,228 @@ +书生大模型闯关记录(第1关 Linux 基础知识) | 世事千帆过 前方终会是温柔和月光 + + + + + + + + + + + + +
+ + + +

书生大模型闯关记录(第1关 Linux 基础知识)

一、开发环境介绍

1、创建开发机

(1)、登录InternStudio平台创建环境

1、登录https://studio.intern-ai.org.cn/网站,打开首页,创建开发机

+

image-20240721233024132

+

2、填写相关配置信息创建开发机

+

image-20240721233101796

+

3、等待开发机创建完成,如图所示

+

image-20240721233140288

+

4、进入开发机,页面显示如图

+

image-20240721233322349

+

二、实现端口映射

1、SSH连接实现

1、找到开发机>SSH连接,点击进入

+

image-20240721233640917

+

2、复制连接的登录命令和密码

+

image-20240721233734525

+

3.Windows打开终端命令行,将登入命令复制到命令行,出现下面框框表示连接成功

+
+

这里我windows提前配置的SSH KEY所以没有登录密码验证,如果出现密码验证复制上面的密码即可

+
+

image-20240721233817120

+

4、对应功能测试,可以在命令行输入命令测试

+

image-20240721234105097

+

2、vscode连接实现

(1)、安装远程连接插件Remote -ssh

image-20240721234321518

+

(2)、点击加号添加开发机SSH连接的登录命令

1、复制上面的SSH连接的登录命令

+

image-20240721234511521

+

2、出现提示

+

image-20240721234615319

+

表示已经连接成功

+

3、选择Linux

+

image-20240721234654983

+

如果出现

+

image-20240721234914435

+

可能需要终止原来的连接(windows命令行执行exit,exit两次)

+

4、出现开发机的根目录

+

image-20240721234752861

+

此时

+

image-20240721234828273

+

三、使用端口映射实现本地访问helloworld.py

1、新建一个py文件

在root新建一个helloworld.py文件,代码如下

+
import socket
import re
import gradio as gr

# 获取主机名
def get_hostname():
hostname = socket.gethostname()
match = re.search(r'-(\d+)$', hostname)
name = match.group(1)

return name

# 创建 Gradio 界面
with gr.Blocks(gr.themes.Soft()) as demo:
html_code = f"""
<p align="center">
<a href="https://intern-ai.org.cn/home">
<img src="https://intern-ai.org.cn/assets/headerLogo-4ea34f23.svg" alt="Logo" width="20%" style="border-radius: 5px;">
</a>
</p>
<h1 style="text-align: center;">☁️ Welcome {get_hostname()} user, welcome to the ShuSheng LLM Practical Camp Course!</h1>
<h2 style="text-align: center;">😀 Let’s go on a journey through ShuSheng Island together.</h2>
<p align="center">
<a href="https://github.com/InternLM/Tutorial/blob/camp3">
<img src="https://oss.lingkongstudy.com.cn/blog/202406301604074.jpg" alt="Logo" width="20%" style="border-radius: 5px;">
</a>
</p>

"""
gr.Markdown(html_code)

demo.launch()
+

2、使用端口映射

1、windows连接开发机

+

image-20240721235413175

+

2.运行代码,需要先安装gradio库,pip install gradio=4.29.0后运行python helloworld.py

+

image-20240721235553735

+

3、打开网页即可访问

+

image-20240721235447077

+
文章作者: damon-ldl
文章链接: http://example.com/866244c8.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 世事千帆过 前方终会是温柔和月光
打赏
  • 微信
    微信
  • 支付宝
    支付宝
#樱花
+ + \ No newline at end of file diff --git a/866244c8/1.png b/866244c8/1.png new file mode 100644 index 0000000..fecc790 Binary files /dev/null and b/866244c8/1.png differ diff --git a/866244c8/10.png b/866244c8/10.png new file mode 100644 index 0000000..c4e4c35 Binary files /dev/null and b/866244c8/10.png differ diff --git a/866244c8/11.png b/866244c8/11.png new file mode 100644 index 0000000..1c77b7b Binary files /dev/null and b/866244c8/11.png differ diff --git a/866244c8/12.png b/866244c8/12.png new file mode 100644 index 0000000..7224ac5 Binary files /dev/null and b/866244c8/12.png differ diff --git a/866244c8/13.png b/866244c8/13.png new file mode 100644 index 0000000..691b129 Binary files /dev/null and b/866244c8/13.png differ diff --git a/866244c8/14.png b/866244c8/14.png new file mode 100644 index 0000000..c68f189 Binary files /dev/null and b/866244c8/14.png differ diff --git a/866244c8/15.png b/866244c8/15.png new file mode 100644 index 0000000..0c98723 Binary files /dev/null and b/866244c8/15.png differ diff --git a/866244c8/16.png b/866244c8/16.png new file mode 100644 index 0000000..18ced89 Binary files /dev/null and b/866244c8/16.png differ diff --git a/866244c8/17.png b/866244c8/17.png new file mode 100644 index 0000000..c25221e Binary files /dev/null and b/866244c8/17.png differ diff --git a/866244c8/18.png b/866244c8/18.png new file mode 100644 index 0000000..6024c86 Binary files /dev/null and b/866244c8/18.png differ diff --git a/866244c8/2.png b/866244c8/2.png new file mode 100644 index 0000000..cd8d374 Binary files /dev/null and b/866244c8/2.png differ diff --git a/866244c8/3.png b/866244c8/3.png new file mode 100644 index 0000000..01ce54d Binary files /dev/null and b/866244c8/3.png differ diff --git a/866244c8/4.png b/866244c8/4.png new file mode 100644 index 0000000..c67afdf Binary files /dev/null and b/866244c8/4.png differ diff --git a/866244c8/5.png b/866244c8/5.png new file mode 100644 index 0000000..e21bfb9 Binary files /dev/null and b/866244c8/5.png differ diff --git a/866244c8/6.png b/866244c8/6.png new file mode 100644 index 0000000..a3ed359 Binary files /dev/null and b/866244c8/6.png differ diff --git a/866244c8/7.png b/866244c8/7.png new file mode 100644 index 0000000..ccc839c Binary files /dev/null and b/866244c8/7.png differ diff --git a/866244c8/8.png b/866244c8/8.png new file mode 100644 index 0000000..cdfb08d Binary files /dev/null and b/866244c8/8.png differ diff --git a/866244c8/9.png b/866244c8/9.png new file mode 100644 index 0000000..d1c53a9 Binary files /dev/null and b/866244c8/9.png differ diff --git a/866244c8/9png b/866244c8/9png new file mode 100644 index 0000000..d1c53a9 Binary files /dev/null and b/866244c8/9png differ diff --git a/866244c8/cover.png b/866244c8/cover.png new file mode 100644 index 0000000..547837c Binary files /dev/null and b/866244c8/cover.png differ diff --git a/866244c8/top_img.png b/866244c8/top_img.png new file mode 100644 index 0000000..962996f Binary files /dev/null and b/866244c8/top_img.png differ diff --git a/about/index.html b/about/index.html index ef98032..24cdc67 100644 --- a/about/index.html +++ b/about/index.html @@ -165,14 +165,14 @@ -
avatar
damon-ldl
华理研一菜鸟学习ing
Follow Me
公告
网站持续更新中!!! crtl+d保存不迷路
最新文章
+
avatar
damon-ldl
华理研一菜鸟学习ing
Follow Me
公告
网站持续更新中!!! crtl+d保存不迷路
最新文章
网站资讯
文章数目 :
3
已运行时间 :
本站总字数 :
3.9k
本站访客数 :
本站总访问量 :
最后更新时间 :
#樱花
#樱花